Fix SLP def type when computing masks (PR85853)
[gcc.git] / gcc / ChangeLog
1 2018-05-23 Richard Sandiford <richard.sandiford@linaro.org>
2
3 PR tree-optimization/85853
4 * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
5 the handling of the root of the node to...
6 (vect_slp_analyze_node_operations_1): ...this new function,
7 and run the whole thing with the child nodes' def types
8 set according to their SLP node's def type.
9
10 2018-05-23 Richard Biener <rguenther@suse.de>
11
12 PR middle-end/85874
13 * tree-data-ref.c (create_runtime_alias_checks): Defer
14 and ignore overflow warnings.
15
16 2018-05-23 Yury Gribov <tetra2005@gmail.com>
17
18 PR tree-optimization/85822
19 * tree-vrp.c (is_masked_range_test): Fix handling of negative
20 constants.
21
22 2018-05-23 Richard Biener <rguenther@suse.de>
23
24 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
25 memset constants via native_interpret_expr.
26
27 2018-05-22 H.J. Lu <hongjiu.lu@intel.com>
28
29 PR target/85345
30 * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
31 attribute.
32 (cgraph_node::create_alias): Likewise.
33 (cgraph_node::get_availability): Check ifunc_resolver instead
34 of looking up ifunc attribute.
35 * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
36 * varasm.c (do_assemble_alias): Likewise.
37 (assemble_alias): Likewise.
38 (default_binds_local_p_3): Likewise.
39 * cgraph.h (cgraph_node): Add ifunc_resolver.
40 (cgraph_node::only_called_directly_or_aliased_p): Return false
41 for IFUNC resolver.
42 * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
43 attribute.
44 * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
45 is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
46 (symtab_node::binds_to_current_def_p): Check ifunc_resolver
47 instead of looking up ifunc attribute.
48
49 2018-05-22 Luis Machado <luis.machado@linaro.org>
50
51 * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
52
53 2018-05-22 Martin Sebor <msebor@redhat.com>
54
55 PR middle-end/85359
56 * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
57 only when expasion succeeds.
58 (expand_builtin_strcmp): Same.
59 (expand_builtin_strncmp): Same.
60
61 2018-05-22 Martin Sebor <msebor@redhat.com>
62
63 * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
64
65 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
66 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
67
68 * config/aarch64/aarch64-ldpstp.md: Replace uses of
69 aarch64_mem_pair_operand with memory_operand and delete operand swapping
70 code.
71 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
72 Add check for legitimate_address.
73 (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
74 (aarch64_swap_ldrstr_operands): New.
75 * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
76 Define prototype.
77
78 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
79 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
80
81 * config/aarch64/aarch64.md: New patterns to generate stp
82 and ldp.
83 (store_pair_sw, store_pair_dw): New patterns to generate stp for
84 single words and double words.
85 (load_pair_sw, load_pair_dw): Likewise.
86 (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
87 Delete.
88 (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
89 Delete.
90 * config/aarch64/aarch64-ldpstp.md: Modify peephole
91 for different mode ldpstp and add peephole for merged zero stores.
92 Likewise for loads.
93 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
94 Add size check.
95 (aarch64_gen_store_pair): Rename calls to match new patterns.
96 (aarch64_gen_load_pair): Rename calls to match new patterns.
97 * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
98 (load_pair<DREG:mode><DREG2:mode>): ... This.
99 (store_pair<mode>): Rename to...
100 (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
101 * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
102 New mode iterators.
103 (V_INT_EQUIV): Handle SImode.
104 * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
105 New predicate.
106
107 2018-05-22 Martin Sebor <msebor@redhat.com>
108
109 PR c/85623
110 * calls.c (maybe_warn_nonstring_arg): Use string length to set
111 or ajust the presumed bound on an operation to avoid unnecessary
112 warnings.
113
114 2018-05-22 Martin Sebor <msebor@redhat.com>
115
116 PR tree-optimization/85826
117 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
118 assuming that a DECL necesarily has a constant size.
119
120 2018-05-22 Richard Sandiford <richard.sandiford@linaro.org>
121
122 PR middle-end/85862
123 * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
124
125 2018-05-22 Richard Biener <rguenther@suse.de>
126
127 PR tree-optimization/85834
128 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
129 non-constant and non-zero memset arguments.
130
131 2018-05-22 Martin Liska <mliska@suse.cz>
132
133 PR ipa/85607
134 * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
135
136 2018-05-22 Richard Biener <rguenther@suse.de>
137
138 PR tree-optimization/85863
139 * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
140 comparisons when vectype is specified.
141 (vectorizable_condition): Do not specify vectype for
142 vect_is_simple_cond when SLP vectorizing.
143
144 2018-05-21 Michael Meissner <meissner@linux.ibm.com>
145
146 PR target/85657
147 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
148 define __ibm128 as long double.
149 * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
150 as a distinct type when IEEE 128-bit support is enabled.
151 (init_float128_ieee): Fix up conversions between IFmode and IEEE
152 128-bit types to use the correct functions.
153 (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
154 convert between 128-bit floating point types that have different
155 modes but the same representation, instead of using gen_lowpart to
156 makean alias.
157 * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
158 KFmode.
159 (IFKF_reg): New attributes to give the register constraints for
160 IFmode and KFmode.
161 (extend<mode>tf2_internal): New insns to mark an explicit
162 conversion between 128-bit floating point types that have a
163 different mode but share the same representation.
164
165 2018-05-21 Richard Sandiford <richard.sandiford@linaro.org>
166
167 PR tree-optimization/85814
168 * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
169 a null return from get_strinfo when unsharing the next
170 strinfo in the chain.
171
172 2018-05-21 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
173
174 PR gcc/84923
175 * varasm.c (weak_finish): Clean up weak_decls.
176
177 2018-05-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
178
179 * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
180 UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
181 UNSPEC_UADALP values.
182 * config/aarch64/iterators.md (ABAL): New int iterator.
183 (ABDL2): Likewise.
184 (ADALP): Likewise.
185 (sur): Add mappings for the above.
186 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
187 New define_insn.
188 (aarch64_<sur>abal<mode>_4): Likewise.
189 (aarch64_<sur>adalp<mode>_3): Likewise.
190 (<sur>sadv16qi): New define_expand.
191
192 2018-05-21 Alexander Nesterovskiy <alexander.nesterovskiy@intel.com>
193
194 * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
195 (*movdf_internal): Ditto.
196 (*rcpsf2_sse): Ditto.
197 (*rsqrtsf2_sse): Ditto.
198 (*sqrt<mode>2_sse): Ditto.
199
200 2018-05-21 Tamar Christina <tamar.christina@arm.com>
201
202 * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
203 eor3q<mode>4.
204 (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
205 * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
206 veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
207 vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
208 vbcaxq_s64): New.
209 * config/aarch64/arm_neon.h: Likewise.
210 * config/aarch64/iterators.md (VQ_I): New.
211
212 2018-05-21 Alexey Brodkin <abrodkin@synopsys.com>
213
214 * config.gcc: Add arc/t-multilib-linux to tmake_file for
215 arc*-*-linux*.
216 * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
217 MULTILIB_DIRNAMES
218
219 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
220
221 * config/nds32/constraints.md (S): New constraint.
222 * config/nds32/nds32.md (call_internal): Use constraint S.
223 (call_value_internal): Likewise.
224 (sibcall_internal): Likewise.
225 (sibcall_value_internal): Likewise.
226
227 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
228 Chung-Ju Wu <jasonwucj@gmail.com>
229
230 * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
231 into consideration.
232
233 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
234 Chung-Ju Wu <jasonwucj@gmail.com>
235
236 * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
237 (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
238 (nds32_rtx_costs_impl): Simplify.
239 (nds32_address_cost_impl): Simplify.
240 (nds32_init_rtx_costs): New function.
241 (nds32_rtx_costs_speed_prefer): Likewise.
242 (nds32_rtx_costs_size_prefer): Likewise.
243 (nds32_address_cost_speed_prefer): Likewise.
244 (nds32_address_cost_speed_fwprop): Likewise.
245 (nds32_address_cost_size_prefer): Likewise.
246 * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
247 * config/nds32/nds32.c (nds32_option_override): Use
248 nds32_init_rtx_costs function.
249
250 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
251
252 * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
253 * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
254 (TARGET_PIPELINE_N8): Likewise.
255 (TARGET_PIPELINE_N10): Likewise.
256 (TARGET_PIPELINE_N13): Likewise.
257 (TARGET_PIPELINE_GRAYWOLF): Likewise.
258
259 2018-05-19 Monk Chiang <sh.chiang04@gmail.com>
260
261 * config/nds32/nds32-fpu.md: Update copyright year.
262
263 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
264
265 * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
266
267 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
268
269 * config/nds32/nds32.c
270 (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
271 * config/nds32/nds32.opt (minline-asm-r15): New option.
272
273 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
274
275 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
276 MASK_HW_ABS.
277 * config/nds32/nds32.md (abssi2): New pattern.
278
279 2018-05-19 Uros Bizjak <ubizjak@gmail.com>
280
281 * config/i386/i386.md (rex64namesuffix): New mode attribute.
282 * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
283 Merge insn pattern from sse_cvtsi2ss<round_name> and
284 sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
285 (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
286 from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
287 using SWI48 mode iterator.
288 (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
289 sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
290 (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
291 pattern from sse_cvttss2si<round_saeonly_name>
292 and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
293 (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
294 from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
295 using SWI48 mode iterator.
296 (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
297 insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
298 avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
299 (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
300 from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
301 using SWI48 mode iterator.
302 (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
303 insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
304 avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
305 (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
306 sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
307 SWI48 mode iterator.
308 (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
309 sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
310 (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
311 pattern from sse_cvttsd2si<round_saeonly_name>
312 and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
313
314 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
315
316 * config/nds32/nds32-md-auxiliary.c
317 (nds32_valid_smw_lwm_base_p): Refine.
318 (nds32_output_smw_single_word): Refine.
319 (nds32_output_smw_double_word): New.
320 * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
321
322 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
323
324 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
325 (nds32_output_stack_pop): Refine.
326 (nds32_expand_unaligned_load): Refine.
327 (nds32_expand_unaligned_store): Refine.
328
329 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
330 Chung-Ju Wu <jasonwucj@gmail.com>
331
332 * config/nds32/constants.md: Add TP_REGNUM constant.
333 (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
334 UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
335 UNSPEC_ADD32.
336 * config/nds32/nds32-doubleword.md: Consider flag_pic.
337 * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
338 * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
339 * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
340 and PIC code generation.
341 * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
342 code generation.
343 * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
344 optimization.
345 * config/nds32/nds32.md: Support TLS and PIC.
346 * config/nds32/nds32.c: Support TLS and PIC.
347 * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
348 * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
349 predicate.
350
351 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
352
353 * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
354 mode with E_ prefix.
355
356 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
357 Chung-Ju Wu <jasonwucj@gmail.com>
358
359 * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
360 * config/nds32/nds32-md-auxiliary.c
361 (symbolic_reference_mentioned_p): New.
362 (nds32_legitimize_ict_address): New.
363 (nds32_expand_ict_move): New.
364 (nds32_indirect_call_referenced_p): New.
365 (nds32_symbol_binds_local_p): Delete.
366 (nds32_long_call_p): Modify.
367 * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
368 * config/nds32/nds32-protos.h
369 (symbolic_reference_mentioned_p): Declare.
370 (nds32_legitimize_ict_address): Declare.
371 (nds32_expand_ict_move): Declare.
372 (nds32_indirect_call_referenced_p): Declare.
373 * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
374 (nds32_relax_group): Use nds32_ict_const_p as condition.
375 * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
376 (nds32_asm_file_start): Output ict_model directive in asm code.
377 (nds32_legitimate_address_p): Consider indirect call.
378 (nds32_print_operand): Consider indirect call.
379 (nds32_print_operand_address): Consider indirect call.
380 (nds32_insert_attributes): Handle "indirect_call" attribute.
381 (TARGET_LEGITIMATE_ADDRESS_P): Define.
382 (TARGET_LEGITIMATE_CONSTANT_P): Define.
383 (TARGET_CANNOT_FORCE_CONST_MEM): Define.
384 (TARGET_DELEGITIMIZE_ADDRESS): Define.
385 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
386 * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
387 (TARGET_ICT_MODEL_SMALL): Define.
388 (TARGET_ICT_MODEL_LARGE): Define.
389 * config/nds32/nds32.md (movsi): Consider ict model.
390 (call, call_value): Consider ict model.
391 (sibcall, sibcall_value): Consider ict model.
392 * config/nds32/nds32.opt (mict-model): New option.
393 * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
394 model.
395
396 2018-05-18 Kito Cheng <kito.cheng@gmail.com>
397 Monk Chiang <sh.chiang04@gmail.com>
398 Jim Wilson <jimw@sifive.com>
399
400 * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
401 Add support to parse rv32e*. Clear MASK_RVE for rv32i and rv64i.
402 * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
403 * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
404 __riscv_32e when TARGET_RVE. Handle ABI_ILP32E as soft-float ABI.
405 * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
406 * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
407 compute save_libcall_adjustment properly.
408 (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
409 (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
410 * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
411 (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
412 (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
413 (ABI_SPEC): Handle mabi=ilp32e.
414 * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
415 (RVE): Add RVE mask.
416 * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
417 <-march>: Add rv32e as an example.
418
419 2018-05-18 Marc Glisse <marc.glisse@inria.fr>
420
421 PR c++/82899
422 * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
423 (intra_create_variable_infos): Handle C++ constructors.
424
425 2018-05-18 Martin Liska <mliska@suse.cz>
426
427 * passes.def: Remove a redundant pass.
428
429 2018-05-18 Eric Botcazou <ebotcazou@adacore.com>
430
431 PR bootstrap/85838
432 * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
433
434 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
435
436 * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
437 (ARMv4): Update.
438 (ARMv2, ARMv3, ARMv3m): Delete fgroups.
439 (ARMv6m): Update.
440 (armv2, armv2a, armv3, armv3m): Delete architectures.
441 (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
442 arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
443 arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
444 Delete cpus.
445 * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
446 (*mulsidi3adddi): Likewise.
447 (mulsidi3): Likewise.
448 (*mulsidi3_nov6): Likewise.
449 (umulsidi3): Likewise.
450 (umulsidi3_nov6): Likewise.
451 (umaddsidi4): Likewise.
452 (*umulsidi3adddi): Likewise.
453 (smulsi3_highpart): Likewise.
454 (*smulsi3_highpart_nov6): Likewise.
455 (umulsi3_highpart): Likewise.
456 (*umulsi3_highpart_nov6): Likewise.
457 * config/arm/arm.h (arm_arch3m): Delete.
458 * config/arm/arm.c (arm_arch3m): Delete.
459 (arm_option_override_internal): Update armv3-related comment.
460 (arm_configure_build_target): Delete use of isa_bit_mode32.
461 (arm_option_reconfigure_globals): Delete set of arm_ach3m.
462 (arm_rtx_costs_internal): Delete check of arm_arch3m.
463 * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
464 (mulsa3): Likewise.
465 (mulusa3): Likewise.
466 * config/arm/arm-protos.h (arm_arch3m): Delete.
467 * config/arm/arm-tables.opt: Regenerate.
468 * config/arm/arm-tune.md: Likewise.
469 * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
470 deleted architectures.
471
472 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
473
474 * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
475 (armv5t, armv5te): New features.
476 (ARMv5, ARMv5e): Delete fgroups.
477 (ARMv5t, ARMv5te): Adjust for above changes.
478 (ARMv6m): Likewise.
479 (armv5, armv5e): Delete arches.
480 * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
481 arm_arch5.
482 (*call_reg_arm): Likewise.
483 (*call_value_reg_armv5): Likewise.
484 (*call_value_reg_arm): Likewise.
485 (*call_symbol): Likewise.
486 (*call_value_symbol): Likewise.
487 (*sibcall_insn): Likewise.
488 (*sibcall_value_insn): Likewise.
489 (clzsi2): Likewise.
490 (prefetch): Likewise.
491 (define_split and define_peephole2 dependent on arm_arch5):
492 Likewise.
493 * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
494 arm_arch5e.
495 (TARGET_ARM_QBIT): Likewise.
496 (TARGET_DSP_MULTIPLY): Likewise.
497 (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
498 (arm_arch5, arm_arch5e): Delete.
499 (arm_arch5t, arm_arch5te): Declare.
500 * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
501 (arm_arch5t): Declare.
502 (arm_option_reconfigure_globals): Update for the above.
503 (arm_options_perform_arch_sanity_checks): Update comment, replace
504 use of arm_arch5 with arm_arch5t.
505 (use_return_insn): Likewise.
506 (arm_emit_call_insn): Likewise.
507 (output_return_instruction): Likewise.
508 (arm_final_prescan_insn): Likewise.
509 (arm_coproc_builtin_available): Likewise.
510 * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
511 arm_arch5e with arm_arch5t and arm_arch5te.
512 * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
513 (arm_arch5t, arm_arch5te): Declare.
514 * config/arm/arm-tables.opt: Regenerate.
515 * config/arm/t-arm-elf: Remove references to armv5, armv5e.
516 * config/arm/t-multilib: Likewise.
517 * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
518 instead of arm_arch5.
519 (*call_reg_thumb1): Likewise.
520 (*call_value_reg_thumb1_v5): Likewise.
521 (*call_value_reg_thumb1): Likewise.
522 * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
523 unreachable path.
524 * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
525
526 2018-05-18 Martin Liska <mliska@suse.cz>
527
528 PR gcov-profile/84846
529 * doc/gcov.texi: Document -t option of gcov tool.
530
531 2018-05-18 Martin Liska <mliska@suse.cz>
532
533 PR gcov-profile/84846
534 * gcov.c (print_usage): Add new -t option.
535 (process_args): Handle the option.
536 (generate_results): Use stdout as output when requested by
537 the option.
538
539 2018-05-18 Martin Liska <mliska@suse.cz>
540
541 PR gcov-profile/84846
542 * coverage.c (coverage_init): Write PWD to .gcno file.
543 * doc/gcov.texi: Document how working directory is printed.
544 * gcov-dump.c (dump_gcov_file): Print PWD.
545 * gcov.c (output_intermediate_file): Likewise.
546 (read_graph_file): Read PWD string.
547 (output_lines): Print PWD.
548
549 2018-05-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
550
551 PR middle-end/85817
552 * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
553 for retval and return false if all args to phi are zero.
554
555 2018-05-18 Richard Biener <rguenther@suse.de>
556
557 * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
558 method.
559 (evrp_dom_walker::before_dom_children): Call it.
560
561 2018-05-18 Richard Biener <rguenther@suse.de>
562
563 * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
564 results when processing array refs with variable index.
565
566 2018-05-18 Toon Moene <toon@moene.org>
567
568 * doc/invoke.texi: Move -floop-unroll-and-jam documentation
569 directly after that of -floop-interchange. Indicate that both
570 options are enabled by default when specifying -O3.
571
572 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
573
574 * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
575 iterator. Delete separate integer-mode vec_set<mode> expander.
576 (aarch64_simd_vec_setv2di): Delete.
577 (vec_setv2di): Delete.
578 (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
579 Use VALL_F16 mode iterator. Add LD1 alternative and use vwcore for
580 the "w, r" alternative.
581
582 2018-05-18 Martin Liska <mliska@suse.cz>
583
584 * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
585 * tree-pass.h (make_pass_lower_switch_O0): New function.
586 * tree-switch-conversion.c (node_has_low_bound): Remove.
587 (node_has_high_bound): Likewise.
588 (node_is_bounded): Likewise.
589 (class pass_lower_switch): Make it a template type and create
590 two instances.
591 (pass_lower_switch::execute): Add template argument.
592 (make_pass_lower_switch): New function.
593 (make_pass_lower_switch_O0): New function.
594 (do_jump_if_equal): Remove.
595 (emit_case_nodes): Simplify to just handle all 3 cases and leave
596 all the hard work to tree optimization passes.
597
598 2018-05-18 Martin Liska <mliska@suse.cz>
599
600 * dbgcnt.c (limit_low): Renamed from limit.
601 (limit_high): New variable.
602 (dbg_cnt_is_enabled): Check for upper limit.
603 (dbg_cnt): Adjust dumping.
604 (dbg_cnt_set_limit_by_index): Add new argument for high
605 value.
606 (dbg_cnt_set_limit_by_name): Likewise.
607 (dbg_cnt_process_single_pair): Parse new format.
608 (dbg_cnt_process_opt): Use strtok.
609 (dbg_cnt_list_all_counters): Remove 'value' and add
610 'limit_high'.
611 * doc/invoke.texi: Document changes.
612
613 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
614
615 * doc/sourcebuild.texi (scalar_all_fma): Document.
616 * tree.def (FMA_EXPR): Delete.
617 * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
618 * internal-fn.c (ternary_direct): New macro.
619 (expand_ternary_optab_fn): Likewise.
620 (direct_ternary_optab_supported_p): Likewise.
621 * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
622 * builtins.c (fold_builtin_fma): Delete.
623 (fold_builtin_3): Don't call it.
624 * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
625 * expr.c (expand_expr_real_2): Likewise.
626 * fold-const.c (operand_equal_p): Likewise.
627 (fold_ternary_loc): Likewise.
628 * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
629 * gimple.c (DEFTREECODE): Likewise.
630 * gimplify.c (gimplify_expr): Likewise.
631 * optabs-tree.c (optab_for_tree_code): Likewise.
632 * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
633 * tree-eh.c (operation_could_trap_p): Likewise.
634 (stmt_could_throw_1_p): Likewise.
635 * tree-inline.c (estimate_operator_cost): Likewise.
636 * tree-pretty-print.c (dump_generic_node): Likewise.
637 (op_code_prio): Likewise.
638 * tree-ssa-loop-im.c (stmt_cost): Likewise.
639 * tree-ssa-operands.c (get_expr_operands): Likewise.
640 * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
641 * fold-const-call.h (fold_fma): Delete.
642 * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
643 CFN_FNMA and CFN_FNMS.
644 (fold_fma): Delete.
645 * genmatch.c (combined_fn): New enum.
646 (commutative_ternary_tree_code): Remove FMA_EXPR handling.
647 (commutative_op): New function.
648 (commutate): Use it. Handle more than 2 operands.
649 (dt_operand::gen_gimple_expr): Use commutative_op.
650 (parser::parse_expr): Allow :c to be used with non-binary
651 operators if the commutative operand is known.
652 * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
653 CFN_FMS, CFN_FNMA and CFN_FNMS.
654 (backprop::process_assign_use): Remove FMA_EXPR handling.
655 * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
656 (gen_hsa_fma): New function.
657 (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
658 IFN_FNMA and IFN_FNMS.
659 * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
660 * gimple-fold.h (follow_all_ssa_edges): Declare.
661 * gimple-fold.c (follow_all_ssa_edges): New function.
662 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
663 gimple_build interface and use follow_all_ssa_edges to fold the result.
664 (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
665 instead of checking for optabs directly.
666 * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
667 rather than FMA_EXPRs.
668 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
669 call to IFN_FMA instead of an FMA_EXPR.
670
671 2018-05-17 Jim Wilson <jimw@sifive.com>
672
673 * expr.c (do_tablejump): When converting index to Pmode, if we have a
674 sign extended promoted subreg, and the range does not have the sign bit
675 set, then do a sign extend.
676
677 * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
678 test, check for sign extended subreg and/or constant operands, and
679 do a sign extend in that case.
680
681 2018-05-17 Steve Ellcey <sellcey@cavium.com>
682
683 * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
684 (thunderx2t99_multiple): Delete psuedo-units from used cpus.
685 Add untyped.
686 (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
687 Change logics_shift_reg to logics_shift_imm.
688 (thunderx2t99_fp_loadpair_basic): Delete.
689 (thunderx2t99_fp_storepair_basic): Delete.
690 (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
691 (thunderx2t99_asimd_polynomial): Delete.
692 (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
693 and neon_fp_mul_d_scalar_q.
694 (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
695 (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
696 (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
697 (thunderx2t99_asimd_lut): Add missing tbl types.
698 (thunderx2t99_asimd_ext): Delete.
699 (thunderx2t99_asimd_load1_1_mult): Delete.
700 (thunderx2t99_asimd_load1_2_mult): Delete.
701 (thunderx2t99_asimd_load1_ldp): New.
702 (thunderx2t99_asimd_load1): New.
703 (thunderx2t99_asimd_load2): Add missing *load2* types.
704 (thunderx2t99_asimd_load3): New.
705 (thunderx2t99_asimd_load4): New.
706 (thunderx2t99_asimd_store1_1_mult): Delete.
707 (thunderx2t99_asimd_store1_2_mult): Delete.
708 (thunderx2t99_asimd_store2_mult): Delete.
709 (thunderx2t99_asimd_store2_onelane): Delete.
710 (thunderx2t99_asimd_store_stp): New.
711 (thunderx2t99_asimd_store1): New.
712 (thunderx2t99_asimd_store2): New.
713 (thunderx2t99_asimd_store3): New.
714 (thunderx2t99_asimd_store4): New.
715
716 2018-05-17 Jerome Lambourg <lambourg@adacore.com>
717
718 * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
719 #include <stdint.h>. Replace intptr_t with __INTPTR_TYPE__.
720
721 2018-05-17 Pat Haugen <pthaugen@us.ibm.com>
722 Segher Boessenkool <segher@kernel.crashing.org>
723
724 PR target/85698
725 * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
726 operand.
727
728 2018-05-17 Richard Biener <rguenther@suse.de>
729
730 * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
731 for pruning loop and prune defs feeding only already visited PHIs.
732
733 2018-05-17 Richard Biener <rguenther@suse.de>
734
735 * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
736
737 2018-05-17 Bin Cheng <bin.cheng@arm.com>
738 Richard Biener <rguenther@suse.de>
739
740 PR tree-optimization/85793
741 * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
742 for VMAT_ELEMENTWISE.
743
744 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
745
746 * internal-fn.h (lookup_internal_fn): Declare
747 * internal-fn.c (lookup_internal_fn): New function.
748 * gimple.c (gimple_build_call_from_tree): Handle calls to
749 internal functions.
750 * gimple-pretty-print.c (dump_gimple_call): Print "." before
751 internal function names.
752 * tree-pretty-print.c (dump_generic_node): Likewise.
753 * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
754
755 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
756
757 * gimple-fold.h (gimple_build): Make the function forms take
758 combined_fn rather than built_in_function.
759 (gimple_simplify): Likewise.
760 * gimple-match-head.c (gimple_simplify): Likewise.
761 * gimple-fold.c (gimple_build): Likewise.
762 * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
763 rather than gimple_build_call_internal.
764 (get_initial_defs_for_reduction): Likewise.
765 (vect_create_epilog_for_reduction): Likewise.
766 (vectorizable_live_operation): Likewise.
767
768 2018-05-17 Martin Liska <mliska@suse.cz>
769
770 * gimple-ssa-sprintf.c (format_directive): Do not use
771 space in between 'G_' and '('.
772
773 2018-05-17 Jakub Jelinek <jakub@redhat.com>
774
775 PR target/85323
776 * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
777 even if the mask is not all ones.
778
779 PR target/85323
780 * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
781 vector.
782 (ix86_gimple_fold_builtin): Likewise.
783
784 PR target/85323
785 * config/i386/i386.c: Include tree-vector-builder.h.
786 (ix86_vector_shift_count): New function.
787 (ix86_fold_builtin): Fold shift builtins by scalar count.
788 (ix86_gimple_fold_builtin): Likewise.
789
790 * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
791 _mm512_setzero): New intrinsics.
792
793 2018-05-17 James Greenhalgh <james.greenhalgh@arm.com>
794 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
795
796 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
797 code generation for cases where splatting a value is not useful.
798 * simplify-rtx.c (simplify_ternary_operation): Simplify
799 vec_merge across a vec_duplicate and a paradoxical subreg forming a vector
800 mode to a vec_concat.
801
802 2018-05-17 Olga Makhotina <olga.makhotina@intel.com>
803
804 * config.gcc: Support "goldmont-plus".
805 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
806 "goldmont-plus".
807 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
808 PROCESSOR_GOLDMONT_PLUS.
809 * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
810 (processor_target_table): Add "goldmont-plus".
811 (PTA_GOLDMONT_PLUS): Define.
812 (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
813 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
814 (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
815 (fold_builtin_cpu): Add "goldmont-plus".
816 (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
817 (ix86_option_override_internal): Add "goldmont-plus".
818 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
819 (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
820 * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
821 * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
822
823 2018-05-17 Richard Biener <rguenther@suse.de>
824
825 PR tree-optimization/85757
826 * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
827 remove defs that only feed that PHI from further processing.
828
829 2018-05-16 Jim Wilson <jimw@sifive.com>
830
831 * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
832 asterisk to name.
833 (<optab>di3_mask, <optab>di3_mask_1): Likewise.
834
835 2018-05-16 Mark Wielaard <mark@klomp.org>
836
837 * dwarf2out.c (count_index_strings): New function.
838 (output_indirect_strings): Call count_index_strings and generate
839 header for dwarf_version >= 5.
840
841 2018-05-16 Mark Wielaard <mark@klomp.org>
842
843 * dwarf2out.c (dwarf_FORM): New function.
844 (set_indirect_string): Use dwarf_FORM.
845 (reset_indirect_string): Likewise.
846 (size_of_die): Likewise.
847 (value_format): Likewise.
848 (output_die): Likewise.
849 (add_skeleton_AT_string): Likewise.
850 (output_macinfo_op): Likewise.
851 (index_string): Likewise.
852 (output_index_string_offset): Likewise.
853 (output_index_string): Likewise.
854 (count_index_strings): Likewise.
855
856 2018-05-16 Carl Love <cel@us.ibm.com>
857
858 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
859 dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
860
861 2018-05-16 Martin Jambor <mjambor@suse.cz>
862
863 * ipa-prop.c (ipa_free_all_edge_args): Remove.
864 * ipa-prop.h (ipa_free_all_edge_args): Likewise.
865
866 2018-05-16 Wilco Dijkstra <wdijkstr@arm.com>
867
868 * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
869 (fnma<mode>4): Likewise.
870 (fms<mode>4): Likewise.
871 (fnms<mode>4): Likewise.
872 (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
873 (aarch64_fnma<mode>4): Likewise.
874 (aarch64_fms<mode>4): Likewise.
875 (aarch64_fnms<mode>4): Likewise.
876 (aarch64_fnmadd<mode>4): Likewise.
877
878 2018-05-16 Jason Merrill <jason@redhat.com>
879
880 * tree.c (warn_deprecated_use): Return bool. Simplify logic.
881
882 2018-05-16 Richard Biener <rguenther@suse.de>
883
884 * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
885 (dump_stmt_cost): Declare.
886 (add_stmt_cost): Dump cost we add.
887 (add_stmt_costs): New function.
888 (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
889 No longer exported.
890 (vect_analyze_stmt): Adjust prototype.
891 (vectorizable_condition): Likewise.
892 (vectorizable_live_operation): Likewise.
893 (vectorizable_reduction): Likewise.
894 (vectorizable_induction): Likewise.
895 * tree-vect-loop.c (vect_analyze_loop_operations): Create local
896 cost vector to pass to vectorizable_ and record afterwards.
897 (vect_model_reduction_cost): Take cost vector argument and adjust.
898 (vect_model_induction_cost): Likewise.
899 (vectorizable_reduction): Likewise.
900 (vectorizable_induction): Likewise.
901 (vectorizable_live_operation): Likewise.
902 * tree-vect-slp.c (vect_create_new_slp_node): Initialize
903 SLP_TREE_NUMBER_OF_VEC_STMTS.
904 (vect_analyze_slp_cost_1): Remove.
905 (vect_analyze_slp_cost): Likewise.
906 (vect_slp_analyze_node_operations): Take visited args and
907 a target cost vector. Avoid processing already visited stmt sets.
908 (vect_slp_analyze_operations): Use a local cost vector to gather
909 costs and register those of non-discarded instances.
910 (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
911 (vect_schedule_slp_instance): Remove copying of
912 SLP_TREE_NUMBER_OF_VEC_STMTS. Instead assert that it is not
913 zero.
914 * tree-vect-stmts.c (record_stmt_cost): Remove path directly
915 adding cost. Record cost entry location.
916 (vect_prologue_cost_for_slp_op): Function to compute cost of
917 a constant or invariant generated for SLP vect in the prologue,
918 split out from vect_analyze_slp_cost_1.
919 (vect_model_simple_cost): Make static. Adjust for SLP costing.
920 (vect_model_promotion_demotion_cost): Likewise.
921 (vect_model_store_cost): Likewise, make static.
922 (vect_model_load_cost): Likewise.
923 (vectorizable_bswap): Add cost vector arg and adjust.
924 (vectorizable_call): Likewise.
925 (vectorizable_simd_clone_call): Likewise.
926 (vectorizable_conversion): Likewise.
927 (vectorizable_assignment): Likewise.
928 (vectorizable_shift): Likewise.
929 (vectorizable_operation): Likewise.
930 (vectorizable_store): Likewise.
931 (vectorizable_load): Likewise.
932 (vectorizable_condition): Likewise.
933 (vectorizable_comparison): Likewise.
934 (can_vectorize_live_stmts): Likewise.
935 (vect_analyze_stmt): Likewise.
936 (vect_transform_stmt): Adjust calls to vectorizable_*.
937 * tree-vectorizer.c: Include gimple-pretty-print.h.
938 (dump_stmt_cost): New function.
939
940 2018-05-16 Richard Biener <rguenther@suse.de>
941
942 * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
943 * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
944 * tree-ssa-dse.c: Include tree-ssa-loop.h.
945 (check_name): New callback.
946 (dse_classify_store): Track cycles via a visited bitmap of PHI
947 defs and simplify handling of in-loop and across loop dead stores
948 and properly fail for loop-variant refs. Handle byte-tracking with
949 multiple defs. Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
950 limiting the walk.
951
952 2018-05-16 Richard Sandiford <richard.sandiford@linaro.org>
953
954 * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
955 (vect_get_mask_type_for_stmt): Likewise.
956 * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
957 split out from...
958 (vect_build_slp_tree_1): ...here. Use vect_get_vector_types_for_stmt
959 to determine the statement's vector type and the vector type that
960 should be used for calculating nunits. Deal with cases in which
961 the type has to be deferred.
962 (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
963 and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
964 * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
965 (vect_determine_vf_for_stmt): New functions, split out from...
966 (vect_determine_vectorization_factor): ...here.
967 * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
968 (vect_get_mask_type_for_stmt): New functions, split out from
969 vect_determine_vectorization_factor.
970
971 2018-05-16 Richard Biener <rguenther@suse.de>
972
973 * tree-cfg.c (verify_gimple_assign_ternary): Properly
974 verify the [VEC_]COND_EXPR embedded comparison.
975
976 2018-05-15 Martin Sebor <msebor@redhat.com>
977
978 PR tree-optimization/85753
979 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
980 RECORD_TYPE in addition to ARRAY_TYPE.
981
982 2018-05-15 Martin Sebor <msebor@redhat.com>
983
984 PR middle-end/85643
985 * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
986
987 2018-05-15 Richard Biener <rguenther@suse.de>
988
989 * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
990 add by_clobber_p one. Change algorithm to collect all defs
991 representing uses we need to walk and try reducing them to
992 a single one before failing.
993 (dse_dom_walker::dse_optimize_stmt): Adjust.
994
995 2018-05-13 Mark Wielaard <mark@klomp.org>
996
997 * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
998 (size_of_loc_descr): Likewise.
999 (output_loc_operands): Likewise.
1000 (output_loc_operands_raw): Likewise.
1001 (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
1002 (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
1003 (hash_loc_operands): Likewise.
1004 (compare_loc_operands): Likewise.
1005
1006 2018-05-14 Mark Wielaard <mark@klomp.org>
1007
1008 * dwarf2out.c (count_index_addrs): New function.
1009 (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
1010
1011 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1012
1013 PR tree-optimization/83648
1014 * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
1015 return value as malloc candidate.
1016
1017 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1018
1019 PR ipa/85734
1020 * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param
1021 as true in call to suggest_attribute.
1022
1023 2018-05-14 Segher Boessenkool <segher@kernel.crashing.org>
1024
1025 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
1026 -mreadonly-in-sdata.
1027
1028 2018-05-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1029
1030 * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
1031 New pattern.
1032 (aarch64_crypto_aesd_fused): Likewise.
1033
1034 2018-05-14 Wilco Dijkstra <wdijkstr@arm.com>
1035
1036 * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
1037 (movsi_aarch64): Likewise.
1038 (load_pairsi): Likewise.
1039 (load_pairdi): Likewise.
1040 (store_pairsi): Likewise.
1041 (store_pairdi): Likewise.
1042 (load_pairsf): Likewise.
1043 (load_pairdf): Likewise.
1044 (store_pairsf): Likewise.
1045 (store_pairdf): Likewise.
1046 (zero_extend): Likewise.
1047 (trunc): Swap alternatives.
1048 (fcvt_target): Add '?' to prefer w over r.
1049
1050 2018-05-14 Jakub Jelinek <jakub@redhat.com>
1051
1052 PR target/85756
1053 * config/i386/i386.md: Disallow non-commutative arithmetics in
1054 last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
1055 optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS
1056 in the peephole2 before it.
1057
1058 2018-05-14 Sebastian Peryt <sebastian.peryt@intel.com>
1059
1060 * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
1061 OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
1062 (ix86_handle_option): Handle -mcldemote.
1063 * config.gcc: New header.
1064 * config/i386/cldemoteintrin.h: New file.
1065 * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
1066 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
1067 -mcldemote.
1068 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1069 OPTION_MASK_ISA_CLDEMOTE.
1070 * config/i386/i386.c (ix86_target_string): Add -mcldemote.
1071 (ix86_valid_target_attribute_inner_p): Ditto.
1072 (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
1073 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
1074 (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
1075 * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
1076 * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
1077 (cldemote): New.
1078 * config/i386/i386.opt: Add -mcldemote.
1079 * config/i386/x86intrin.h: New header.
1080 * doc/invoke.texi: Add -mcldemote.
1081
1082 2018-05-14 Richard Biener <rguenther@suse.de>
1083
1084 * doc/match-and-simplify.texi: Adjust :s documentation.
1085
1086 2018-05-14 Alexander Monakov <amonakov@ispras.ru>
1087
1088 * sort.cc (REORDER_23): Pass the type for the temporaries instead of
1089 intended memcpy size.
1090 (REORDER_45): Likewise.
1091
1092 2018-05-13 Alexander Monakov <amonakov@ispras.ru>
1093
1094 * sort.cc: New file.
1095 * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
1096 * vec.c (qsort_chk): Use gcc_qsort.
1097 * Makefile.in (OBJS-libcommon): Add sort.o.
1098 (build/sort.o): New target. Use it...
1099 (BUILD_RTL): ... here, and...
1100 (build/gencfn-macros): ... here, and...
1101 (build/genmatch): ... here.
1102
1103 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
1104 Chung-Ju Wu <jasonwucj@gmail.com>
1105
1106 * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
1107 * config/nds32/nds32-graywolf.md: New file.
1108 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
1109 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
1110 pipeline.
1111 * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
1112 * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
1113 * config/nds32/nds32.md (pipeline_model): Add graywolf.
1114 * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
1115 * config/nds32/pipelines.md: Include n15 settings.
1116
1117 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
1118 Chung-Ju Wu <jasonwucj@gmail.com>
1119
1120 * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
1121 * config/nds32/nds32-n13.md: New file.
1122 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
1123 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
1124 pipeline.
1125 * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
1126 * config/nds32/nds32.md (pipeline_model): Add n13.
1127 * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
1128 * config/nds32/pipelines.md: Include n13 settings.
1129
1130 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
1131 Chung-Ju Wu <jasonwucj@gmail.com>
1132
1133 * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
1134 * config/nds32/nds32-n10.md: New file.
1135 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
1136 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
1137 pipeline.
1138 * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
1139 * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
1140 * config/nds32/nds32.md (pipeline_model): Add n10.
1141 * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
1142 * config/nds32/pipelines.md: Include n10 settings.
1143
1144 2018-05-13 Monk Chiang <sh.chiang04@gmail.com>
1145 Kito Cheng <kito.cheng@gmail.com>
1146 Chung-Ju Wu <jasonwucj@gmail.com>
1147
1148 * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
1149 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
1150 Add enum values for DSP extension instructions.
1151 * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
1152 New constraints.
1153 * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
1154 sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
1155 New code iterators.
1156 (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
1157 * config/nds32/nds32-dspext.md: New file for DSP implementation.
1158 * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
1159 * config/nds32/nds32-intrinsic.md: Likewise.
1160 * config/nds32/nds32_intrinsic.h: Likewise.
1161 * config/nds32/nds32-md-auxiliary.c: Likewise.
1162 * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
1163 * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
1164 (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
1165 (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
1166 * config/nds32/nds32-protos.h: New declarations for DSP extension.
1167 * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
1168 TYPE_DMAC in switch statement.
1169 * config/nds32/nds32.c: New checking and implementation for DSP
1170 extension instructions.
1171 * config/nds32/nds32.h: Likewise.
1172 * config/nds32/nds32.md: Likewise.
1173 * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
1174 * config/nds32/predicates.md: Implement new predicates for DSP
1175 extension.
1176
1177 2018-05-11 Michael Meissner <meissner@linux.vnet.ibm.com>
1178
1179 * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
1180 Reformat alternatives and attributes so it is easier to identify
1181 which constraints/attributes go with which instruction.
1182 (mov<mode>_hardfloat32, FMOVE64): Likewise.
1183 (mov<mode>_softfloat32, FMOVE64): Likewise.
1184 (mov<mode>_hardfloat64, FMOVE64): Likewise.
1185 (mov<mode>_softfloat64, FMOVE64): Likewise.
1186
1187 2018-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
1188
1189 * doc/extend.texi (PowerPC Built-in Functions): Rename this
1190 subsection.
1191 (Basic PowerPC Built-in Functions): The new name of the
1192 subsection previously known as "PowerPC Built-in Functions".
1193 (Basic PowerPC Built-in Functions Available on all Configurations):
1194 New subsubsection.
1195 (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
1196 (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
1197 (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
1198 (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
1199
1200 2018-05-11 Martin Jambor <mjambor@suse.cz>
1201
1202 PR ipa/85655
1203 * ipa-cp.c (intersect_with_plats): Check that the lattice contains
1204 single const.
1205
1206 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
1207
1208 PR target/85733
1209 * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
1210
1211 2018-05-11 Sebastian Peryt <sebastian.peryt@intel.com>
1212
1213 * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
1214 OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
1215 (ix86_handle_option): Handle -mwaitpkg.
1216 * config.gcc: New header.
1217 * config/i386/cpuid.h (bit_WAITPKG): New bit.
1218 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
1219 * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
1220 function type.
1221 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1222 OPTION_MASK_ISA_WAITPKG.
1223 * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
1224 (ix86_option_override_internal): Add PTA_WAITPKG.
1225 (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
1226 (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
1227 IX86_BUILTIN_TPAUSE.
1228 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
1229 __builtin_ia32_umwait and __builtin_ia32_tpause.
1230 (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
1231 IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
1232 * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
1233 * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
1234 UNSPECV_TPAUSE): New.
1235 (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
1236 * config/i386/i386.opt: Add -mwaitpkg.
1237 * config/i386/waitpkgintrin.h: New file.
1238 * config/i386/x86intrin.h: New header.
1239 * doc/invoke.texi: Add -mwaitpkg.
1240
1241 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
1242
1243 PR target/85606
1244 * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
1245 equivalent.
1246 (cortex-m0): Use armv6s-m isa.
1247 (cortex-m0plus): Likewise.
1248 (cortex-m1): Likewise.
1249 (cortex-m0.small-multiply): Likewise.
1250 (cortex-m0plus.small-multiply): Likewise.
1251 (cortex-m1.small-multiply): Likewise.
1252
1253 2018-05-11 Allan Sandfeld Jensen <allan.jensen@qt.io>
1254 Jakub Jelinek <jakub@redhat.com>
1255
1256 PR tree-optimization/85692
1257 * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
1258 source permute as well.
1259
1260 2018-05-11 Martin Liska <mliska@suse.cz>
1261
1262 PR sanitizer/85556
1263 * doc/extend.texi: Document LLVM style format for no_sanitize
1264 attribute.
1265
1266 2018-05-10 Michael Meissner <meissner@linux.vnet.ibm.com>
1267
1268 * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
1269 mode_supports_vsx_dform_quad to mode_supports_dq_form.
1270 (mode_supports_vsx_dform_quad): Likewise.
1271 (mode_supports_vmx_dform): Move these functions to be next to the
1272 other mode_supports functions.
1273 (mode_supports_dq_form): Likewise.
1274 (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
1275 mode_supports_dq_form.
1276 (reg_offset_addressing_ok_p): Likewise.
1277 (offsettable_ok_by_alignment): Likewise.
1278 (rs6000_legitimate_offset_address_p): Likewise.
1279 (legitimate_lo_sum_address_p): Likewise.
1280 (rs6000_legitimize_address): Likewise.
1281 (rs6000_legitimize_reload_address): Likewise.
1282 (rs6000_secondary_reload_inner): Likewise.
1283 (rs6000_preferred_reload_class): Likewise.
1284 (rs6000_output_move_128bit): Likewise.
1285
1286 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
1287
1288 * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
1289 Generate SImode target register for null target.
1290 <case IX86_BUILTIN_XGETBV>: Ditto.
1291 <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
1292 * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
1293
1294 2018-05-10 Carl Love <cel@us.ibm.com>
1295
1296 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
1297 dcbtt and dcbtstt if operands[2] is 0.
1298
1299 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
1300
1301 PR target/85693
1302 * config/i386/sse.md (usadv64qi): New expander.
1303
1304 2018-05-10 Segher Boessenkool <segher@kernel.crashing.org>
1305
1306 * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
1307 altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
1308 -maltivec=be support.
1309 (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
1310 vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
1311 vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
1312 vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
1313 vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
1314 vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
1315 altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
1316 altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
1317 altivec_vsumsws): Adjust.
1318 (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
1319 *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
1320 altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
1321 support.
1322 (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
1323 altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
1324 altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
1325 (altivec_lve<VI_char>x): Delete expand.
1326 (*altivec_lve<VI_char>x_internal): Rename to...
1327 (altivec_lve<VI_char>x): ... this.
1328 (altivec_lvxl_<mode>): Delete expand.
1329 (*altivec_lvxl_<mode>_internal): Rename to ...
1330 (altivec_lvxl_<mode>): ... this.
1331 (altivec_stvxl_<mode>): Delete expand.
1332 (*altivec_stvxl_<mode>_internal): Rename to ...
1333 (altivec_stvxl_<mode>): ... this.
1334 (altivec_stve<VI_char>x): Delete expand.
1335 (*altivec_stve<VI_char>x_internal): Rename to ...
1336 (altivec_stve<VI_char>x): ... this.
1337 (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
1338 doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
1339 reduc_plus_scal_<mode>): Adjust.
1340 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
1341 comment.
1342 (rs6000_cpu_cpp_builtins): Adjust.
1343 (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
1344 * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
1345 altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
1346 * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
1347 -maltivec=be support.
1348 (rs6000_split_vec_extract_var): Adjust.
1349 (rs6000_split_v4si_init): Adjust.
1350 (swap_selector_for_mode): Delete.
1351 (altivec_expand_lvx_be, altivec_expand_stvx_be,
1352 altivec_expand_stvex_be): Delete.
1353 (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
1354 -maltivec=be support.
1355 (rs6000_gimple_fold_builtin): Ditto.
1356 (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
1357 Adjust.
1358 * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
1359 (TARGET_DIRECT_MOVE_64BIT): Adjust.
1360 * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
1361 * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
1362 * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
1363 unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
1364 vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
1365 *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
1366 *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
1367 *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
1368 anonymous split): Adjust.
1369 (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
1370 (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
1371
1372 2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
1373
1374 * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
1375 when --with-gxx-include-dir is also specified.
1376 * configure: Regenerate.
1377
1378 2018-05-09 Jim Wilson <jimw@sifive.com>
1379
1380 PR target/84797
1381 * config.gcc (riscv*-*-*): Handle --with-multilib-list.
1382 * config/riscv/t-withmultilib: New.
1383 * config/riscv/withmultilib.h: New.
1384 * doc/install.texi: Document RISC-V --with-multilib-list support.
1385
1386 2018-05-09 Richard Biener <rguenther@suse.de>
1387
1388 * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
1389 vector.
1390 (vect_bb_vectorization_profitable_p): Adjust. Compute
1391 actual scalar cost using the cost vector and the add_stmt_cost
1392 machinery.
1393
1394 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1395
1396 PR rtl-optimization/85645
1397 * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
1398 in the REG_CFA_REGISTER note for LR, don't leave it empty.
1399
1400 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1401
1402 PR rtl-optimization/85645
1403 * shrink-wrap.c (spread_components): Return a boolean saying if
1404 anything was changed.
1405 (try_shrink_wrapping_separate): Iterate spread_components until
1406 nothing changes anymore.
1407
1408 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1409
1410 PR rtl-optimization/85645
1411 * regrename.c (build_def_use): Also kill the chains that include the
1412 destination of a REG_CFA_REGISTER note.
1413
1414 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1415
1416 PR rtl-optimization/85645
1417 * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
1418 insn that has a REG_CFA_REGISTER note.
1419
1420 2018-05-09 Richard Sandiford <richard.sandiford@linaro.org>
1421
1422 * cfgexpand.c (expand_clobber): New function.
1423 (expand_gimple_stmt_1): Use it.
1424 * tree-vect-stmts.c (vect_clobber_variable): New function,
1425 split out from...
1426 (vectorizable_simd_clone_call): ...here.
1427 (vectorizable_store): Emit a clobber either side of an
1428 IFN_STORE_LANES sequence.
1429 (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
1430
1431 2018-05-09 Tom de Vries <tom@codesourcery.com>
1432
1433 PR target/85626
1434 * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
1435 (define_insn "trap_if_false"): Add exit after trap.
1436
1437 2018-05-09 Eric Botcazou <ebotcazou@adacore.com>
1438
1439 PR rtl-optimization/85638
1440 * bb-reorder.c: Include common/common-target.h.
1441 (create_forwarder_block): New function extracted from...
1442 (fix_up_crossing_landing_pad): ...here. Rename into...
1443 (dw2_fix_up_crossing_landing_pad): ...this.
1444 (sjlj_fix_up_crossing_landing_pad): New function.
1445 (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
1446 call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
1447 from both partitions and exit the loop after one iteration.
1448
1449 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
1450
1451 Revert:
1452 * doc/extend.texi (PowerPC Built-in Functions): Rename this
1453 subsection.
1454 (Basic PowerPC Built-in Functions): The new name of the
1455 subsection previously known as "PowerPC Built-in Functions".
1456 (Basic PowerPC Built-in Functions Available on all Configurations):
1457 New subsubsection.
1458 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
1459 subsubsection.
1460 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
1461 subsubsection.
1462 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
1463 subsubsection.
1464 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
1465 subsubsection.
1466
1467 2018-05-08 Jim Wilson <jimw@sifive.com>
1468
1469 * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
1470 (LD_EMUL_SUFFIX): New.
1471 (LINK_SPEC): Use it.
1472
1473 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
1474
1475 * doc/extend.texi (PowerPC Built-in Functions): Rename this
1476 subsection.
1477 (Basic PowerPC Built-in Functions): The new name of the
1478 subsection previously known as "PowerPC Built-in Functions".
1479 (Basic PowerPC Built-in Functions Available on all Configurations):
1480 New subsubsection.
1481 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
1482 subsubsection.
1483 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
1484 subsubsection.
1485 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
1486 subsubsection.
1487 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
1488 subsubsection.
1489
1490 2018-05-08 Jakub Jelinek <jakub@redhat.com>
1491
1492 PR target/85683
1493 * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
1494 after cmpelim optimization.
1495
1496 2018-05-08 Olga Makhotina <olga.makhotina@intel.com>
1497
1498 * config.gcc: Support "goldmont".
1499 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
1500 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1501 PROCESSOR_GOLDMONT.
1502 * config/i386/i386.c (m_GOLDMONT): Define.
1503 (processor_target_table): Add "goldmont".
1504 (PTA_GOLDMONT): Define.
1505 (ix86_lea_outperforms): Add TARGET_GOLDMONT.
1506 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
1507 (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
1508 (fold_builtin_cpu): Add "goldmont".
1509 (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
1510 (ix86_option_override_internal): Add "goldmont".
1511 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
1512 (processor_type): Add PROCESSOR_GOLDMONT.
1513 * config/i386/i386.md: Add CPU "glm".
1514 * config/i386/glm.md: New file.
1515 * config/i386/x86-tune.def: Add m_GOLDMONT.
1516 * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
1517
1518 2018-05-08 Jakub Jelinek <jakub@redhat.com>
1519
1520 PR target/85572
1521 * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
1522 E_V4DImode.
1523 * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
1524 VI1248_AVX512VL_AVX512BW. Handle V2DImode and V4DImode if not
1525 TARGET_AVX512VL using ix86_expand_sse2_abs. Formatting fixes.
1526
1527 PR target/85317
1528 * config/i386/i386.c (ix86_fold_builtin): Handle
1529 IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
1530
1531 PR target/85480
1532 * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
1533 (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
1534
1535 2018-05-08 Richard Earnshaw <rearnsha@arm.com>
1536
1537 PR target/85658
1538 * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
1539 (check_arch): Likewise.
1540 (check_fpu): Return the result rather than printing it.
1541 (end arch): Fix operator precedence.
1542 (end cpu): Likewise.
1543 (END): Print the result from check_fpu.
1544
1545 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
1546 Alan Hayward <alan.hayward@arm.com>
1547 David Sherwood <david.sherwood@arm.com>
1548
1549 * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
1550 (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
1551 (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
1552 (*fcmuo<mode>_and): New patterns.
1553
1554 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
1555
1556 * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
1557 (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
1558 (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
1559 (cmp_op, sve_imm_con): New code attributes.
1560 (SVE_COND_INT_CMP, imm_con): Delete.
1561 (cmp_op): Remove above unspecs from int attribute.
1562 * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
1563 to...
1564 (*cmp<cmp_op><mode>): ...this. Use UNSPEC_MERGE_PTRUE instead of
1565 comparison-specific unspecs.
1566 (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
1567 (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
1568 (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
1569 (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
1570 (*vec_fcm<cmp_op><mode>): Rename to...
1571 (*fcm<cmp_op><mode>): ...this and adjust likewise.
1572 (*vec_fcmuo<mode>): Rename to...
1573 (*fcmuo<mode>): ...this and adjust likewise.
1574 (*pred_fcm<cmp_op><mode>): New pattern.
1575 * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
1576 (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
1577 functions.
1578 (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
1579 and UNORDERED.
1580 (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
1581 (aarch64_emit_sve_predicated_cond): New function.
1582 (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
1583 (aarch64_emit_unspec_cond_or): Replace with...
1584 (aarch64_emit_sve_or_conds): ...this new function. Use
1585 aarch64_emit_sve_ptrue_op for the individual comparisons and
1586 aarch64_emit_binop to OR them together.
1587 (aarch64_emit_inverted_unspec_cond): Replace with...
1588 (aarch64_emit_sve_inverted_cond): ...this new function. Use
1589 aarch64_emit_sve_ptrue_op for the comparison and
1590 aarch64_emit_unop to invert the result.
1591 (aarch64_expand_sve_vec_cmp_float): Update after the above
1592 changes. Use aarch64_emit_sve_ptrue_op for native comparisons.
1593
1594 2018-05-07 Nathan Sidwell <nathan@acm.org>
1595
1596 * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
1597 * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
1598 (Backwards Compatibility): Likewise.
1599
1600 2018-05-07 Luis Machado <luis.machado@linaro.org>
1601
1602 PR bootstrap/85681
1603 Revert:
1604 2018-05-07 Luis Machado <luis.machado@linaro.org>
1605
1606 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1607 <prefetch_dynamic_strides>: New const bool field.
1608 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1609 prefetch_dynamic_strides.
1610 (exynosm1_prefetch_tune): Likewise.
1611 (thunderxt88_prefetch_tune): Likewise.
1612 (thunderx_prefetch_tune): Likewise.
1613 (thunderx2t99_prefetch_tune): Likewise.
1614 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
1615 (aarch64_override_options_internal): Update to set
1616 PARAM_PREFETCH_DYNAMIC_STRIDES.
1617 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1618 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1619 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1620 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1621 prefetch-dynamic-strides setting.
1622
1623 2018-05-07 Luis Machado <luis.machado@linaro.org>
1624
1625 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1626 <minimum_stride>: New const int field.
1627 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1628 minimum_stride field.
1629 (exynosm1_prefetch_tune): Likewise.
1630 (thunderxt88_prefetch_tune): Likewise.
1631 (thunderx_prefetch_tune): Likewise.
1632 (thunderx2t99_prefetch_tune): Likewise.
1633 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
1634 (aarch64_override_options_internal): Update to set
1635 PARAM_PREFETCH_MINIMUM_STRIDE.
1636 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1637 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1638 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1639 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1640 stride is constant and is below the minimum stride threshold.
1641
1642 2018-05-07 Luis Machado <luis.machado@linaro.org>
1643
1644 * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
1645 to 512.
1646
1647 2018-05-07 Luis Machado <luis.machado@linaro.org>
1648
1649 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1650 <prefetch_dynamic_strides>: New const bool field.
1651 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1652 prefetch_dynamic_strides.
1653 (exynosm1_prefetch_tune): Likewise.
1654 (thunderxt88_prefetch_tune): Likewise.
1655 (thunderx_prefetch_tune): Likewise.
1656 (thunderx2t99_prefetch_tune): Likewise.
1657 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
1658 (aarch64_override_options_internal): Update to set
1659 PARAM_PREFETCH_DYNAMIC_STRIDES.
1660 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1661 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1662 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1663 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1664 prefetch-dynamic-strides setting.
1665
1666 2018-05-07 Luis Machado <luis.machado@linaro.org>
1667
1668 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1669 <minimum_stride>: New const int field.
1670 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1671 minimum_stride field.
1672 (exynosm1_prefetch_tune): Likewise.
1673 (thunderxt88_prefetch_tune): Likewise.
1674 (thunderx_prefetch_tune): Likewise.
1675 (thunderx2t99_prefetch_tune): Likewise.
1676 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
1677 (aarch64_override_options_internal): Update to set
1678 PARAM_PREFETCH_MINIMUM_STRIDE.
1679 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1680 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1681 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1682 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1683 stride is constant and is below the minimum stride threshold.
1684
1685 2018-05-06 Jakub Jelinek <jakub@redhat.com>
1686
1687 PR c++/85659
1688 * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
1689 the type is addressable. Don't force op into register if it has
1690 BLKmode.
1691
1692 2018-05-05 Roland McGrath <mcgrathr@google.com>
1693
1694 PR other/77609
1695 * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
1696 any section for which we don't know a specific type it should have,
1697 regardless of name. Previously this was done only for the exact
1698 names ".init_array", ".fini_array", and ".preinit_array".
1699 (default_elf_asm_named_section): Add comment about
1700 relationship with default_section_type_flags and SECTION_NOTYPE.
1701 (get_section): Don't consider it a type conflict if one side has
1702 SECTION_NOTYPE and the other doesn't, as long as neither has the
1703 SECTION_BSS et al used in the default_section_type_flags logic.
1704
1705 2018-05-05 Tom de Vries <tom@codesourcery.com>
1706
1707 PR target/85653
1708 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
1709 (workaround_barsyncs): New function.
1710 (nvptx_reorg): Use workaround_barsyncs.
1711 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
1712 (define_expand "nvptx_membar_cta"): New define_expand.
1713 (define_insn "*nvptx_membar_cta"): New insn.
1714
1715 2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
1716
1717 * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
1718 To improve optimization opportunities.
1719 * builtin-types.def: The new needed builtin types for the above.
1720
1721 2018-05-04 Richard Biener <rguenther@suse.de>
1722
1723 * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
1724 * gimple-ssa-store-merging.c
1725 (imm_store_chain_info::output_merged_store): Remove redundant create,
1726 release split_store vector contents on failure.
1727 * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
1728 scalar stmt vector on cache hit.
1729
1730 2018-05-04 Segher Boessenkool <segher@kernel.crashing.org>
1731
1732 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
1733 Xilinx FP support.
1734 * config.gcc (powerpc-xilinx-eabi*): Remove.
1735 * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
1736 support.
1737 (fusion_addis_mem_combo_load): Ditto.
1738 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
1739 FP support.
1740 (rs6000_cpu_cpp_builtins): Ditto.
1741 * config/rs6000/rs6000-linux.c
1742 (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
1743 * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
1744 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
1745 support.
1746 (rs6000_setup_reg_addr_masks): Ditto.
1747 (rs6000_init_hard_regno_mode_ok): Ditto.
1748 (rs6000_option_override_internal): Ditto.
1749 (legitimate_lo_sum_address_p): Ditto.
1750 (rs6000_legitimize_address): Ditto.
1751 (rs6000_legitimize_reload_address): Ditto.
1752 (rs6000_legitimate_address_p): Ditto.
1753 (abi_v4_pass_in_fpr): Ditto.
1754 (setup_incoming_varargs): Ditto.
1755 (rs6000_gimplify_va_arg): Ditto.
1756 (rs6000_split_multireg_move): Ditto.
1757 (rs6000_savres_strategy): Ditto.
1758 (rs6000_emit_prologue_components): Ditto.
1759 (rs6000_emit_epilogue_components): Ditto.
1760 (rs6000_emit_prologue): Ditto.
1761 (rs6000_emit_epilogue): Ditto.
1762 (rs6000_elf_file_end): Ditto.
1763 (rs6000_function_value): Ditto.
1764 (rs6000_libcall_value): Ditto.
1765 * config/rs6000/rs6000.h: Ditto.
1766 (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
1767 (TARGET_MINMAX): ... this. New.
1768 (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
1769 * config/rs6000/rs6000.md: Remove Xilinx FP support.
1770 (*movsi_internal1_single): Delete.
1771 * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
1772 mfpu=, mxilinx-fpu): Delete.
1773 * config/rs6000/singlefp.h: Delete.
1774 * config/rs6000/sysv4.h: Remove Xilinx FP support.
1775 * config/rs6000/t-rs6000: Ditto.
1776 * config/rs6000/t-xilinx: Delete.
1777 * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
1778 * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
1779 (VStype_simple): Delete.
1780 (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
1781 * config/rs6000/xfpu.h: Delete.
1782 * config/rs6000/xfpu.md: Delete.
1783 * config/rs6000/xilinx.h: Delete.
1784 * config/rs6000/xilinx.opt: Delete.
1785 * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
1786 -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
1787
1788 2018-05-04 Tom de Vries <tom@codesourcery.com>
1789
1790 PR libgomp/85639
1791 * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
1792 if ignore == 0.
1793
1794 2018-05-04 Richard Biener <rguenther@suse.de>
1795
1796 PR middle-end/85627
1797 * tree-complex.c (update_complex_assignment): We are always in SSA form.
1798 (expand_complex_div_wide): Likewise.
1799 (expand_complex_operations_1): Likewise.
1800 (expand_complex_libcall): Preserve EH info of the original stmt.
1801 (tree_lower_complex): Handle removed blocks.
1802 * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
1803 on complex multiplication and division libcall builtins.
1804
1805 2018-05-04 Richard Biener <rguenther@suse.de>
1806
1807 PR middle-end/85574
1808 * fold-const.c (negate_expr_p): Restrict negation of operand
1809 zero of a division to when we know that can happen without
1810 overflow.
1811 (fold_negate_expr_1): Likewise.
1812
1813 2018-05-04 Jakub Jelinek <jakub@redhat.com>
1814
1815 PR libstdc++/85466
1816 * real.h (real_nextafter): Declare.
1817 * real.c (real_nextafter): New function.
1818 * fold-const-call.c (fold_const_nextafter): New function.
1819 (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
1820 CASE_CFN_NEXTTOWARD.
1821 (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
1822 even when arg1_mode is different from arg0_mode.
1823
1824 2018-05-03 Nathan Sidwell <nathan@acm.org>
1825
1826 * doc/extend.texi (Deprecated Features): Remove
1827 -ffriend-injection.
1828 (Backwards Compatibility): Likewise.
1829 * doc/invoke.texi (C++ Language Options): Likewise.
1830 (C++ Dialect Options): Likewise.
1831
1832 2018-05-03 Jakub Jelinek <jakub@redhat.com>
1833
1834 PR target/85530
1835 * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
1836 _mm512_mask_mullox_epi64): New intrinsics.
1837
1838 2018-05-03 Tom de Vries <tom@codesourcery.com>
1839
1840 PR testsuite/85106
1841 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1842 dump files): Add offload-tree.
1843
1844 2018-05-03 Richard Biener <rguenther@suse.de>
1845
1846 PR tree-optimization/85615
1847 * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
1848 to loops not nested in BBs loop father to avoid creating multi-entry
1849 loops.
1850
1851 2018-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1852
1853 PR tree-optimization/70291
1854 * tree-complex.c (expand_complex_libcall): Add type, inplace_p
1855 arguments. Change return type to tree. Emit libcall as a new
1856 statement rather than replacing existing one when inplace_p is true.
1857 (expand_complex_multiplication_components): New function.
1858 (expand_complex_multiplication): Expand floating-point complex
1859 multiplication using the above.
1860 (expand_complex_division): Rename inner_type parameter to type.
1861 Update expand_complex_libcall call-site.
1862 (expand_complex_operations_1): Update expand_complex_multiplication
1863 and expand_complex_division call-sites.
1864
1865 2018-05-02 Jakub Jelinek <jakub@redhat.com>
1866
1867 PR target/85582
1868 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1869 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1870 *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
1871 the highest significant bit of the shift count mask is clear. In
1872 check whether and[sq]i3 is needed verify that all significant bits
1873 of the shift count other than the highest are set.
1874
1875 2018-05-02 Tom de Vries <tom@codesourcery.com>
1876
1877 PR libgomp/82428
1878 * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
1879 * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
1880 (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
1881 * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
1882 (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
1883 * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
1884 __builtin_goacc_parlevel_size.
1885
1886 2018-05-02 Richard Biener <rguenther@suse.de>
1887
1888 PR tree-optimization/85597
1889 * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
1890 do not use split vect_get_vec_defs call but call vect_get_slp_defs
1891 directly.
1892
1893 2018-05-02 Tom de Vries <tom@codesourcery.com>
1894
1895 PR testsuite/85106
1896 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1897 dump files): Add ltrans-tree.
1898
1899 2018-05-02 Tom de Vries <tom@codesourcery.com>
1900
1901 PR testsuite/85106
1902 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1903 dump files): Add wpa-ipa.
1904
1905 2018-05-02 Segher Boessenkool <segher@kernel.crashing.org>
1906
1907 * config.gcc (powerpc*-*-*): Remove paired.h. Unsupport the
1908 powerpc*-*-linux*paired* target.
1909 * config/rs6000/750cl.h: Delete.
1910 * config/rs6000/paired.h: Delete.
1911 * config/rs6000/paired.md: Delete.
1912 * config/rs6000/predicates.md (easy_vector_constant): Remove paired
1913 float support.
1914 * config/rs6000/rs6000-builtin.def: Remove paired float support.
1915 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
1916 comment. Remove paired float support.
1917 * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
1918 * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
1919 VECTOR_PAIRED.
1920 * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
1921 paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
1922 declarations.
1923 * config/rs6000/rs6000.c: Remove paired float support.
1924 (paired_expand_vector_init, paired_expand_vector_move,
1925 paired_emit_vector_compare, paired_emit_vector_cond_expr,
1926 (paired_expand_lv_builtin, paired_expand_stv_builtin,
1927 paired_expand_builtin, paired_expand_predicate_builtin,
1928 paired_init_builtins): Delete.
1929 * config/rs6000/rs6000.h: Remove paired float support.
1930 * config/rs6000/rs6000.md: Remove paired float support.
1931 (move_from_CR_ov_bit): Delete.
1932 * config/rs6000/rs6000.opt (mpaired): Delete.
1933 * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
1934 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
1935
1936 2018-05-02 Richard Biener <rguenther@suse.de>
1937
1938 PR middle-end/85567
1939 * gimplify.c (gimplify_save_expr): When in SSA form allow
1940 SAVE_EXPRs to compute to SSA vars.
1941
1942 2018-05-02 Jakub Jelinek <jakub@redhat.com>
1943
1944 PR target/85582
1945 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1946 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1947 *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
1948 clobber operands[2], instead use a new pseudo. Formatting fixes.
1949
1950 2018-05-02 Richard Sandiford <richard.sandiford@linaro.org>
1951
1952 PR tree-optimization/85586
1953 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
1954 exit early for statements in the same group if the accesses are
1955 not strided.
1956
1957 2018-05-02 Tom de Vries <tom@codesourcery.com>
1958
1959 PR lto/85451
1960 * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
1961 error message.
1962
1963 2018-05-01 Marc Glisse <marc.glisse@inria.fr>
1964
1965 PR tree-optimization/85143
1966 * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
1967
1968 2018-05-01 Tom de Vries <tom@codesourcery.com>
1969
1970 PR lto/85451
1971 * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
1972 not found" error message.
1973
1974 2018-05-01 Tom de Vries <tom@codesourcery.com>
1975
1976 PR other/83786
1977 * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
1978 * vec.c (test_ordered_remove_if): New function.
1979 (vec_c_tests): Call test_ordered_remove_if.
1980 * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
1981 * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
1982 * tree-vect-patterns.c (vect_pattern_recog_1): Use
1983 VEC_ORDERED_REMOVE_IF.
1984
1985 2018-05-01 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1986
1987 PR tree-optimization/82665
1988 * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
1989 pointer subtraction where arguments come from a memchr call.
1990
1991 2018-05-01 Jakub Jelinek <jakub@redhat.com>
1992
1993 * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
1994 --push-state --as-needed and --pop-state instead of --as-needed and
1995 --no-as-needed if ld supports it.
1996 * configure: Regenerated.
1997
1998 PR web/85578
1999 * doc/install.texi2html: Replace _002d with - and _002a with * in
2000 generated html files using sed.
2001
2002 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2003
2004 PR c++/85523
2005 * gcc-rich-location.c (blank_line_before_p): New function.
2006 (use_new_line): New function.
2007 (gcc_rich_location::add_fixit_insert_formatted): New function.
2008 * gcc-rich-location.h
2009 (gcc_rich_location::add_fixit_insert_formatted): New function.
2010
2011 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2012
2013 * selftest.c (assert_streq): Rename "expected" and "actual" to
2014 "val1" and "val2". Extend NULL-handling to cover both inputs
2015 symmetrically, while still requiring both to be non-NULL for a pass.
2016 * selftest.h (assert_streq): Rename "expected" and "actual" to
2017 "val1" and "val2".
2018 (ASSERT_EQ): Likewise.
2019 (ASSERT_EQ_AT): Likewise.
2020 (ASSERT_KNOWN_EQ): Likewise.
2021 (ASSERT_KNOWN_EQ_AT): Likewise.
2022 (ASSERT_NE): Likewise.
2023 (ASSERT_MAYBE_NE): Likewise.
2024 (ASSERT_MAYBE_NE_AT): Likewise.
2025 (ASSERT_STREQ): Likewise. Clarify that both must be non-NULL for
2026 the assertion to pass.
2027 (ASSERT_STREQ_AT): Likewise.
2028
2029 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
2030
2031 * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
2032 interaction with -pie.
2033
2034 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2035
2036 * selftest.h: Fix alphabetization of per-source-file selftest
2037 declarations.
2038
2039 2018-04-30 Jason Merrill <jason@redhat.com>
2040
2041 PR c++/61982 - dead stores to destroyed objects.
2042 * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
2043 of clobber.
2044
2045 2018-04-30 Jason Merrill <jason@redhat.com>
2046
2047 * tree.c (build_clobber): New.
2048 * tree.h: Declare it.
2049 * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
2050
2051 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2052
2053 * diagnostic-show-locus.c (layout::layout): Update for
2054 location_get_source_line returning a char_span.
2055 (struct char_span): Move to input.h.
2056 (struct correction): Update for fields in char_span becoming
2057 private.
2058 (struct source_line): Update for location_get_source_line
2059 returning a char_span.
2060 (layout::print_line): Likewise.
2061 * edit-context.c (edited_file::print_content): Likewise.
2062 (edited_file::print_diff_hunk): Likewise.
2063 (edited_file::print_run_of_changed_lines): Likewise.
2064 (edited_file::get_num_lines): Likewise.
2065 (edited_line::edited_line): Likewise.
2066 * final.c (asm_show_source): Likewise.
2067 * input.c (location_get_source_line): Convert return type
2068 from const char * to char_span, losing the final "line_len"
2069 param.
2070 (dump_location_info): Update for the above.
2071 (get_substring_ranges_for_loc): Likewise. Use a char_span
2072 when handling the literal within the line.
2073 (test_reading_source_line): Update for location_get_source_line
2074 returning a char_span.
2075 * input.h (class char_span): Move here from
2076 diagnostic-show-locus.c, converting from a struct to a class.
2077 Make data members private.
2078 (char_span::operator bool): New.
2079 (char_span::length): New.
2080 (char_span::get_buffer): New.
2081 (char_span::operator[]): New.
2082 (char_span::subspan): Make const.
2083 (char_span::xstrdup): New.
2084 (location_get_source_line): Convert return type from const char *
2085 to char_span, losing the final "line_size" param.
2086
2087 2018-04-30 Jan Hubicka <jh@suse.cz>
2088
2089 * lto-wrapper.c (ltrans_priorities): New static var.
2090 (cmp_priority): New.
2091 (run_gcc): Read priorities and if doing parallel build order
2092 the Makefile by them.
2093
2094 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2095
2096 * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
2097
2098 2018-04-30 Richard Biener <rguenther@suse.de>
2099
2100 * tree-cfg.c (verify_address): Remove base argument, add
2101 flag whether to check TREE_ADDRESSABLE and do that.
2102 (verify_expr): Remove.
2103 (verify_types_in_gimple_reference): Add pieces from verify_expr.
2104 (verify_gimple_assign_single): Likewise.
2105 (verify_gimple_switch): Likewise.
2106 (verify_expr_location_1): Dereference tp once. Add (disabled)
2107 piece from verify_expr.
2108 (verify_gimple_in_cfg): Do not call verify_expr on all ops.
2109
2110 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
2111
2112 * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
2113
2114 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
2115
2116 * config/arc/arc-protos.h (prepare_extend_operands): Remove.
2117 (small_data_pattern): Likewise.
2118 (arc_rewrite_small_data): Likewise.
2119 * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
2120 (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
2121 (get_symbol_alignment): New function.
2122 (legitimate_small_data_address_p): Likewise.
2123 (legitimate_scaled_address): Update, call
2124 legitimate_small_data_address_p.
2125 (output_sdata): New static variable.
2126 (arc_print_operand): Update how we handle small data operands.
2127 (arc_print_operand_address): Likewise.
2128 (arc_legitimate_address_p): Update, use
2129 legitimate_small_data_address_p.
2130 (arc_rewrite_small_data_p): Remove.
2131 (arc_rewrite_small_data_1): Likewise.
2132 (arc_rewrite_small_data): Likewise.
2133 (small_data_pattern): Likewise.
2134 (compact_sda_memory_operand): Update to use
2135 legitimate_small_data_address_p and get_symbol_alignment.
2136 (prepare_move_operands): Don't rewite sdata pattern.
2137 (prepare_extend_operands): Remove.
2138 * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
2139 pattern.
2140 (zero_extendqisi2): Likewise.
2141 (zero_extendhisi2): Likewise.
2142 (extendqihi2): Likewise.
2143 (extendqisi2): Likewise.
2144 (extendhisi2): Likewise.
2145 (addsi3): Likewise.
2146 (subsi3): Likewise.
2147 (andsi3): Likewise.
2148 * config/arc/constraints.md (Usd): Change it to memory constraint.
2149
2150 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
2151
2152 * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
2153 as source of std instructions.
2154 * config/arc/arc.md (movsi_insn): Update pattern predicate to
2155 allow 6-bit constants as source for store instructions.
2156 (movdi_insn): Update instruction pattern to allow 6-bit constants
2157 as source for store instructions.
2158
2159 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
2160
2161 * doc/invoke.texi (-fdebug-types-section): Fix grammar.
2162
2163 2018-04-30 Nathan Sidwell <nathan@acm.org>
2164 Sandra Loosemore <sandra@codesourcery.com>
2165
2166 * dumpfile.c (dump_open): Allow '-' for stdout.
2167 * doc/invoke.texi (Developer Options): Document dump filename
2168 determination early. Document stdin/stdout selection.
2169
2170 2018-04-30 Andrew Sadek <andrew.sadek.se@gmail.com>
2171
2172 Microblaze Target: PIC data text relative
2173
2174 * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
2175 * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
2176 Add declaration.
2177 * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
2178 CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
2179 * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
2180 New addressing mode for data-text relative position indepenedent code.
2181 (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
2182 'ADDRESS_SYMBOLIC_TXT_REL'.
2183 (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
2184 (microblaze_legitimate_pic_operand): Exclude function calls from
2185 pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
2186 (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
2187 addresses cases.
2188 (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
2189 (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
2190 (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
2191 for 'address + offset'.
2192 (microblaze_expand_prologue): Add new function prologue call for
2193 'r20' assignation.
2194 (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
2195 'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
2196 table in case of TARGET_PIC_DATA_TEXT_REL.
2197 (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
2198 * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
2199 Add new macros 'UNSPEC_TEXT',
2200 'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
2201 + exclude function calls from 'UNSPEC_PLT' in case of data text
2202 relative mode.
2203 * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
2204 new target hook for generating address diff vector tables in case of
2205 flag_pic.
2206 * doc/tm.texi : Regenerate.
2207 * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
2208 'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
2209 of addr diff vector generation.
2210 * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
2211 target hook definition.
2212 * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
2213 Add default function for generate_pic_addr_diff_vec -> flag_pic.
2214 * doc/invoke.texi (Add new pic option): Add new microblaze pic
2215 option for data text relative.
2216
2217 2018-04-30 Richard Biener <rguenther@suse.de>
2218
2219 * tree-chrec.h (evolution_function_is_constant_p): Remove
2220 redundant check.
2221 * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
2222
2223 2018-04-30 Richard Biener <rguenther@suse.de>
2224
2225 PR bootstrap/85571
2226 * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
2227
2228 2018-04-30 Richard Biener <rguenther@suse.de>
2229
2230 PR tree-optimization/28364
2231 PR tree-optimization/85275
2232 * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
2233 copying first exit test.
2234
2235 2018-04-28 Mark Wielaard <mark@klomp.org>
2236
2237 * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
2238 dwarf_version >= 5.
2239 (dwarf_AT): Handle DW_AT_addr_base.
2240 (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
2241
2242 2018-04-28 Uros Bizjak <ubizjak@gmail.com>
2243
2244 PR target/84431
2245 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
2246 (*ashl<dwi>3_doubleword_mask_1): Ditto.
2247 (*<shift_insn><dwi>3_doubleword_mask): Ditto.
2248 (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
2249
2250 2018-04-28 Richard Biener <rguenther@suse.de>
2251
2252 * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
2253 (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
2254 to reflect use. Only add interesting stmts.
2255
2256 2018-04-27 Martin Jambor <mjambor@suse.cz>
2257
2258 PR ipa/85549
2259 * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
2260 the jump function allows for passing through aggregate values.
2261
2262 2018-04-27 David Malcolm <dmalcolm@redhat.com>
2263
2264 * input.h (in_system_header_at): Convert from macro to inline
2265 function.
2266 (from_macro_expansion_at): Likewise.
2267 (from_macro_definition_at): Likewise.
2268
2269 2018-04-27 Jeff Law <law@redhat.com>
2270
2271 * config.gcc: Mark tile* targets as deprecated/obsolete.
2272
2273 2018-04-27 Richard Biener <rguenther@suse.de>
2274
2275 * config/aarch64/aarch64.c: Simplify ap.__stack advance and
2276 fix for ILP32.
2277
2278 2018-04-27 Richard Biener <rguenther@suse.de>
2279
2280 * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
2281
2282 2018-04-27 Uros Bizjak <ubizjak@gmail.com>
2283
2284 * config/i386/i386.md (*movti_internal): Substitute Ye constraint
2285 with Yd constraint. Set "preferred_for_speed" attribute from
2286 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
2287 with Yd constraint.
2288 (*movdi_internal): Ditto.
2289 (movti_interunit splitters): Remove
2290 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
2291 (movdi_interunit splitters): Ditto.
2292 * config/i386/constraints.md (Ye): Remove.
2293 (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
2294
2295 2018-04-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2296
2297 PR target/85512
2298 * config/aarch64/constraints.md (Usg): Limit to 31.
2299 (Usj): Limit to 63.
2300
2301 2018-04-27 Jakub Jelinek <jakub@redhat.com>
2302
2303 PR tree-optimization/85529
2304 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
2305 argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
2306 rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
2307 zero extension or masking of the MSB bit.
2308 (optimize_range_tests): Add FIRST_BB argument, pass it through
2309 to optimize_range_tests_var_bound.
2310 (maybe_optimize_range_tests, reassociate_bb): Adjust
2311 optimize_range_tests callers.
2312
2313 2018-04-26 Richard Biener <rguenther@suse.de>
2314 Jakub Jelinek <jakub@redhat.com>
2315
2316 * cgraph.h (symbol_table): Just declare debug method here.
2317 * symtab.c (symbol_table::debug): Define.
2318
2319 2018-04-26 Eric Botcazou <ebotcazou@adacore.com>
2320
2321 * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
2322
2323 2018-04-26 Uros Bizjak <ubizjak@gmail.com>
2324
2325 * config/i386/i386.md ("isa" attribute): Add x64_sse2.
2326 ("enabled" attribute): Handle x64_sse2 "isa" attribute.
2327 (*movdi_internal): Substitute Yi and Yj constraint with x
2328 and Ym and Yn constraint with y constraint. Update "isa"
2329 attribute and set "preferred_for_speed" attribute from
2330 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
2331 (*movsi_internal): Ditto.
2332 (*movdf_internal): Ditto.
2333 (*movsf_internal): Ditto.
2334 (*zero_extendsidi2): Ditto.
2335 * config/i386/sse.md (vec_set<mode>_0): Ditto.
2336 (sse2_loadld): Ditto.
2337 (*vec_extract<ssevecmodelower>_0): Ditto.
2338 (*vec_extractv4si_0_zext_sse4): Ditto.
2339 (vec_concatv2di): Ditto.
2340 (*vec_dup<mode>): Ditto.
2341 * config/i386/mmx.md (*mov<mode>_internal): Ditto.
2342 * config/i386/constraints.md (Yi): Remove.
2343 (Yj): Remove.
2344 (Ym): Remove.
2345 (Yn): Remove.
2346
2347 2018-04-26 Nathan Sidwell <nathan@acm.org>
2348
2349 * dumpfile.c (dump_open): New.
2350 (dump_open_alternate_stream, dump_start, dump_begin): Call it.
2351 (dump_finish): Detect stdio/stderr by value not name.
2352
2353 2018-04-26 Jonathan Wakely <jwakely@redhat.com>
2354
2355 * doc/invoke.texi (-Wreturn-type): Document default status for C++.
2356
2357 2018-04-26 Tom de Vries <tom@codesourcery.com>
2358
2359 PR target/84952
2360 * config/nvptx/nvptx.c (verify_neutering_jumps)
2361 (verify_neutering_labels): New function
2362 (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
2363
2364 2018-04-26 Tom de Vries <tom@codesourcery.com>
2365
2366 PR target/84025
2367 * config/nvptx/nvptx.c (needs_neutering_p): New function.
2368 (nvptx_single): Use needs_neutering_p to skip over insns that do not
2369 need neutering.
2370
2371 2018-04-26 Richard Biener <rguenther@suse.de>
2372 Tom de Vries <tom@codesourcery.com>
2373
2374 PR lto/85422
2375 * lto-streamer-out.c (output_function): Fixup loops if required to match
2376 discovery done in the reader.
2377
2378 2018-04-26 Richard Biener <rguenther@suse.de>
2379
2380 PR tree-optimization/85116
2381 * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
2382 have a loop exit from the single latch predecessor. Remove
2383 case of header with just condition.
2384 (ch_base::copy_headers): Exclude infinite loops from any
2385 processing.
2386 (pass_ch::execute): Record exits.
2387
2388 2018-04-26 Richard Biener <rguenther@suse.de>
2389
2390 * tree-vect-data-refs.c (vect_get_data_access_cost): Get
2391 prologue cost vector and pass it to vect_get_load_cost.
2392 (vect_get_peeling_costs_all_drs): Likewise.
2393 (vect_peeling_hash_get_lowest_cost): Likewise.
2394 (vect_enhance_data_refs_alignment): Likewise.
2395
2396 2018-04-26 Richard Biener <rguenther@suse.de>
2397
2398 PR middle-end/85450
2399 * tree-cfg.c (verify_gimple_assign_unary): Restore proper
2400 checking of integer<->pointer conversions.
2401 * omp-expand.c (expand_omp_for_static_nochunk): Avoid
2402 sign-/zero-extending pointer types.
2403 (expand_omp_for_static_chunk): Likewise.
2404
2405 2018-03-22 Hans-Peter Nilsson <hp@axis.com>
2406 Jean Lee <xiaoyur347@gmail.com>
2407
2408 * config/mips/mips.c (mips_asan_shadow_offset): New function.
2409 (TARGET_ASAN_SHADOW_OFFSET): Define.
2410 * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
2411 true for -fsanitize=address.
2412
2413 2018-04-25 Mark Wielaard <mark@klomp.org>
2414
2415 * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
2416 shorter ones.
2417
2418 2018-04-25 Jakub Jelinek <jakub@redhat.com>
2419
2420 * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
2421 than "alu", remove explicit "memory" and "imm_disp" attributes.
2422 (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
2423
2424 PR middle-end/85414
2425 * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
2426 case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
2427 gen_lowpart_no_emit.
2428
2429 2018-04-25 Sebastian Peryt <sebastian.peryt@intel.com>
2430
2431 PR target/85473
2432 * config/i386/i386.c (ix86_expand_builtin): Change memory
2433 operand to XI, extend p0 to Pmode.
2434 * config/i386/i386.md: Change unspec volatile and operand
2435 1 mode to XI, change operand 0 mode to P.
2436
2437 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2438
2439 * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
2440 GET_MODE_MASK before any checking.
2441 (nds32_can_use_bset_p): Likewise.
2442 (nds32_can_use_btgl_p): Likewise.
2443
2444 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2445
2446 * config/nds32/nds32-doubleword.md: New define_split pattern for
2447 illegal register number.
2448
2449 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2450
2451 * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
2452
2453 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2454
2455 * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
2456
2457 2018-04-25 Richard Biener <rguenther@suse.de>
2458
2459 * lto-streamer.h (LTO_major_version): Bump to 8.
2460
2461 2018-04-25 Jakub Jelinek <jakub@redhat.com>
2462
2463 * BASE-VER: Set to 9.0.0.
2464
2465 2018-04-24 Segher Boessenkool <segher@kernel.crashing.org>
2466
2467 * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
2468 in __abskf2 and __powikf2.
2469
2470 2018-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2471
2472 PR target/85512
2473 * config/aarch64/constraints.md (Usg, Usj): New constraints.
2474 * config/aarch64/iterators.md (cmode_simd): New mode attribute.
2475 * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
2476 Use the above on operand 2. Reindent.
2477 (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
2478
2479 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
2480
2481 PR target/85485
2482 * common/config/i386/i386-common.c (ix86_handle_option): Don't
2483 handle OPT_mcet.
2484 * config/i386/i386.opt (mcet): Removed.
2485 * doc/install.texi: Remove -mcet documentation.
2486 * doc/invoke.texi: Likewise.
2487
2488 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
2489
2490 PR target/85485
2491 * doc/install.texi: Remove -mcet from bootstrap-cet.
2492
2493 2018-04-24 Jakub Jelinek <jakub@redhat.com>
2494
2495 PR target/85511
2496 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
2497 __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
2498 if TARGET_64BIT.
2499
2500 PR target/85503
2501 * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
2502 const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
2503 containing a CONST_VECTOR.
2504
2505 2018-04-24 Cesar Philippidis <cesar@codesourcery.com>
2506
2507 * doc/install.texi: Update newlib dependency for nvptx.
2508
2509 2018-04-24 Jakub Jelinek <jakub@redhat.com>
2510
2511 PR target/85508
2512 * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
2513 instead of INTVAL when shifting x left.
2514
2515 2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
2516
2517 PR tree-optimization/85478
2518 * tree-vect-loop.c (vect_analyze_loop_2): Do not call
2519 vect_grouped_store_supported for single element vectors.
2520
2521 2018-04-24 Richard Biener <rguenther@suse.de>
2522
2523 PR target/85491
2524 * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
2525 load cost increase to the case of non-constant step.
2526
2527 2018-04-24 Jakub Jelinek <jakub@redhat.com>
2528
2529 PR target/84828
2530 * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
2531 destination if any_malformed_asm.
2532
2533 2018-04-23 Eric Botcazou <ebotcazou@adacore.com>
2534
2535 PR middle-end/85496
2536 * expr.c (store_field): In the bitfield case, if the value comes from
2537 a function call and is returned in registers by means of a PARALLEL,
2538 do not change the mode of the temporary unless BLKmode and VOIDmode.
2539
2540 2018-04-23 Andrey Belevantsev <abel@ispras.ru>
2541
2542 PR rtl-optimization/85423
2543 * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
2544 dependencies to debug insns when the previous insn is non-debug.
2545
2546 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
2547
2548 * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
2549 enums into a single definition.
2550 (fls): Fix predicates and printing.
2551 (seti): Likewise.
2552
2553 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
2554
2555 * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
2556 * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
2557 and short u6 immediate.
2558 (check_if_valid_sleep_operand): Remove.
2559 * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
2560
2561 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2562
2563 * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
2564 flag_always_save_lp condition.
2565 * config/nds32/nds32.opt (malways-save-lp): New option.
2566
2567 2018-04-22 Shiva Chen <shiva0217@gmail.com>
2568
2569 * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
2570 * config/nds32/nds32.c (nds32_use_load_post_increment): New.
2571 * config/nds32/nds32.h
2572 (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
2573 (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
2574
2575 2018-04-22 Shiva Chen <shiva0217@gmail.com>
2576
2577 * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
2578 * config/nds32/nds32.c (nds32_ls_333_p): Remove.
2579
2580 2018-04-22 Shiva Chen <shiva0217@gmail.com>
2581 Chung-Ju Wu <jasonwucj@gmail.com>
2582
2583 * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
2584 Declare.
2585 * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
2586 * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
2587
2588 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2589
2590 * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
2591
2592 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2593
2594 * config/nds32/nds32-protos.h (nds32_data_alignment,
2595 nds32_local_alignment): Declare.
2596 * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
2597 nds32_local_alignment): New functions.
2598 (TARGET_CONSTANT_ALIGNMENT): Define.
2599 * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
2600
2601 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2602
2603 * config/nds32/nds32.c
2604 (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
2605 (TARGET_MODES_TIEABLE_P): Likewise.
2606
2607 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2608
2609 * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
2610 level Ofast and Og.
2611
2612 2018-04-22 Monk Chiang <sh.chiang04@gmail.com>
2613 Chung-Ju Wu <jasonwucj@gmail.com>
2614
2615 * config/nds32/constants.md (unspec_volatile_element): Add enum values
2616 for unaligned access.
2617 * config/nds32/nds32-intrinsic.c: Implementation of expanding
2618 unaligned access.
2619 * config/nds32/nds32-intrinsic.md: Likewise.
2620 * config/nds32/nds32_intrinsic.h: Likewise.
2621 * config/nds32/nds32.h (nds32_builtins): Likewise.
2622 * config/nds32/nds32.opt (munaligned-access): New option.
2623 * config/nds32/nds32.c (nds32_asm_file_start): Display
2624 flag_unaligned_access status.
2625
2626 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
2627
2628 * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
2629 -mno-relax is present.
2630 * config/riscv/linux.h (LINK_SPEC): Ditto.
2631
2632 2018-04-20 Martin Sebor <msebor@redhat.com>
2633
2634 PR c/85365
2635 * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
2636 for null pointers.
2637 (gimple_fold_builtin_stxcpy_chk): Same.
2638 * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
2639
2640 2018-04-20 Michael Meissner <meissner@linux.ibm.com>
2641
2642 PR target/85456
2643 * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
2644 __powikf2 when long double is IEEE 128-bit.
2645
2646 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
2647
2648 * config/riscv/riscv.c (riscv_first_stack_step): Round up min
2649 step to make sure stack always aligned.
2650
2651 2018-04-20 Carl Love <cel@us.ibm.com>
2652
2653 PR target/83402
2654 * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
2655 size check for arg0.
2656
2657 2018-04-20 Nathan Sidwell <nathan@codesourcery.com>
2658 Tom de Vries <tom@codesourcery.com>
2659
2660 PR target/85445
2661 * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
2662 Emit insns for calls too.
2663 (nvptx_find_par): Always look for worker-level predecessor insn.
2664 (nvptx_propagate): Add is_call parm, return bool. Copy frame for
2665 calls.
2666 (nvptx_vpropagate, nvptx_wpropagate): Adjust.
2667 (nvptx_process_pars): Propagate frames for calls.
2668
2669 2018-04-20 H.J. Lu <hongjiu.lu@intel.com>
2670
2671 PR target/85469
2672 * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
2673 Removed.
2674 (OPTION_MASK_ISA_IBT_UNSET): Likewise.
2675 (ix86_handle_option): Don't handle OPT_mibt.
2676 * config/i386/cet.h: Check __CET__ instead of __IBT__ and
2677 __SHSTK__.
2678 * config/i386/driver-i386.c (host_detect_local_cpu): Remove
2679 has_ibt and ibt.
2680 * config/i386/i386-c.c (ix86_target_macros_internal): Don't
2681 check OPTION_MASK_ISA_IBT nor flag_cf_protection.
2682 (ix86_target_macros): Define __CET__ with flag_cf_protection
2683 for -fcf-protection.
2684 * config/i386/i386.c (isa2_opts): Remove -mibt.
2685 * config/i386/i386.h (TARGET_IBT): Removed.
2686 (TARGET_IBT_P): Likewise.
2687 (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
2688 * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
2689 * config/i386/i386.opt (mcet): Update help message.
2690 (mshstk): Likewise.
2691 (mibt): Removed.
2692 * doc/invoke.texi: Remove -mibt. Document __CET__. Document
2693 -mcet as an alias for -mshstk.
2694
2695 2018-04-20 Richard Biener <rguenther@suse.de>
2696
2697 PR middle-end/85475
2698 * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
2699 complexity by forcing a single use of the multiply operand.
2700
2701 2018-04-20 Martin Jambor <mjambor@suse.cz>
2702
2703 ipa/85449
2704 * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
2705 recursion dependency to only apply to non-clones.
2706
2707 2018-04-20 Martin Jambor <mjambor@suse.cz>
2708
2709 ipa/85447
2710 * ipa-cp.c (create_specialized_node): Check that clones of
2711 self-recursive edges exist during IPA-CP.
2712
2713 2018-04-19 Toon Moene <toon@moene.org>
2714
2715 * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
2716 by -O3.
2717
2718 2018-04-19 Jakub Jelinek <jakub@redhat.com>
2719
2720 PR tree-optimization/85467
2721 * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
2722 VECTOR_TYPE_P macro. If type is vector type, VIEW_CONVERT_EXPR the
2723 VECTOR_CST element to type.
2724
2725 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
2726
2727 PR target/85397
2728 * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
2729 * config/i386/i386.md (builtin_setjmp_setup): Removed.
2730 (builtin_longjmp): Likewise.
2731 (save_stack_nonlocal): New pattern.
2732 (restore_stack_nonlocal): Likewise.
2733
2734 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
2735
2736 PR target/85404
2737 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
2738 Replace ASM_OUTPUT_LABEL with fprintf.
2739
2740 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
2741
2742 PR target/85417
2743 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
2744 Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
2745 * config/i386/i386-c.c (ix86_target_macros_internal): Also
2746 define __IBT__ and __SHSTK__ for -fcf-protection.
2747 * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
2748 TARGET_IBT.
2749 (ix86_trampoline_init): Likewise.
2750 (x86_output_mi_thunk): Likewise.
2751 (ix86_notrack_prefixed_insn_p): Likewise.
2752 (ix86_option_override_internal): Don't disallow -fcf-protection.
2753 * config/i386/i386.md (rdssp<mode>): Also enable for
2754 -fcf-protection.
2755 (incssp<mode>): Likewise.
2756 (nop_endbr): Likewise.
2757 * config/i386/i386.opt (mcet): Change help message to built-in
2758 functions only.
2759 (mibt): Likewise.
2760 (mshstk): Likewise.
2761 * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
2762 on -fcf-protection. Change -mcet, -mibt and -mshstk to only
2763 enable CET built-in functions.
2764
2765 2018-04-19 Sebastian Peryt <sebastian.peryt@intel.com>
2766
2767 * common/config/i386/i386-common.c
2768 (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
2769 OPTION_MASK_ISA_MOVDIRI_UNSET,
2770 OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
2771 (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
2772 * config.gcc (movdirintrin.h): New header.
2773 * config/i386/cpuid.h (bit_MOVDIRI,
2774 bit_MOVDIR64B): New bits.
2775 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
2776 and -mmvodir64b.
2777 * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
2778 (VOID, PVOID, PCVOID)): New function types.
2779 * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
2780 __builtin_ia32_directstoreu_u64,
2781 __builtin_ia32_movdir64b): New builtins.
2782 * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
2783 * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
2784 and -mmovdiri.
2785 (ix86_valid_target_attribute_inner_p): Ditto.
2786 (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
2787 and VOID_FTYPE_PUNSIGNED_UNSIGNED.
2788 (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
2789 * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
2790 TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
2791 * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
2792 (movdiri<mode>, movdir64b_<mode>): New.
2793 * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
2794 * config/i386/immintrin.h: Include movdirintrin.h.
2795 * config/i386/movdirintrin.h: New file.
2796 * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
2797
2798 2018-04-19 Richard Biener <rguenther@suse.de>
2799
2800 PR middle-end/85455
2801 * cfg.c (clear_bb_flags): When loop state says we have
2802 marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
2803
2804 2018-04-19 Richard Biener <rguenther@suse.de>
2805
2806 PR tree-optimization/84737
2807 * tree-vect-data-refs.c (vect_copy_ref_info): New function
2808 copying restrict info.
2809 (vect_setup_realignment): Use it.
2810 * tree-vectorizer.h (vect_copy_ref_info): Declare.
2811 * tree-vect-stmts.c (vectorizable_store): Copy ref info from
2812 the first DR to all generated stores.
2813 (vectorizable_load): Likewise for loads.
2814
2815 2018-04-19 Jakub Jelinek <jakub@redhat.com>
2816
2817 PR tree-optimization/85446
2818 * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
2819 the integral and pointer types to have the same precision.
2820
2821 * doc/install.texi: Document --disable-cet being the default and
2822 --enable-cet=auto.
2823
2824 2018-04-18 Martin Liska <mliska@suse.cz>
2825
2826 * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
2827 style.
2828
2829 2018-04-18 Martin Liska <mliska@suse.cz>
2830
2831 Revert
2832 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
2833
2834 PR ipa/83983
2835 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
2836 arguments if they are comparable.
2837
2838 2018-04-18 Martin Liska <mliska@suse.cz>
2839
2840 Revert
2841 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
2842
2843 PR lto/84805
2844 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
2845 incomplete types.
2846
2847 2018-04-18 H.J. Lu <hongjiu.lu@intel.com>
2848
2849 PR target/85388
2850 * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
2851 ENDBR after calling __morestack.
2852
2853 2018-04-18 David Malcolm <dmalcolm@redhat.com>
2854
2855 PR jit/85384
2856 * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
2857 by using gcc_base_ver to generate a gcc_driver_version, and use
2858 it when generating GCC_DRIVER_NAME.
2859 * configure: Regenerate.
2860
2861 2018-04-18 Jakub Jelinek <jakub@redhat.com>
2862
2863 PR target/81084
2864 * config.gcc: Obsolete powerpc*-*-*spe*.
2865
2866 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2867
2868 PR debug/84637
2869 * dbxout.c (dbxout_int): Perform negation in unsigned int type.
2870 (stabstr_D): Change type of unum from unsigned int to
2871 unsigned HOST_WIDE_INT. Perform negation in unsigned HOST_WIDE_INT
2872 type.
2873
2874 2018-04-17 Jim Wilson <jimw@sifive.com>
2875
2876 PR 84856
2877 * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
2878 RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
2879 Set arg_pointer_offset after using pretend_args_size.
2880
2881 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2882
2883 PR rtl-optimization/85431
2884 * dse.c (record_store): Ignore zero width stores.
2885
2886 PR sanitizer/85230
2887 * asan.c (handle_builtin_stack_restore): Adjust comment. Emit
2888 __asan_allocas_unpoison call and last_alloca_addr = new_sp before
2889 __builtin_stack_restore rather than after it.
2890 * builtins.c (expand_asan_emit_allocas_unpoison): Pass
2891 arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
2892 argument instead of virtual_dynamic_stack_rtx.
2893
2894 2018-04-17 Kelvin Nilsen <kelvin@gcc.gnu.org>
2895
2896 * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
2897 New prototype.
2898 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2899 Add note to error message to explain internal mapping of overloaded
2900 built-in function name to non-overloaded built-in function name.
2901 * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
2902 function.
2903
2904 2018-04-17 Michael Meissner <meissner@linux.vnet.ibm.com>
2905
2906 PR target/85424
2907 * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
2908 where the inputs overlap with the output.
2909
2910 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2911
2912 * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
2913 (=v, v) alternative and explicit "memory" attribute.
2914 (vec_extract_lo_<mode><mask_name>): Likewise. Also add
2915 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2916 attributes.
2917 (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
2918 "sselog1" type instead of "sselog".
2919 (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
2920 "sselog". Remove explicit "memory" attribute.
2921 (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
2922 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2923 attributes.
2924 (vec_extract_hi_v32hi): Merge all alternatives into one, use
2925 "sselog1" type instead of "sselog". Remove explicit "memory"
2926 attribute.
2927 (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
2928 use "sselog1" type instead of "sselog". Remove explicit "memory"
2929 attribute.
2930 (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
2931 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2932 attributes.
2933 (vec_extract_hi_v64qi): Merge all alternatives into one, use
2934 "sselog1" type instead of "sselog". Remove explicit "memory"
2935 attribute.
2936 (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
2937 use "sselog1" type instead of "sselog". Remove explicit "memory"
2938 attribute.
2939
2940 PR target/85430
2941 * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
2942
2943 PR middle-end/85414
2944 * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
2945 on a SUBREG.
2946
2947 2018-04-17 Martin Jambor <mjambor@suse.cz>
2948
2949 PR ipa/85421
2950 * ipa-cp.c (create_specialized_node): Call
2951 expand_all_artificial_thunks if necessary.
2952
2953 2018-04-17 Martin Liska <mliska@suse.cz>
2954
2955 PR lto/85405
2956 * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
2957 in message, remote space in between '_G' and '('.
2958
2959 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2960
2961 PR target/85281
2962 * config/i386/sse.md (reduces<mode><mask_scalar_name>,
2963 avx512f_vmcmp<mode>3<round_saeonly_name>,
2964 avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
2965 avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
2966 avx512f_rndscale<mode><round_saeonly_name>,
2967 avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
2968 avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
2969 Use %<iptr>2 instead of %2 for -masm=intel.
2970 (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
2971 avx512f_vcvttss2usi<round_saeonly_name>,
2972 avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
2973 -masm=intel.
2974 (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
2975 avx512f_vcvttsd2usi<round_saeonly_name>,
2976 avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
2977 Use %q1 instead of %1 for -masm=intel.
2978 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
2979 avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
2980 of %3 for -masm=intel.
2981 (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
2982 -masm=intel.
2983 (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
2984 -masm=intel.
2985 (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
2986 -masm=intel.
2987 (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
2988 %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
2989 %g1.
2990 (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
2991 -masm=intel.
2992 (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
2993 %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
2994 %g1 and one with %0 and %1.
2995 (avx512er_vmrcp28<mode><round_saeonly_name>,
2996 avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
2997 %1 for -masm=intel.
2998 (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
2999 avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
3000 avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
3001 of %0 and %{%4%} for -masm=intel.
3002 (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
3003 avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
3004 avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
3005 order of %0 and %{%5%}%{z%} for -masm=intel.
3006
3007 2018-04-17 Jan Hubicka <jh@suse.cz>
3008
3009 PR lto/85405
3010 * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
3011
3012 2018-04-17 Martin Liska <mliska@suse.cz>
3013
3014 PR ipa/85329
3015 * multiple_target.c (create_dispatcher_calls): Set apostrophes
3016 for target_clone error message. Make default implementation
3017 clone to be a local declaration.
3018 (separate_attrs): Add new argument and check for an empty
3019 string.
3020 (expand_target_clones): Handle it.
3021 (ipa_target_clone): Make redirection just for target_clones
3022 functions.
3023
3024 2018-04-16 Cesar Philippidis <cesar@codesourcery.com>
3025 Tom de Vries <tom@codesourcery.com>
3026
3027 PR middle-end/84955
3028 * omp-expand.c (expand_oacc_for): Add dummy false branch for
3029 tiled basic blocks without omp continue statements.
3030
3031 2018-04-16 Aaron Sawdey <acsawdey@linux.ibm.com>
3032
3033 PR target/83660
3034 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
3035 vec_extract expression as having side effects to make sure it gets
3036 a cleanup point.
3037
3038 2018-04-16 H.J. Lu <hongjiu.lu@intel.com>
3039
3040 PR target/85403
3041 * config/i386/i386.c (get_builtin_code_for_version): Check
3042 error_mark_node.
3043
3044 2018-04-16 Olga Makhotina <olga.makhotina@intel.com>
3045
3046 PR target/84331
3047 * gcc/config.gcc: Support "skylake".
3048 * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
3049 PROCESSOR_SKYLAKE.
3050 * gcc/config/i386/i386.c (m_SKYLAKE): Define.
3051 (processor_target_table): Add "skylake".
3052 (ix86_option_override_internal): Add "skylake".
3053 (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
3054 PROCESSOR_CANNONLAKE.
3055 (get_builtin_code_for_version): Fix priority for
3056 PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
3057 PROCESSOR_SKYLAKE-AVX512.
3058 * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
3059 (processor_type): Add PROCESSOR_SKYLAKE.
3060
3061 2018-04-16 Paolo Carlini <paolo.carlini@oracle.com>
3062 Jason Merrill <jason@redhat.com>
3063
3064 PR c++/85112
3065 * convert.c (convert_to_integer_1): Use direct recursion for
3066 enumeral types and types with a precision less than the number
3067 of bits in their mode.
3068
3069 2018-04-16 Julia Koval <julia.koval@intel.com>
3070
3071 PR target/84413
3072 * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
3073 X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
3074
3075 2018-04-14 Segher Boessenkool <segher@kernel.crashing.org>
3076
3077 PR target/85293
3078 * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
3079 * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
3080 and -mno-direct-move.
3081
3082 2018-04-13 Paul A. Clarke <pc@us.ibm.com>
3083
3084 PR target/83402
3085 * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
3086 Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
3087 Ensure negative shifts result in {0}.
3088
3089 2018-04-13 Vladimir Makarov <vmakarov@redhat.com>
3090
3091 PR rtl-optimization/79916
3092 * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
3093 regs (if any) to define how to gnerate SD moves when LRA is in
3094 progress.
3095
3096 2018-04-13 Jakub Jelinek <jakub@redhat.com>
3097
3098 PR rtl-optimization/85393
3099 * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
3100 * except.c (expand_dw2_landing_pad_for_region): Make static.
3101 * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
3102 a label and unconditional jump to old_bb, rather than
3103 expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
3104 basic block.
3105
3106 PR rtl-optimization/85376
3107 * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
3108 zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
3109 instead of a specific value.
3110
3111 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
3112 Bin Cheng <bin.cheng@arm.com>
3113
3114 PR tree-optimization/82965
3115 PR tree-optimization/83991
3116 * cfgloopanal.c (expected_loop_iterations_unbounded): Add
3117 by_profile_only parameter.
3118 * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
3119 information if the loop was predicted to iterate too many times.
3120 * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
3121
3122 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
3123
3124 PR lto/71991
3125 * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
3126 always inline.
3127
3128 2018-04-13 Martin Liska <mliska@suse.cz>
3129 Jakub Jelinek <jakub@redhat.com>
3130
3131 PR middle-end/81657
3132 * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
3133 * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
3134 * builtins.c (expand_builtin_memory_copy_args): Use
3135 BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
3136 handle dest_addr == pc_rtx.
3137
3138 2018-04-12 Segher Boessenkool <segher@kernel.crashing.org>
3139
3140 PR target/85291
3141 * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
3142 asked to not generate direct moves.
3143 (fix_trunc<mode>si2_stfiwx): Similar.
3144 (fix_trunc<mode>si2_internal): Similar.
3145
3146 2018-04-12 Jakub Jelinek <jakub@redhat.com>
3147
3148 PR debug/83157
3149 * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
3150 * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
3151 lookup if dest in some wider mode is known to be const0_rtx and
3152 if so, record permanent equivalence for it to be ZERO_EXTEND of
3153 the narrower mode destination.
3154
3155 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
3156
3157 * lto-streamer-out.c (output_function): Revert 259346.
3158 * omp-expand.c (expand_oacc_for): Likewise.
3159
3160 2018-04-12 Alexander Monakov <amonakov@ispras.ru>
3161
3162 PR rtl-optimization/85354
3163 * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
3164 * sel-sched.c (sel_global_init): ... here.
3165
3166 2018-04-12 Eric Botcazou <ebotcazou@adacore.com>
3167
3168 PR target/85238
3169 * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
3170 * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
3171 mode for PE-COFF targets.
3172 * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
3173 (i386_pe_asm_lto_end): Likewise.
3174 * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
3175 (TARGET_ASM_LTO_END): Likewise.
3176 * config/i386/winnt.c (saved_debug_info_level): New static variable.
3177 (i386_pe_asm_lto_start): New function.
3178 (i386_pe_asm_lto_end): Likewise.
3179
3180 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
3181 Richard Biener <rguenther@suse.de>
3182
3183 PR middle-end/84955
3184 * lto-streamer-out.c (output_function): Fix CFG loop state before
3185 streaming out.
3186 * omp-expand.c (expand_oacc_for): Handle calls to internal
3187 functions like regular functions.
3188
3189 2018-04-12 Richard Biener <rguenther@suse.de>
3190
3191 PR lto/85371
3192 * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
3193 for the early LTO debug to properly generate references to it
3194 during DIE emission. Do not re-use that for the skeleton for
3195 split-dwarf.
3196 (dwarf2out_early_finish): Likewise.
3197
3198 2018-04-12 Jakub Jelinek <jakub@redhat.com>
3199
3200 PR target/85328
3201 * config/i386/sse.md
3202 (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
3203 <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
3204 vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
3205 vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
3206 and output is a reg, avoid creating invalid lowpart subreg, but
3207 instead split into a 512-bit move. Don't split if not AVX512VL,
3208 input is xmm16+ reg and output is a mem.
3209 (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
3210 vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
3211 xmm16+ reg and output is a mem.
3212
3213 2018-04-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
3214
3215 * config/s390/s390.c (s390_output_indirect_thunk_function): Check
3216 also for flag_dwarf2_cfi_asm.
3217
3218 2018-04-12 Jakub Jelinek <jakub@redhat.com>
3219
3220 PR rtl-optimization/85342
3221 * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
3222 a bool scalar var inside of the loop instead. Don't try to update
3223 recog_data.operand after failed apply_change_group.
3224
3225 2018-04-12 Tom de Vries <tom@codesourcery.com>
3226
3227 PR target/85296
3228 * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
3229 (nvptx_assemble_decl_begin): Add undefined param. Declare undefined
3230 array with flexible array member as array without given dimension.
3231 (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
3232 argument for undefined param to true.
3233
3234 2018-04-11 Aaron Sawdey <acsawdey@linux.ibm.com>
3235
3236 PR target/85321
3237 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
3238 -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
3239 from PowerPC section.
3240 * config/rs6000/sysv4.opt (mcall-): Improve help text.
3241 * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
3242 help text that is too long.
3243 * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
3244 help text that is too long.
3245 * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
3246 help text that is too long.
3247
3248 2018-04-11 Uros Bizjak <ubizjak@gmail.com>
3249
3250 * config/alpha/alpha.md (stack_probe_internal): Rename
3251 from "probe_stack". Update all callers.
3252
3253 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
3254
3255 PR rtl-optimization/84566
3256 * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
3257 sched_macro_fuse_insns.
3258
3259 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
3260
3261 PR target/84301
3262 * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
3263 (compute_block_dependences): ... from here.
3264
3265 2018-04-11 Jakub Jelinek <jakub@redhat.com>
3266
3267 PR tree-optimization/85331
3268 * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
3269 from int to HOST_WIDE_INT.
3270
3271 2018-04-11 Martin Jambor <mjambor@suse.cz>
3272
3273 PR ipa/84149
3274 * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
3275 (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
3276 not the same as the source val.
3277 (cgraph_edge_brings_value_p): New parameter.
3278 (gather_edges_for_value): Pass destination value to
3279 cgraph_edge_brings_value_p.
3280 (perhaps_add_new_callers): Likewise.
3281 (get_info_about_necessary_edges): Likewise and exclude values brought
3282 only by self-recursive edges.
3283 (create_specialized_node): Redirect only clones of self-calling edges.
3284 (+self_recursive_pass_through_p): New function.
3285 (find_more_scalar_values_for_callers_subset): Use it.
3286 (find_aggregate_values_for_callers_subset): Likewise.
3287 (known_aggs_to_agg_replacement_list): Removed.
3288 (decide_whether_version_node): Re-calculate known constants for all
3289 remaining context clones.
3290
3291 2018-04-11 Richard Biener <rguenther@suse.de>
3292
3293 PR lto/85339
3294 * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
3295 from early DWARF output.
3296 (dwarf2out_early_finish): Output line info unconditionally into
3297 early DWARF and add reference to it.
3298
3299 2018-04-11 Jakub Jelinek <jakub@redhat.com>
3300
3301 PR target/85281
3302 * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
3303 (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
3304 other than V2DFmode using iptr mode attribute.
3305 (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
3306
3307 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
3308
3309 PR rtl-optimization/84659
3310 * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
3311
3312 2018-04-11 Jakub Jelinek <jakub@redhat.com>
3313
3314 PR debug/85302
3315 * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
3316 SIZEP is NULL.
3317 (output_loc_list): Pass address of a dummy size variable even in the
3318 locview handling loop.
3319 (index_location_lists): Add comment on why skip_loc_list_entry can't
3320 call size_of_locs.
3321
3322 2018-04-11 Thomas Preud'homme <thomas.preudhomme@arm.com>
3323
3324 PR target/85261
3325 * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
3326 into register.
3327
3328 2018-04-10 Aaron Sawdey <acsawdey@linux.ibm.com>
3329
3330 PR target/85321
3331 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
3332 -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
3333 and -mstring-compare-inline-limit.
3334
3335 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
3336
3337 PR target/85287
3338 * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
3339 for stack clash protection in a register whenever we need it to be in
3340 a register.
3341
3342 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
3343
3344 * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
3345 Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
3346
3347 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
3348
3349 PR target/85321
3350 * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
3351 the help text.
3352 (mlong-double-): Ditto.
3353 * config/rs6000/sysv4.opt (msdata=): Ditto.
3354 (mtls-size=): Ditto.
3355
3356 2018-04-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
3357
3358 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
3359 erroneous entries for
3360 "vector int vec_ldl (int, long int *)", and
3361 "vector unsigned int vec_ldl (int, unsigned long int *)".
3362 Add comments and entries for
3363 "vector bool char vec_ldl (int, bool char *)",
3364 "vector bool short vec_ldl (int, bool short *)",
3365 "vector bool int vec_ldl (int, bool int *)",
3366 "vector bool long long vec_ldl (int, bool long long *)",
3367 "vector pixel vec_ldl (int, pixel *)",
3368 "vector long long vec_ldl (int, long long *)",
3369 "vector unsigned long long vec_ldl (int, unsigned long long *)".
3370 * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
3371 type tree bool_long_long_type_node and correct definition of
3372 bool_V2DI_type_node to make reference to this new type tree.
3373 (rs6000_mangle_type): Replace erroneous reference to
3374 bool_long_type_node with bool_long_long_type_node.
3375 * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
3376 comments to emphasize sign distinctions for char and int types and
3377 replace RS6000_BTI_bool_long constant with
3378 RS6000_BTI_bool_long_long constant. Also add comment to restrict
3379 use of RS6000_BTI_pixel.
3380 (bool_long_type_node): Remove this macro definition.
3381 (bool_long_long_type_node): New macro definition
3382
3383 2018-04-10 Jakub Jelinek <jakub@redhat.com>
3384
3385 PR rtl-optimization/85300
3386 * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
3387 into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
3388 simplify_unary_operation fails.
3389
3390 2018-04-10 Martin Liska <mliska@suse.cz>
3391
3392 * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
3393 cgraph_edge and ipa_ref.
3394
3395 2018-04-10 Jakub Jelinek <jakub@redhat.com>
3396
3397 PR target/85177
3398 PR target/85255
3399 * config/i386/sse.md
3400 (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
3401 computation of the VEC_MERGE selector from mask.
3402 (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
3403 Fix decoding of the VEC_MERGE selector into mask.
3404
3405 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
3406
3407 PR tree-optimization/85286
3408 * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
3409
3410 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
3411
3412 * final.c (final_1): Set insn_last_address as well as
3413 insn_current_address.
3414
3415 2018-04-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3416
3417 PR target/85173
3418 * explow.c (emit_stack_probe): Call validize_mem on memory location
3419 before passing it to gen_probe_stack. Create address operand and
3420 legitimize it for the probe_stack_address case.
3421
3422 2018-04-09 Jan Hubicka <jh@suse.cz>
3423
3424 PR lto/85078
3425 * ipa-devirt.c (rebuild_type_inheritance-hash): New.
3426 * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
3427 * tree.c (free_lang_data_in_type): Fix handling of binfos;
3428 walk basetypes.
3429 (free_lang_data): Rebuild type inheritance graph.
3430
3431 2018-04-09 Martin Sebor <msebor@redhat.com>
3432
3433 * invoke.texi (-finline-small-functions): Mention other optimization
3434 options.
3435 (-findirect-inlining, -fpartial-inlining): Same.
3436 (-finline-functions-called-once): Same.
3437 (-freorder-blocks-and-partition): Same.
3438
3439 2018-04-09 Jan Hubicka <jh@suse.cz>
3440
3441 PR rtl/84058
3442 * cfgcleanup.c (try_forward_edges): Do not give up on crossing
3443 jumps; choose last target that matches the criteria (i.e.
3444 no partition changes for non-crossing jumps).
3445 * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
3446 support for redirecting crossing jumps to non-crossing.
3447
3448 2018-04-09 Alexey Brodkin <abrodkin@synopsys.com>
3449
3450 * config/arc/arc.c (arc_expand_prologue): Set stack usage info
3451 also for naked functions.
3452
3453 2018-04-09 Claudiu Zissulescu <claziss@synopsys.com>
3454
3455 * config/arc/arc.md (add_shift): New pattern.
3456 (add_shift2): Likewise.
3457 (sub_shift): Likewise.
3458 (sub_shift_cmp0_noout): Likewise.
3459 (compare_si_ashiftsi): Likewise.
3460 (xbfu_cmp0_noout): New combine pattern.
3461 (xbfu_cmp0"): Likewise.
3462 (movsi_set_cc_insn): Place the predicable variant first.
3463 (commutative_binary_cmp0_noout): Remove clobber.
3464 (commutative_binary_cmp0): New pattern.
3465 (noncommutative_binary_cmp0): Likewise.
3466 (noncommutative_binary_cmp0_noout): Likewise.
3467 (noncommutative_binary_comparison_result_used): Removed.
3468 (rsub_cmp0): New pattern.
3469 (rsub_cmp0_noout): Likewise.
3470 (extzvsi): Changed, keep only meaningful variants.
3471 (SQH, SEZ): New iterators.
3472 (SQH_postfix): New mode attribute.
3473 (SEZ_prefix): New code attribute.
3474 (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
3475 (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
3476 * config/arc/predicates.md (cc_set_register): Use CC_REG instead
3477 of numerical value.
3478 (noncommutative_operator): Check the availability of barrel
3479 shifter option.
3480
3481 2018-04-09 Richard Biener <rguenther@suse.de>
3482
3483 PR tree-optimization/85284
3484 * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
3485 Only use the niter constraining form of simple_iv when the exit
3486 is always executed.
3487
3488 2018-04-09 Tom de Vries <tom@codesourcery.com>
3489
3490 PR target/84041
3491 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
3492 (define_expand "*memory_barrier"): New define_expand.
3493 (define_insn "memory_barrier"): New insn.
3494
3495 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3496
3497 PR rtl-optimization/80463
3498 PR rtl-optimization/83972
3499 PR rtl-optimization/83480
3500
3501 * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
3502 correct producer for the insn.
3503 (tidy_control_flow): Fixup seqnos in case of debug insns.
3504
3505 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3506
3507 PR rtl-optimization/83913
3508
3509 * sel-sched-ir.c (merge_expr_data): Choose the middle between two
3510 different sched-times when merging exprs.
3511
3512 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3513
3514 PR rtl-optimization/83962
3515
3516 * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
3517 tidy_fallthru_edge and tidy_control_flow.
3518
3519 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3520
3521 PR rtl-optimization/83530
3522
3523 * sel-sched.c (force_next_insn): New global variable.
3524 (remove_insn_for_debug): When force_next_insn is true, also leave only
3525 next insn in the ready list.
3526 (sel_sched_region): When the region wasn't scheduled, make another pass
3527 over it with force_next_insn set to 1.
3528
3529 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
3530
3531 * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
3532 into tm_file.
3533 * config/nds32/constants.md (unspec_volatile_element): Add enum values
3534 for interrupt control.
3535 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
3536 functions for interrupt control.
3537 * config/nds32/nds32-intrinsic.md: Likewise.
3538 * config/nds32/nds32_intrinsic.h: Likewise.
3539 * config/nds32/nds32.h (nds32_builtins): Likewise.
3540
3541 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
3542
3543 * config/nds32/nds32.c (nds32_init_machine_status,
3544 nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
3545 strict_aligned_p field.
3546 (nds32_expand_to_rtl_hook): New function.
3547 (TARGET_EXPAND_TO_RTL_HOOK): Define.
3548 * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
3549
3550 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3551 Chung-Ju Wu <jasonwucj@gmail.com>
3552
3553 * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
3554 * config/nds32/nds32-n7.md: New file.
3555 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
3556 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
3557 pipeline.
3558 * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
3559 * config/nds32/nds32.md (pipeline_model): Add n7.
3560 * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
3561 * config/nds32/pipelines.md: Include n7 settings.
3562
3563 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3564 Chung-Ju Wu <jasonwucj@gmail.com>
3565
3566 * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
3567 * config/nds32/nds32-e8.md: New file.
3568 * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
3569 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
3570 pipeline.
3571 * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
3572 * config/nds32/nds32.md (pipeline_model): Add e8.
3573 * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
3574 * config/nds32/pipelines.md: Include e8 settings.
3575
3576 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3577 Chung-Ju Wu <jasonwucj@gmail.com>
3578
3579 * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
3580 * config/nds32/nds32-n8.md: New file.
3581 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
3582 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
3583 pipeline.
3584 * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
3585 * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
3586 * config/nds32/nds32.md (pipeline_model): Add n8.
3587 * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
3588 * config/nds32/pipelines.md: Include n8 settings.
3589
3590 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3591 Chung-Ju Wu <jasonwucj@gmail.com>
3592
3593 * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
3594 * config/nds32/nds32-n9-2r1w.md: New file.
3595 * config/nds32/nds32-n9-3r2w.md: New file.
3596 * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
3597 nds32_register_ports): New or modify for cpu n9.
3598 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
3599 pipeline.
3600 * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
3601 * config/nds32/nds32-utils.c: New file.
3602 * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
3603 TARGET_MUL_SLOW): Define.
3604 * config/nds32/nds32.md (pipeline_model): New attribute.
3605 * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
3606 New options that support cpu n9.
3607 * config/nds32/pipelines.md: Include n9 settings.
3608 * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
3609
3610 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
3611
3612 * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
3613 information if necessary.
3614 (output_cond_branch_compare_zero): Likewise.
3615 * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
3616 (nds32_target_alignment): Refine for alignment.
3617 * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
3618 (FUNCTION_BOUNDARY): Modify.
3619 * config/nds32/nds32.md (call_internal, call_value_internal): Consider
3620 align case.
3621 * config/nds32/nds32.opt (malways-align, malign-functions): New.
3622
3623 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
3624
3625 * config/nds32/constants.md (unspec_volatile_element): Add values for
3626 TLB operation and data prefetch.
3627 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
3628 functions for TLB operation and data prefetch.
3629 * config/nds32/nds32-intrinsic.md: Likewise.
3630 * config/nds32/nds32_intrinsic.h: Likewise.
3631 * config/nds32/nds32.c (nds32_dpref_names): Likewise.
3632 (nds32_print_operand): Likewise.
3633 * config/nds32/nds32.h (nds32_builtins): Likewise.
3634
3635 2018-04-07 Thomas Koenig <tkoenig@gcc.gnu.org>
3636 Andrew Pinski <pinsika@gcc.gnu.org>
3637
3638 PR middle-end/82976
3639 * match.pd: Use constant_boolean_node of correct type instead of
3640 boolean_true_node or boolean_false_node for simplifying
3641 pointer comparisons to zero.
3642
3643 2018-04-07 Jakub Jelinek <jakub@redhat.com>
3644
3645 PR tree-optimization/80021
3646 * tree.c (verify_type_variant): Make error call in verify_variant_match
3647 translatable and remove final full stop.
3648
3649 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3650
3651 * config/nds32/constants.md (unspec_volatile_element): Add
3652 UNSPEC_VOLATILE_EH_RETURN.
3653 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
3654 nds32_output_stack_pop): Support dwarf exception handling process.
3655 * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
3656 * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
3657 exception handling process.
3658 (nds32_compute_stack_frame): Likewise.
3659 (nds32_return_addr_rtx): Likewise.
3660 (nds32_initial_elimination_offset): Likewise.
3661 (nds32_expand_prologue): Likewise.
3662 (nds32_expand_epilogue): Likewise.
3663 (nds32_dynamic_chain_address): New function.
3664 * config/nds32/nds32.h (machine_function): Add fields for dwarf
3665 exception handling.
3666 (DYNAMIC_CHAIN_ADDRESS): Define.
3667 (EH_RETURN_DATA_REGNO): Define.
3668 (EH_RETURN_STACKADJ_RTX): Define.
3669 * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
3670 patterns for dwarf exception handling.
3671
3672 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3673
3674 * config/nds32/nds32.h: Clean up obsolete macros.
3675
3676 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3677
3678 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3679 Add enum values for particular instructions.
3680 * config/nds32/nds32-intrinsic.c: Implementation of expanding
3681 particular intrinsic functions.
3682 * config/nds32/nds32-intrinsic.md: Likewise.
3683 * config/nds32/nds32_intrinsic.h: Likewise.
3684 * config/nds32/nds32.h (nds32_builtins): Likewise.
3685 * config/nds32/nds32.md (type): Add pbsad and pbsada.
3686 (btst, ave): New patterns for particular instructions.
3687
3688 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3689
3690 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3691 Add enum values for atomic load/store and memory sync.
3692 * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
3693 and memory sync.
3694 * config/nds32/nds32-intrinsic.md: Likewise.
3695 * config/nds32/nds32_intrinsic.h: Likewise.
3696 * config/nds32/nds32.h (nds32_builtins): Likewise.
3697
3698 2018-04-07 Jakub Jelinek <jakub@redhat.com>
3699
3700 PR tree-optimization/85257
3701 * fold-const.c (native_encode_vector): If not all elts could fit
3702 and off is -1, return 0 rather than offset.
3703 * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
3704 (offseti - offset2) / BITS_PER_UNIT as 4th argument to
3705 native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't
3706 adjust buffer in native_interpret_expr call.
3707
3708 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3709
3710 * config/nds32/constants.md (unspec_volatile_element): Add cache
3711 control enum values.
3712 * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
3713 * config/nds32/nds32-intrinsic.md: Add cache control patterns.
3714 * config/nds32/nds32.c (nds32_cctl_names): New.
3715 (nds32_print_operand): Handle cache control register names.
3716 * config/nds32/nds32.h (nds32_builtins): New enum values.
3717 * config/nds32/nds32_intrinsic.h: Add cache control enum types and
3718 macros.
3719 * config/nds32/nds32.md (type): Add mmu.
3720 * config/nds32/pipelines.md (simple_insn): Add mmu.
3721
3722 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3723
3724 * config/nds32/nds32.md (type): Remove call.
3725 * config/nds32/pipelines.md (simple_insn): Likewise.
3726
3727 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3728
3729 * config/nds32/constants.md (unspec_volatile_element): Add
3730 UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
3731 UNSPEC_VOLATILE_FMFCFG.
3732 * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
3733 description for fmfcfg and fmfcsr.
3734 (bdesc_1arg): Add fmtcsr.
3735 (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
3736 (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
3737 * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
3738 unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
3739 unspec_fmfcfg): New patterns.
3740 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
3741 NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
3742 NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
3743 * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
3744 __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
3745 __nds32__fmfcfg): Define.
3746
3747 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3748
3749 * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
3750 intrinsic register names.
3751 * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
3752 intrinsic register enum values and macros.
3753
3754 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3755
3756 * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
3757 for load/store addressing form.
3758 (nds32_print_operand_address): Likewise.
3759
3760 2018-04-06 Eric Botcazou <ebotcazou@adacore.com>
3761
3762 PR target/85196
3763 * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
3764 based on LABEL_REF. Remove useless assertion.
3765 (pic_address_needs_scratch): Fix formatting.
3766 (sparc_legitimize_pic_address): Minor tweaks.
3767 (sparc_delegitimize_address): Adjust assertion accordingly.
3768 * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
3769 into symbolic_operand.
3770 (movsi_high_pic_label_ref): Likewise.
3771 (movsi_lo_sum_pic_label_ref): Likewise.
3772 (movdi_pic_label_ref): Likewise.
3773 (movdi_high_pic_label_ref): Likewise.
3774 (movdi_lo_sum_pic_label_ref): Likewise.
3775
3776 2018-04-06 Amaan Cheval <amaan.cheval@gmail.com>
3777
3778 * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
3779 custom LIB_SPEC setup.
3780
3781 2018-04-06 Ruslan Bukin <br@bsdpad.com>
3782 Kito Cheng <kito.cheng@gmail.com>
3783
3784 * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
3785 * config/riscv/freebsd.h: New.
3786
3787 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
3788
3789 * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
3790 * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
3791 file.
3792
3793 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
3794 Kito Cheng <kito.cheng@gmail.com>
3795
3796 * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
3797 nds32_output_call, nds32_symbol_binds_local_p): New functions.
3798 * config/nds32/nds32-protos.h (nds32_output_call,
3799 nds32_output_return): Declare.
3800 * config/nds32/nds32.md: Refine all the call and return patterns.
3801
3802 2018-04-06 Jakub Jelinek <jakub@redhat.com>
3803
3804 PR debug/85252
3805 * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
3806 build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
3807
3808 PR rtl-optimization/84872
3809 * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
3810 nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
3811 EDGE_CROSSING edge.
3812
3813 2018-04-06 Tamar Christina <tamar.christina@arm.com>
3814
3815 * expr.c (copy_blkmode_to_reg): Revert 254862.
3816 * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
3817
3818 2018-04-06 Richard Biener <rguenther@suse.de>
3819
3820 PR middle-end/85244
3821 * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
3822 after seeing a component reference with an adjacent field. Treat
3823 refs to arrays at struct end of external decls similar to
3824 refs to unconstrained commons.
3825
3826 2018-04-06 Jakub Jelinek <jakub@redhat.com>
3827
3828 PR sanitizer/85213
3829 * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
3830 look through SAVE_EXPRs with non-side-effects argument. Adjust
3831 recursive calls.
3832 (fold_comparison): Adjust twoval_comparison_p caller, don't handle
3833 save_p here.
3834
3835 2018-04-06 Richard Biener <rguenther@suse.de>
3836
3837 PR middle-end/85180
3838 * alias.c (find_base_term): New wrapper around find_base_term
3839 unwinding CSELIB_VAL_PTR changes.
3840 (find_base_term): Do not restore CSELIB_VAL_PTR during the
3841 recursion.
3842
3843 2018-04-06 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
3844
3845 * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
3846 instructions.
3847 * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
3848 constant definitions.
3849 ("nop"): lr 0,0 -> nopr r0
3850 ("nop_lr0", "nop_lr1"): New insn definitions.
3851
3852 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
3853
3854 * config/nds32/nds32.md (*stack_push, *stack_pop): Use
3855 NDS32_V3PUSH_AVAILABLE_P macro.
3856
3857 2018-04-06 Monk Chiang <sh.chiang04@gmail.com>
3858 Chung-Ju Wu <jasonwucj@gmail.com>
3859
3860 * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
3861 (nds32*-*-*): Add float and fpu_config into supported_defaults.
3862 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
3863 Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
3864 * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
3865 UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
3866 * config/nds32/constraints.md: New constraints and checking for hard
3867 float configuration.
3868 * config/nds32/iterators.md: New mode iterator and attribute for hard
3869 float configuration.
3870 * config/nds32/nds32-doubleword.md: Use hard float alternatives and
3871 patterns.
3872 * config/nds32/nds32-fpu.md: New file.
3873 * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
3874 deal with hard float code generation.
3875 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
3876 ARCH_V3S.
3877 (abi_type, float_reg_number): New enum type.
3878 * config/nds32/nds32-predicates.c: New predicates for hard float.
3879 * config/nds32/nds32-protos.h: Declare functions for hard float.
3880 * config/nds32/nds32.c: Implementation for hard float configuration.
3881 * config/nds32/nds32.h: Definitions for hard float configuration.
3882 * config/nds32/nds32.md: Include hard float machine description and
3883 modify patterns for hard float configuration.
3884 * config/nds32/nds32.opt: New options for hard float configuration.
3885 * config/nds32/predicates.md: New predicates for hard float
3886 configuration.
3887
3888 2018-04-06 Kuan-Lin Chen <kuanlinchentw@gmail.com>
3889
3890 * common/config/nds32/nds32-common.c
3891 (nds32_option_optimization_table): Enable -mreleax-hint by default.
3892
3893 2018-04-05 Jakub Jelinek <jakub@redhat.com>
3894
3895 PR middle-end/85195
3896 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
3897 CONSTRUCTOR_ELT (ctor, ...)->value.
3898
3899 2018-04-05 Uros Bizjak <ubizjak@gmail.com>
3900
3901 PR target/85193
3902 * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
3903
3904 2018-04-05 Tom de Vries <tom@codesourcery.com>
3905
3906 PR target/85204
3907 * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
3908 cond jump.
3909
3910 2018-04-05 Shiva Chen <shiva0217@gmail.com>
3911 Kito Cheng <kito.cheng@gmail.com>
3912
3913 * config/nds32/constraints.md (U33): Fine-tune checking condition.
3914 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
3915 * config/nds32/nds32.h (nds32_16bit_address_type): Add
3916 ADDRESS_POST_MODIFY_LO_REG_IMM3U.
3917
3918 2018-04-05 Shiva Chen <shiva0217@gmail.com>
3919 Kito Cheng <kito.cheng@gmail.com>
3920
3921 * config/nds32/constraints.md (Ufe): New memory constraint.
3922 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
3923 nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
3924 * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
3925 operands.
3926 * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
3927 * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
3928
3929 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3930
3931 * config/nds32/nds32.md: Use optimize_size in the condition for
3932 alu-shift instructions.
3933
3934 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3935
3936 * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
3937
3938 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3939
3940 * config/nds32/nds32.md (negsi2): Refine pattern.
3941
3942 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
3943 Chung-Ju Wu <jasonwucj@gmail.com>
3944
3945 * config/nds32/iterators.md (shift_rotate): New code iterator.
3946 (shift): New code attribute.
3947 * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
3948 * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
3949 * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
3950 * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
3951 bit-wise operations.
3952 (andsi3, *andsi3): Ditto.
3953 (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
3954 (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
3955 (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
3956 * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
3957 nds32_ior_operand, nds32_xor_operand): New predicates.
3958
3959 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3960
3961 * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
3962 (addsi3, subsi3): ... this.
3963
3964 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3965
3966 * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
3967
3968 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3969
3970 * config/nds32/nds32.md: Adjust indention.
3971
3972 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
3973
3974 * config/nds32/nds32.md (feature): New attribute.
3975
3976 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3977
3978 * config/nds32/nds32.md (subtype): New attribute.
3979
3980 2018-04-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
3981
3982 PR target/85203
3983 * config/arm/arm-builtins.c (arm_expand_builtin): Change
3984 expansion to perform a bitwise AND of the argument followed by a
3985 boolean negation of the result.
3986
3987 2018-04-04 Peter Bergner <bergner@vnet.ibm.com>
3988
3989 PR rtl-optimization/84878
3990 * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
3991 the basic block. Assert the use reference is not artificial and that
3992 it has an associated insn.
3993
3994 2018-04-04 Michael Matz <matz@suse.de>
3995
3996 * builtins.c (compute_objsize): Pass correct operand
3997 to array_at_struct_end_p.
3998
3999 2018-04-04 Richard Biener <rguenther@suse.de>
4000
4001 PR lto/85176
4002 * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
4003 from contexts for DINFO_LEVEL_TERSE and below.
4004
4005 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
4006
4007 * config/nds32/nds32-doubleword.md (move_<mode>): Require
4008 resiter_operand condition.
4009 * config/nds32/nds32.md (*move<mode>): Ditto.
4010
4011 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
4012 Monk Chiang <sh.chiang04@gmail.com>
4013
4014 * config/nds32/nds32.md (movmisalign<mode>): New pattern.
4015
4016 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
4017
4018 * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
4019
4020 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
4021 Kito Cheng <kito.cheng@gmail.com>
4022
4023 * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
4024 nds32_cond_code_str, output_cond_branch,
4025 output_cond_branch_compare_zero, nds32_expand_cbranch,
4026 nds32_expand_cstore, nds32_expand_movcc,
4027 nds32_output_cbranchsi4_equality_zero,
4028 nds32_output_cbranchsi4_equality_reg,
4029 nds32_output_cbranchsi4_equality_reg_or_const_int,
4030 nds32_output_cbranchsi4_greater_less_zero: New functions.
4031 * config/nds32/nds32-protos.h (nds32_expand_cbranch,
4032 nds32_expand_cstore, nds32_expand_movcc,
4033 nds32_output_cbranchsi4_equality_zero,
4034 nds32_output_cbranchsi4_equality_reg,
4035 nds32_output_cbranchsi4_equality_reg_or_const_int,
4036 nds32_output_cbranchsi4_greater_less_zero): Declare.
4037 * config/nds32/predicates.md (nds32_movecc_comparison_operator,
4038 nds32_rimm11s_operand): New predicates.
4039 * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
4040 * config/nds32/nds32.md: Rewrite all the branch and conditional move
4041 patterns.
4042
4043 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
4044
4045 * config/nds32/nds32-doubleword.md: Refine all the instruction type.
4046 * config/nds32/nds32.md: Ditto.
4047 * config/nds32/pipelines.md: Ditto.
4048
4049 2018-04-04 Richard Biener <rguenther@suse.de>
4050
4051 PR tree-optimization/85168
4052 * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
4053 propagating abnormals.
4054
4055 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
4056
4057 * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
4058
4059 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
4060 Kito Cheng <kito.cheng@gmail.com>
4061
4062 * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
4063 * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
4064 * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
4065 (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
4066 * config/nds32/nds32.md (sibcall_internal): New.
4067 (sibcall_register): Remove.
4068 (sibcall_immediate): Remove.
4069 (sibcall_value_internal): New.
4070 (sibcall_value_register): Remove.
4071 (sibcall_value_immediate): Remove.
4072 * config/nds32/predicates.md (nds32_general_register_operand): New.
4073 (nds32_call_address_operand): New.
4074
4075 2018-04-03 Jakub Jelinek <jakub@redhat.com>
4076
4077 PR rtl-optimization/85167
4078 * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
4079 bb_defs if *split_p, instead preinitialize it to NULL.
4080
4081 PR tree-optimization/85156
4082 * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
4083 evaluating the argument multiple times.
4084
4085 2018-04-03 Bill Schmidt <wschmidt@linux.ibm.com>
4086
4087 * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
4088 than vector.
4089 (_mm_cvtpd_ps): Likewise.
4090 (_mm_cvttpd_epi32): Likewise.
4091 * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
4092 * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
4093 vector, pixel, and bool following altivec.h include.
4094
4095 2018-04-03 Martin Sebor <msebor@redhat.com>
4096
4097 * doc/extend.texi (Common Function Attributes): Clarify.
4098 (const attribute): Likewise.
4099 (pure attribute): Likewise.
4100
4101 2018-04-03 Jakub Jelinek <jakub@redhat.com>
4102
4103 PR target/85169
4104 * config/i386/i386.c (ix86_expand_vector_set): Use
4105 HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix.
4106
4107 2018-04-03 Uros Bizjak <ubizjak@gmail.com>
4108
4109 * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
4110 instructions when changing rounding bits to preserve precision bits
4111 in the x87 control word.
4112
4113 2018-04-03 Martin Liska <mliska@suse.cz>
4114
4115 PR tree-optimization/82491
4116 * rtl.h (strip_offset_and_add): Replace += suboffset with
4117 poly_uint64 () + suboffset.
4118
4119 2018-03-29 Martin Liska <mliska@suse.cz>
4120 Martin Jambor <mjambor@suse.cz>
4121
4122 PR ipa/84947
4123 * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
4124 param_type is not an integral or pointer type.
4125
4126 2018-04-03 Richard Biener <rguenther@suse.de>
4127
4128 * sese.h (recompute_all_dominators): Remove.
4129
4130 2018-04-02 Martin Sebor <msebor@redhat.com>
4131
4132 * doc/invoke.texi (-Wrestrict): Fix typos.
4133
4134 2018-04-02 Jim Wilson <jimw@sifive.com>
4135
4136 * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
4137 * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
4138 (<optab>di3, <optab>si3_extend): Likewise.
4139 (<optab>si3_mask, <optab>si3_mask_1): New.
4140 (<optab>di3_mask, <optab>di3_mask_1): New.
4141 (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
4142 (lshrsi3_zero_extend_1): Use VOIDmode shift count.
4143 * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
4144
4145 2018-04-02 Gerald Pfeifer <gerald@pfeifer.com>
4146
4147 * doc/cpp.texi (Variadic Macros): Fix line continuation in an
4148 example.
4149
4150 2018-04-02 Chung-Ju Wu <jasonwucj@gmail.com>
4151
4152 * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
4153 (nds32_canonicalize_comparison): New function.
4154
4155 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
4156 Kito Cheng <kito.cheng@gmail.com>
4157 Kuan-Lin Chen <kuanlinchentw@gmail.com>
4158
4159 * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
4160 * config/nds32/constants.md (unspec_volatile_element): Add
4161 UNSPEC_VOLATILE_RELAX_GROUP.
4162 * config/nds32/nds32-relax-opt.c: New file.
4163 * config/nds32/nds32-predicates.c
4164 (nds32_symbol_load_store_p): New function.
4165 * config/nds32/nds32-protos.h
4166 (nds32_symbol_load_store_p): Declare function.
4167 (make_pass_nds32_relax_opt): Declare new rtl pass function.
4168 * config/nds32/nds32.c
4169 (nds32_register_pass): New function to register pass.
4170 (nds32_register_passes): New function to register passes.
4171 * config/nds32/nds32.md (relax_group): New pattern.
4172 * config/nds32/nds32.opt (mrelax-hint): New option.
4173 * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
4174
4175 2018-04-01 Kito Cheng <kito.cheng@gmail.com>
4176
4177 * config/nds32/t-nds32: Modify files dependency.
4178
4179 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
4180
4181 * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
4182 (PROFILE_HOOK): Define its implementation.
4183
4184 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
4185
4186 * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
4187 type and 32-bit size.
4188
4189 2018-04-01 Jakub Jelinek <jakub@redhat.com>
4190
4191 PR middle-end/85090
4192 * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
4193 (V_128_256): New mode iterator.
4194 (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
4195 (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
4196 (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
4197 of V.
4198 * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
4199 V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
4200
4201 2018-03-31 Segher Boessenkool <segher@kernel.crashing.org>
4202
4203 PR target/83315
4204 * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
4205 NaN inputs correctly.
4206
4207 2018-03-30 Peter Bergner <bergner@vnet.ibm.com>
4208
4209 PR target/80546
4210 * config/rs6000/vsx.md (??r): New mode attribute.
4211 (*vsx_mov<mode>_64bit): Use it.
4212 (*vsx_mov<mode>_32bit): Likewise.
4213
4214 2018-03-30 Martin Sebor <msebor@redhat.com>
4215
4216 PR tree-optimization/84818
4217 * builtins.c (check_access): Use warning_n.
4218
4219 2018-03-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
4220
4221 PR target/83822
4222 * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
4223 condition.
4224 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
4225 condition.
4226
4227 2018-03-30 Julia Koval <julia.koval@intel.com>
4228
4229 PR target/84413
4230 * x86-tune.def (movx, partial_reg_dependency): Enable for
4231 m_SKYLAKE_AVX512.
4232
4233 2018-03-29 Vladimir Makarov <vmakarov@redhat.com>
4234
4235 PR inline-asm/84985
4236 * lra-constraints.c (process_alt_operands): Move setting
4237 this_alternative_matches below.
4238
4239 2018-03-29 Martin Liska <mliska@suse.cz>
4240
4241 PR lto/84995.
4242 * doc/invoke.texi: Document how LTO works with debug info.
4243 Describe auto-load support of binutils. Mention 'x86-64'
4244 as valid option value of -march option.
4245
4246 2018-03-29 Jakub Jelinek <jakub@redhat.com>
4247
4248 * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
4249
4250 PR c/85094
4251 * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
4252 For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
4253 OEP_NO_HASH_CHECK for recursive call, to avoid exponential
4254 checking.
4255
4256 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
4257
4258 PR target/84912
4259 * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
4260 (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
4261 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
4262 for RS6000_BTM_POWERPC64.
4263 (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
4264 (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
4265 * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
4266 definition.
4267 (DIVDE): Use it.
4268 (DIVDEU): Likewise.
4269
4270 2018-03-28 Carl Love <cel@us.ibm.com>
4271
4272 Revert
4273 2017-09-27 Carl Love <cel@us.ibm.com>
4274
4275 * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
4276 (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
4277 * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
4278 fctiw instruction.
4279
4280 2018-03-28 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
4281
4282 * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
4283 instead of __vector bool.
4284 (_mm_max_pu8): Likewise.
4285 (_mm_min_pi16): Likewise.
4286
4287 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
4288
4289 PR target/84912
4290 * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
4291 (DIVWEUO): Likewise.
4292 (DIVDEO): Likewise.
4293 (DIVDEUO): Likewise.
4294 * config/rs6000/rs6000.c (builtin_function_type): Remove support for
4295 DIVWEUO and DIVDEUO.
4296 * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
4297 (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
4298 (div_extend): Likewise.
4299 * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
4300 builtin function.
4301 (__builtin_divweuo): Likewise.
4302 (__builtin_divdeo): Likewise.
4303 (__builtin_divdeuo): Likewise.
4304
4305 2018-03-28 Jakub Jelinek <jakub@redhat.com>
4306
4307 PR target/85095
4308 * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
4309 *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
4310
4311 PR tree-optimization/82004
4312 * gimple-match-head.c (optimize_pow_to_exp): New function.
4313 * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
4314 Don't fold to exp if optimize_pow_to_exp is false.
4315
4316 2018-03-28 Martin Liska <mliska@suse.cz>
4317
4318 PR other/84819
4319 * calls.c (initialize_argument_information): Fix trailing space.
4320 * common.opt: Fix typo and provide better explanation for
4321 -fsanitize-coverage option.
4322 * config/i386/i386.opt: Fix typo.
4323
4324 2018-03-28 Jakub Jelinek <jakub@redhat.com>
4325 Martin Liska <mliska@suse.cz>
4326
4327 PR sanitizer/85081
4328 * gimplify.c (asan_poison_variable): Don't do the check for
4329 gimplify_omp_ctxp here.
4330 (gimplify_decl_expr): Do it here.
4331 (gimplify_target_expr): Likewise.
4332
4333 2018-03-28 Martin Liska <mliska@suse.cz>
4334
4335 PR target/84988
4336 * config/i386/i386.c (ix86_function_arg_advance): Do not call
4337 chkp_type_bounds_count if MPX is not enabled.
4338
4339 2018-03-27 Chung-Ju Wu <jasonwucj@gmail.com>
4340
4341 * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
4342
4343 2018-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
4344
4345 PR target/84914
4346 * config/rs6000/rs6000.c (create_complex_muldiv): New helper
4347 function to create the function decl for complex long double
4348 multiply and divide for -mabi=ieeelongdouble.
4349 (init_float128_ieee): Call it.
4350
4351 2018-03-27 H.J. Lu <hongjiu.lu@intel.com>
4352
4353 PR target/85044
4354 * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
4355 -fcf-protection=branch -mibt.
4356 * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
4357
4358 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4359
4360 PR target/81863
4361 * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
4362
4363 2018-03-27 Cesar Philippidis <cesar@codesourcery.com>
4364
4365 PR target/85056
4366 * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
4367 extern array declarations.
4368
4369 2018-03-27 Richard Biener <rguenther@suse.de>
4370
4371 PR middle-end/84067
4372 * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
4373 explicit single_use checks.
4374
4375 2018-03-27 Richard Biener <rguenther@suse.de>
4376
4377 PR tree-optimization/85082
4378 * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
4379 Valueize the VUSE.
4380
4381 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4382
4383 * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
4384 * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
4385 Turn on fasynchronous-unwind-tables and funwind-tables.
4386
4387 2018-03-26 Uros Bizjak <ubizjak@gmail.com>
4388
4389 PR target/85073
4390 * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
4391 (*bmi_blsr_<mode>_ccz): Ditto.
4392
4393 2018-03-26 Tom de Vries <tom@codesourcery.com>
4394
4395 PR tree-optimization/85063
4396 * omp-general.c (offloading_function_p): New function. Factor out
4397 of ...
4398 * omp-offload.c (pass_omp_target_link::gate): ... here.
4399 * omp-general.h (offloading_function_p): Declare.
4400 * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
4401 with attribute omp declare target for offloading functions.
4402
4403 2018-03-24 Richard Sandiford <richard.sandiford@linaro.org>
4404
4405 PR tree-optimization/84005
4406 * tree-data-ref.h (get_base_for_alignment): Declare.
4407 * tree-data-ref.c (get_base_for_alignment_1): New function.
4408 (get_base_for_alignment): Likewise.
4409 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
4410 get_base_for_alignment to find a suitable base object, instead
4411 of always using drb->base_address.
4412
4413 2018-03-23 Jakub Jelinek <jakub@redhat.com>
4414
4415 PR inline-asm/85022
4416 * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
4417 known size by default.
4418
4419 2018-03-23 Vladimir Makarov <vmakarov@redhat.com>
4420
4421 PR inline-asm/85030
4422 * lra-constraints.c (process_alt_operands): Don't match BLKmode
4423 and non BLKmode operands.
4424
4425 2018-03-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4426
4427 PR target/85026
4428 * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
4429 Clean up attributes.
4430
4431 2018-03-23 Richard Biener <rguenther@suse.de>
4432
4433 PR debug/85020
4434 * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
4435 we are going to emit early debug for LTO.
4436
4437 2018-03-23 Jakub Jelinek <jakub@redhat.com>
4438
4439 PR inline-asm/85034
4440 * function.c (match_asm_constraints_1): Don't optimize if input
4441 doesn't satisfy general_operand predicate for output's mode.
4442
4443 PR inline-asm/85022
4444 * alias.c (write_dependence_p): Don't require for x_canonicalized
4445 non-VOIDmode if x has VOIDmode.
4446
4447 PR sanitizer/85029
4448 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
4449 just don't try to optimize it rather than assert it never happens.
4450
4451 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
4452
4453 * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
4454 macro expansions for definition of ST_INTERNAL_<mode> and
4455 LD_INTERNAL_<mode> builtins.
4456 * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
4457 Remove prototype.
4458 * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
4459 function.
4460 (altivec_expand_st_builtin): Likewise.
4461 (altivec_expand_builtin): Remove calls to deleted functions.
4462 (rs6000_address_for_altivec): Delete this function.
4463 * config/rs6000/vector.md: Remove expands for
4464 vector_altivec_load_<mode> and vector_altivec_store_<mode>.
4465
4466 2018-03-22 Sudakshina Das <sudi.das@arm.com>
4467
4468 PR target/84826
4469 * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
4470 * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
4471 re-computing once computed.
4472 (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
4473 (arm_init_machine_status): Initialize
4474 machine->static_chain_stack_bytes.
4475
4476 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
4477
4478 PR target/84760
4479 * doc/extend.texi: Add four new prototypes for vec_ld.
4480 * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
4481 definitions for more logical presentation.
4482 * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
4483 entries for V1TI variants of __builtin_altivec_ld builtin.
4484 * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
4485 handling of V1TI variant of LVX icode pattern.
4486 (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
4487 (rs6000_gimple_fold_builtin): Likewise.
4488 (altivec_init_builtins): Add code to define
4489 __builtin_altivec_lvx_v1ti function.
4490
4491 2018-03-22 Jakub Jelinek <jakub@redhat.com>
4492
4493 PR inline-asm/84941
4494 * function.c (match_asm_constraints_1): Don't do the optimization
4495 if input isn't a REG, SUBREG, MEM or constant.
4496
4497 2018-03-22 Tom de Vries <tom@codesourcery.com>
4498
4499 PR tree-optimization/84956
4500 * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
4501 bb_has_abnormal_pred.
4502
4503 2018-03-22 Jakub Jelinek <jakub@redhat.com>
4504
4505 PR sanitizer/85018
4506 * dwarf2asm.c (dw2_output_indirect_constant_1): Set
4507 DECL_INITIAL (decl) to decl at the end.
4508 * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
4509 adjust the comment.
4510
4511 2018-03-21 Joseph Myers <joseph@codesourcery.com>
4512
4513 * doc/extend.texi (__builtin_tgmath): Document when complex
4514 integer types are treated as _Complex _Float64.
4515
4516 2018-03-21 Tom de Vries <tom@codesourcery.com>
4517
4518 * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
4519
4520 2018-03-21 Jakub Jelinek <jakub@redhat.com>
4521
4522 PR tree-optimization/84960
4523 * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
4524 if it is ENTRY block, move them into single succ of ENTRY in that case.
4525
4526 2018-03-21 Richard Sandiford <richard.sandiford@linaro.org>
4527
4528 PR tree-optimization/84811
4529 * poly-int.h (poly_span_traits): Remove the T3 parameter and
4530 promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
4531 (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
4532 (known_subrange_p): Update accordingly. Cast each value involved
4533 in the size comparison, rather than casting the result of the
4534 subtraction.
4535
4536 2018-03-21 Jakub Jelinek <jakub@redhat.com>
4537
4538 PR tree-optimization/84982
4539 * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
4540 by flipping the least significant bit rather than all bits from
4541 bitpos to bitpos + bitsize - 1.
4542
4543 2018-03-21 Nathan Sidwell <nathan@acm.org>
4544
4545 * doc/extend.texi (Deprecated Features): Remove mention of
4546 long-deleted deprecations.
4547
4548 2018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4549
4550 PR jit/84288
4551 * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
4552 * configure: Regenerate.
4553
4554 2018-03-21 Tom de Vries <tom@codesourcery.com>
4555
4556 PR tree-optimization/83126
4557 * tree-parloops.c (num_phis): New function.
4558 (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
4559
4560 2018-03-21 Nathan Sidwell <nathan@acm.org>
4561
4562 * doc/extend.texi (Deprecated Features): Update deprecated flags,
4563 mention anon-struct/union members and trailing attributes.
4564
4565 2018-03-21 Bin Cheng <bin.cheng@arm.com>
4566
4567 PR tree-optimization/84969
4568 * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
4569 builtin memset partitions if they set different rhs values.
4570
4571 2018-03-21 Jakub Jelinek <jakub@redhat.com>
4572
4573 PR rtl-optimization/84989
4574 * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
4575 VEC_DUPLICATE with scalar result mode.
4576
4577 2018-03-21 Martin Liska <mliska@suse.cz>
4578
4579 PR ipa/84963
4580 * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
4581 not intended return statement.
4582
4583 2018-03-21 Martin Liska <mliska@suse.cz>
4584
4585 PR target/84988
4586 * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
4587 (chkp_find_bound_slots_1): Limit number of iterations.
4588
4589 2018-03-20 David H. Gutteridge <dhgutteridge@sympatico.ca>
4590
4591 PR target/84838
4592 * Minor grammar fixes for x86 options.
4593
4594 2018-03-20 Jakub Jelinek <jakub@redhat.com>
4595
4596 PR debug/84875
4597 * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
4598 holding REG_CFA_RESTORE notes, instead turn them into a USE.
4599
4600 2018-03-20 Peter Bergner <bergner@vnet.ibm.com>
4601
4602 PR target/83789
4603 * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
4604 (altivec_lvx_<mode>_1op): Likewise.
4605 (altivec_stvx_<mode>_2op): Likewise.
4606 (altivec_stvx_<mode>_1op): Likewise.
4607 (altivec_lvx_<VM2:mode>): New define_expand.
4608 (altivec_stvx_<VM2:mode>): Likewise.
4609 (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
4610 (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
4611 (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
4612 (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
4613 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
4614 (rs6000_gen_lvx): Likewise.
4615 * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
4616 (altivec_expand_stv_builtin): Likewise.
4617 (altivec_expand_builtin): Likewise.
4618 * config/rs6000/vector.md: Likewise.
4619
4620 2018-03-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4621
4622 PR target/82518
4623 * config/arm/arm.c (arm_array_mode_supported_p): Return false for
4624 BYTES_BIG_ENDIAN.
4625
4626 2018-03-20 Richard Biener <rguenther@suse.de>
4627
4628 PR target/84986
4629 * config/i386/i386.c (ix86_add_stmt_cost): Only cost
4630 sign-conversions as zero, fall back to standard scalar_stmt
4631 cost for the rest.
4632
4633 2018-03-20 Martin Liska <mliska@suse.cz>
4634
4635 PR ipa/84825
4636 * predict.c (rebuild_frequencies): Handle case when we have
4637 PROFILE_ABSENT, but flag_guess_branch_prob is false.
4638
4639 2018-03-20 Jakub Jelinek <jakub@redhat.com>
4640
4641 PR target/84990
4642 * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
4643 flag_section_anchors.
4644 * varasm.c (use_blocks_for_decl_p): Remove hack for
4645 dw2_force_const_mem.
4646
4647 PR target/84845
4648 * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
4649 to ...
4650 (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this. If pseudos can't
4651 be created, use lowpart_subreg of operands[0] rather than operands[0]
4652 itself.
4653 (*aarch64_reg_<mode>3_minus_mask): Rename to ...
4654 (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
4655 (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
4656 and n constraint instead of aarch64_shift_imm_di and Usd.
4657 (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
4658 (*aarch64_<optab>_reg_minus<mode>3): ... this.
4659
4660 2018-03-20 Sudakshina Das <sudi.das@arm.com>
4661
4662 PR target/82989
4663 * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
4664 to favor GPR over NEON registers.
4665 (<shift>di3_neon): Likewise.
4666
4667 2018-03-20 Tom de Vries <tom@codesourcery.com>
4668
4669 PR target/84952
4670 * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
4671 (nvptx_process_pars): Emit bar.sync asap and alap.
4672
4673 2018-03-20 Tom de Vries <tom@codesourcery.com>
4674
4675 PR target/84954
4676 * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
4677 seen_label if seen_label is already set.
4678
4679 2018-03-20 Jakub Jelinek <jakub@redhat.com>
4680
4681 PR target/84945
4682 * config/i386/i386.c (fold_builtin_cpu): For features above 31
4683 use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
4684 Use 1U instead of 1. Formatting fixes.
4685
4686 PR c/84953
4687 * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
4688 instead of TREE_TYPE (s1) for the return value.
4689
4690 2018-03-19 Jakub Jelinek <jakub@redhat.com>
4691
4692 PR tree-optimization/84946
4693 * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
4694 bitsize + bitsize in poly_uint64 rather than poly_int64.
4695
4696 PR sanitizer/78651
4697 * dwarf2asm.c: Include fold-const.c.
4698 (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
4699 of decl rather than decl itself.
4700
4701 PR rtl-optimization/84643
4702 * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
4703
4704 2018-03-19 Maxim Ostapenko <m.ostapenko@samsung.com>
4705
4706 PR sanitizer/78651
4707 * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
4708 calling assemble_variable.
4709
4710 2018-03-19 Sudakshina Das <sudi.das@arm.com>
4711
4712 PR target/81647
4713 * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
4714 instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
4715
4716 2018-03-19 Jim Wilson <jimw@sifive.com>
4717
4718 PR bootstrap/84856
4719 * config/riscv/riscv.c (riscv_function_arg_boundary): Use
4720 PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
4721 (riscv_first_stack_step): Likewise.
4722 (riscv_option_override): Use STACK_BOUNDARY instead of
4723 MIN_STACK_BOUNDARY.
4724 * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
4725 MIN_STACK_BOUNDARY.
4726 (BIGGEST_ALIGNMENT): Set to 128.
4727 (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
4728 (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
4729 STACK_BOUNDARY.
4730
4731 2018-03-19 Richard Biener <rguenther@suse.de>
4732
4733 PR tree-optimization/84933
4734 * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
4735 values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
4736
4737 2018-03-19 Richard Biener <rguenther@suse.de>
4738
4739 PR tree-optimization/84859
4740 * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
4741 (cond_if_else_store_replacement): Perform sinking operation on
4742 single-store BBs regardless of MAX_STORES_TO_SINK setting.
4743 Generalize what a BB with a single eligible store is.
4744
4745 2018-03-19 Richard Biener <rguenther@suse.de>
4746
4747 PR tree-optimization/84929
4748 * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
4749 chrec_is_positive against non-chrec arg.
4750
4751 2018-03-19 Tamar Christina <tamar.christina@arm.com>
4752
4753 PR target/84711
4754 * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
4755
4756 2018-03-18 Martin Liska <mliska@suse.cz>
4757
4758 PR rtl-optimization/84635
4759 * regrename.c (build_def_use): Use matches_mode only when
4760 matches >= 0.
4761
4762 2018-03-18 Richard Sandiford <richard.sandiford@linaro.org>
4763
4764 PR tree-optimization/84913
4765 * tree-vect-loop.c (vectorizable_reduction): Don't try to
4766 vectorize chains of COND_EXPRs.
4767
4768 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
4769
4770 * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
4771
4772 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
4773
4774 * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
4775
4776 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
4777
4778 * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
4779
4780 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
4781 Kito Cheng <kito.cheng@gmail.com>
4782
4783 * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
4784 * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
4785 (nds32_adjust_reg_alloc_order): New function.
4786 * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
4787
4788 2018-03-17 Kito Cheng <kito.cheng@gmail.com>
4789
4790 * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
4791 nds32_print_operand, nds32_print_operand_address): Use
4792 HOST_WIDE_INT_PRINT_DEC instead.
4793
4794 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
4795
4796 * config/nds32/nds32.c (nds32_register_priority): Modify cost.
4797
4798 2018-03-17 Jakub Jelinek <jakub@redhat.com>
4799
4800 PR target/84902
4801 * config/i386/i386.c (initial_ix86_tune_features,
4802 initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
4803 unsigned long long.
4804 (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
4805 to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
4806 rather than 1u << ix86_tune. Formatting fix.
4807 (ix86_option_override_internal): Change ix86_arch_mask from
4808 unsigned int to unsigned HOST_WIDE_INT, initialize to
4809 HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
4810 (ix86_function_specific_restore): Likewise.
4811
4812 2018-03-16 Jakub Jelinek <jakub@redhat.com>
4813
4814 PR target/84899
4815 * postreload.c (reload_combine_recognize_pattern): Perform
4816 INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
4817 truncate_int_for_mode the result for the destination's mode.
4818
4819 PR c/84909
4820 * hsa-gen.c (mem_type_for_type): Fix comment typo.
4821 * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
4822 Likewise.
4823 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
4824 Likewise.
4825
4826 2018-03-16 Vladimir Makarov <vmakarov@redhat.com>
4827
4828 PR target/84876
4829 * lra-assigns.c (lra_split_hard_reg_for): Don't use
4830 regno_allocno_class_array and sorted_pseudos.
4831 * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
4832 insns where regno is used.
4833
4834 2018-03-16 Martin Liska <mliska@suse.cz>
4835
4836 PR ipa/84833
4837 * multiple_target.c (create_dispatcher_calls): Redirect
4838 reference in the symbol table.
4839
4840 2018-03-16 Martin Liska <mliska@suse.cz>
4841
4842 PR ipa/84722
4843 * multiple_target.c (create_dispatcher_calls): Redirect also
4844 an alias.
4845
4846 2018-03-16 Jakub Jelinek <jakub@redhat.com>
4847
4848 PR c++/79937
4849 PR c++/82410
4850 * tree.h (TARGET_EXPR_NO_ELIDE): Define.
4851 * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
4852 TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
4853
4854 2018-03-16 Julia Koval <julia.koval@intel.com>
4855
4856 * doc/invoke.texi (Skylake Server): Add CLWB.
4857 Cannonlake): Remove CLWB.
4858
4859 2018-03-16 Jakub Jelinek <jakub@redhat.com>
4860
4861 PR tree-optimization/84841
4862 * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
4863 1 << 3.
4864 (FLOAT_ONE_CONST_TYPE): Define.
4865 (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
4866 (sort_by_operand_rank): Put entries with higher constant_type last
4867 rather than first to match comments.
4868
4869 2018-03-15 Sandra Loosemore <sandra@codesourcery.com>
4870
4871 * config/nios2/nios2.md (movsi_internal): Fix thinko in
4872 split predicate.
4873
4874 2018-03-15 Jakub Jelinek <jakub@redhat.com>
4875
4876 PR c++/79085
4877 * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
4878 check and use address of target always.
4879
4880 2018-03-15 H.J. Lu <hongjiu.lu@intel.com>
4881
4882 PR target/84574
4883 * config/i386/i386.c (indirect_thunk_needed): Update comments.
4884 (indirect_thunk_bnd_needed): Likewise.
4885 (indirect_thunks_used): Likewise.
4886 (indirect_thunks_bnd_used): Likewise.
4887 (indirect_return_needed): New.
4888 (indirect_return_bnd_needed): Likewise.
4889 (output_indirect_thunk_function): Add a bool argument for
4890 function return.
4891 (output_indirect_thunk_function): Don't generate alias for
4892 function return thunk.
4893 (ix86_code_end): Call output_indirect_thunk_function to generate
4894 function return thunks.
4895 (ix86_output_function_return): Set indirect_return_bnd_needed
4896 and indirect_return_needed instead of indirect_thunk_bnd_needed
4897 and indirect_thunk_needed.
4898
4899 2018-03-15 Olga Makhotina <olga.makhotina@intel.com>
4900
4901 * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
4902 (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
4903 (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
4904
4905 2018-03-15 David Malcolm <dmalcolm@redhat.com>
4906 Paul Hua <paul.hua.gm@gmail.com>
4907
4908 PR c/84852
4909 * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
4910
4911 2018-03-15 Segher Boessenkool <segher@kernel.crashing.org>
4912
4913 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
4914 TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
4915 resp. SFmode cases.
4916
4917 2018-03-15 Tamar Christina <tamar.christina@arm.com>
4918
4919 PR target/84711
4920 * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
4921 instead of GET_MODE_SIZE when comparing Units.
4922
4923 2018-03-15 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
4924
4925 PR target/68256
4926 * varasm.c (hash_section): Return an unchangeble hash value
4927 * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
4928 Return !aarch64_can_use_per_function_literal_pools_p ().
4929
4930 2018-03-15 Jakub Jelinek <jakub@redhat.com>
4931
4932 PR target/84860
4933 * optabs.c (emit_conditional_move): Pass address of cmode's copy
4934 rather than address of cmode as last argument to prepare_cmp_insn.
4935
4936 2018-03-15 Julia Koval <julia.koval@intel.com>
4937
4938 * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
4939 F_AVX512VNNI, F_AVX512BITALG): New.
4940
4941 2018-03-14 John David Anglin <danglin@gcc.gnu.org>
4942
4943 PR target/83451
4944 * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload
4945 insn for floating-point loads and stores.
4946
4947 2018-03-14 Carl Love <cel@us.ibm.com>
4948
4949 * config/rs6000/rs6000-c.c: Add macro definitions for
4950 ALTIVEC_BUILTIN_VEC_PERMXOR.
4951 * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
4952 * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
4953 * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
4954 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
4955 UNSPEC_VPERMXOR.
4956 * config/doc/extend.texi: Add prototypes for vec_permxor.
4957
4958 2018-03-14 David Malcolm <dmalcolm@redhat.com>
4959
4960 PR c/84852
4961 * diagnostic-show-locus.c (class layout_point): Convert m_line
4962 from int to linenum_type.
4963 (line_span::comparator): Use linenum "compare" function when
4964 comparing line numbers.
4965 (test_line_span): New function.
4966 (layout_range::contains_point): Convert param "row" from int to
4967 linenum_type.
4968 (layout_range::intersects_line_p): Likewise.
4969 (layout::will_show_line_p): Likewise.
4970 (layout::print_source_line): Likewise.
4971 (layout::should_print_annotation_line_p): Likewise.
4972 (layout::print_annotation_line): Likewise.
4973 (layout::print_leading_fixits): Likewise.
4974 (layout::annotation_line_showed_range_p): Likewise.
4975 (struct line_corrections): Likewise for field m_row.
4976 (line_corrections::line_corrections): Likewise for param "row".
4977 (layout::print_trailing_fixits): Likewise.
4978 (layout::get_state_at_point): Likewise.
4979 (layout::get_x_bound_for_row): Likewise.
4980 (layout::print_line): Likewise.
4981 (diagnostic_show_locus): Likewise for locals "last_line" and
4982 "row".
4983 (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
4984 * input.c (selftest::test_linenum_comparisons): New function.
4985 (selftest::input_c_tests): Call it.
4986 * selftest.c (selftest::test_assertions): Test ASSERT_GT,
4987 ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
4988 * selftest.h (ASSERT_GT): New macro.
4989 (ASSERT_GT_AT): New macro.
4990 (ASSERT_LT): New macro.
4991 (ASSERT_LT_AT): New macro.
4992
4993 2018-03-14 Segher Boessenkool <segher@kernel.crashing.org>
4994
4995 PR rtl-optimization/84780
4996 * combine.c (distribute_links): Don't make a link based on pc_rtx.
4997
4998 2018-03-14 Martin Liska <mliska@suse.cz>
4999
5000 * tree.c (record_node_allocation_statistics): Use
5001 get_stats_node_kind.
5002 (get_stats_node_kind): New function extracted from
5003 record_node_allocation_statistics.
5004 (free_node): Use get_stats_node_kind.
5005
5006 2018-03-14 Richard Biener <rguenther@suse.de>
5007
5008 * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
5009 that the value-set of ANTIC_IN doesn't grow.
5010
5011 Revert
5012 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
5013 member.
5014 (BB_VISITED_WITH_VISITED_SUCCS): New define.
5015 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
5016
5017 2018-03-14 Julia Koval <julia.koval@intel.com>
5018
5019 * config.gcc (icelake-client, icelake-server): New.
5020 (icelake): Remove.
5021 * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
5022 (initial_ix86_arch_features): Ditto.
5023 (PTA_SKYLAKE): Add SGX.
5024 (PTA_ICELAKE): Remove.
5025 (PTA_ICELAKE_CLIENT): New.
5026 (PTA_ICELAKE_SERVER): New.
5027 (ix86_option_override_internal): Split up icelake on icelake client and
5028 icelake server.
5029 (get_builtin_code_for_version): Ditto.
5030 (fold_builtin_cpu): Ditto.
5031 * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
5032 * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
5033 * config/i386/i386.h (processor_type): Ditto.
5034 * doc/invoke.texi: Ditto.
5035
5036 2018-03-14 Jakub Jelinek <jakub@redhat.com>
5037
5038 PR sanitizer/83392
5039 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
5040 INTEGER_CST offset, add it together with bitpos / 8 and
5041 sign extend based on POINTER_SIZE.
5042
5043 PR target/84844
5044 Revert
5045 2017-04-20 Uros Bizjak <ubizjak@gmail.com>
5046
5047 PR target/78090
5048 * config/i386/constraints.md (Yc): New register constraint.
5049 * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
5050 Use Yc constraint for alternative 2 of operand 0. Remove
5051 preferred_for_speed attribute.
5052
5053 2018-03-14 Richard Biener <rguenther@suse.de>
5054
5055 PR tree-optimization/84830
5056 * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
5057 with the old one to avoid oscillations.
5058
5059 2018-03-13 Vladimir Makarov <vmakarov@redhat.com>
5060
5061 PR target/83712
5062 * lra-assigns.c (find_all_spills_for): Ignore uninteresting
5063 pseudos.
5064 (assign_by_spills): Return a flag of reload assignment failure.
5065 Do not process the reload assignment failures. Do not spill other
5066 reload pseudos if they has the same reg class. Update n if
5067 necessary.
5068 (lra_assign): Add a return arg. Set up from the result of
5069 assign_by_spills call.
5070 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5071 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
5072 usage_insns if it is not NULL.
5073 (spill_hard_reg_in_range): New function.
5074 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5075 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5076 function prototypes.
5077 (lra_assign): Change prototype.
5078 * lra.c (lra): Add code to deal with fails by splitting hard reg
5079 live ranges.
5080
5081 2018-03-01 Palmer Dabbelt <palmer@sifive.com>
5082
5083 * config/riscv/riscv.opt (mrelax): New option.
5084 * config/riscv/riscv.c (riscv_file_start): Emit ".option
5085 "norelax" when riscv_mrelax is disabled.
5086 * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
5087
5088 2018-03-13 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
5089
5090 PR target/84743
5091 * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
5092 reassociation for int modes.
5093
5094 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
5095
5096 * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
5097 Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
5098 for big-endian.
5099 * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
5100 * config/aarch64/aarch64-sve.md
5101 (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
5102 (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
5103 (*extend<mode><Vwide>2): Rename to...
5104 (aarch64_sve_extend<mode><Vwide>2): ...this.
5105 (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
5106 renaming the old pattern to...
5107 (aarch64_sve_punpk<perm_hilo>_<mode>): ...this. Only define
5108 unsigned packs.
5109 (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
5110 define_expand, renaming the old pattern to...
5111 (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
5112 (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
5113 (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
5114 account when deciding which SVE instruction the optab should use.
5115 (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
5116
5117 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
5118
5119 * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
5120 (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
5121 (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
5122 (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
5123 (tlsdesc_small_<mode>): Turn a define_expand and use
5124 tlsdesc_small_sve_<mode> for SVE. Rename original define_insn to...
5125 (tlsdesc_small_advsimd_<mode>): ...this.
5126 (tlsdesc_small_sve_<mode>): New pattern.
5127
5128 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
5129
5130 * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
5131 (UNSPEC_UMUL_HIGHPART): New constants.
5132 (MUL_HIGHPART): New int iteraor.
5133 (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
5134 * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
5135 define_expand.
5136 (*<su>mul<mode>3_highpart): New define_insn.
5137
5138 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
5139
5140 PR lto/84805
5141 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
5142 incomplete types.
5143
5144 2018-03-13 Martin Liska <mliska@suse.cz>
5145
5146 PR ipa/84658.
5147 * (sem_item_optimizer::sem_item_optimizer): Initialize new
5148 vector.
5149 (sem_item_optimizer::~sem_item_optimizer): Release it.
5150 (sem_item_optimizer::merge_classes): Register variable aliases.
5151 (sem_item_optimizer::fixup_pt_set): New function.
5152 (sem_item_optimizer::fixup_points_to_sets): Likewise.
5153 * ipa-icf.h: Declare new variables and functions.
5154
5155 2018-03-13 Jakub Jelinek <jakub@redhat.com>
5156
5157 PR middle-end/84834
5158 * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
5159 integer_pow2p@2 and test integer_pow2p in condition.
5160 (A < 0 ? C : 0): Similarly for @1.
5161
5162 PR middle-end/84831
5163 * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
5164 characters starting at p contain '\0' character, don't look beyond
5165 that.
5166
5167 PR target/84827
5168 * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
5169 pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
5170
5171 PR target/84828
5172 * reg-stack.c (change_stack): Change update_end var from int to
5173 rtx_insn *, if non-NULL don't update just BB_END (current_block), but
5174 also call set_block_for_insn on the newly added insns and rescan.
5175
5176 PR target/84786
5177 * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
5178 on the last operand.
5179
5180 PR c++/84704
5181 * tree.c (stabilize_reference_1): Return save_expr (e) for
5182 STATEMENT_LIST even if it doesn't have side-effects.
5183
5184 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
5185
5186 * doc/invoke.texi (-mclflushopt): Fix spelling of option.
5187
5188 2018-03-12 Renlin Li <renlin.li@arm.com>
5189
5190 * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
5191 aarch64_output_scalar_simd_mov_immediate.
5192
5193 2018-03-12 Martin Sebor <msebor@redhat.com>
5194
5195 PR tree-optimization/83456
5196 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
5197 for perfectly overlapping calls to memcpy.
5198 (gimple_fold_builtin_memory_chk): Same.
5199 (gimple_fold_builtin_strcpy): Handle no-warning.
5200 (gimple_fold_builtin_stxcpy_chk): Same.
5201 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
5202
5203 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
5204
5205 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
5206 parameter. Use it for SFmode.
5207 (rs6000_function_arg_advance_1): Adjust.
5208 (rs6000_function_arg): Adjust.
5209 (rs6000_gimplify_va_arg): Pass false for that new parameter.
5210
5211 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
5212
5213 PR rtl-optimization/84169
5214 PR rtl-optimization/84780
5215 * combine.c (can_combine_p): Check for a 2-insn combination whether
5216 the destination register is used between the two insns, too.
5217
5218 2018-03-12 Richard Biener <rguenther@suse.de>
5219
5220 PR tree-optimization/84803
5221 * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
5222 for refs DR analysis didn't process.
5223
5224 2018-03-12 Richard Biener <rguenther@suse.de>
5225
5226 PR tree-optimization/84777
5227 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
5228 force-vectorize loops ignore whether we are optimizing for size.
5229
5230 2018-03-12 Chung-Ju Wu <jasonwucj@gmail.com>
5231
5232 * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
5233 (TARGET_MD_ASM_ADJUST): Define.
5234
5235 2018-03-12 Monk Chiang <sh.chiang04@gmail.com>
5236 Kito Cheng <kito.cheng@gmail.com>
5237 Chung-Ju Wu <jasonwucj@gmail.com>
5238
5239 * config/nds32/nds32.c (nds32_compute_stack_frame,
5240 nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
5241 nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
5242 nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
5243 nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
5244 * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
5245 NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
5246 * config/nds32/nds32.md (prologue, epilogue): Use macro
5247 NDS32_V3PUSH_AVAILABLE_P to do checking.
5248
5249 2018-03-11 Jakub Jelinek <jakub@redhat.com>
5250
5251 PR debug/58150
5252 * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
5253 DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
5254 but on TYPE_SIZE. Don't do anything for ENUM_IS_OPAQUE if not creating
5255 a new die. Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE. Guard
5256 addition of most attributes on !orig_type_die or the attribute not
5257 being present already. Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
5258
5259 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
5260 Chung-Ju Wu <jasonwucj@gmail.com>
5261
5262 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
5263 __NDS32_VH__ macro.
5264 * config/nds32/nds32.opt (mvh): New option.
5265
5266 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
5267 Chung-Ju Wu <jasonwucj@gmail.com>
5268
5269 * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
5270 function.
5271 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
5272 * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
5273 definition.
5274
5275 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
5276 Chung-Ju Wu <jasonwucj@gmail.com>
5277
5278 * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
5279 function.
5280 * config/nds32/nds32-multiple.md (strlensi): New pattern.
5281 * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
5282
5283 2018-03-11 Monk Chiang <sh.chiang04@gmail.com>
5284 Kito Cheng <kito.cheng@gmail.com>
5285 Chung-Ju Wu <jasonwucj@gmail.com>
5286
5287 * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
5288 UNSPEC_FFMISM and UNSPEC_FLMISM.
5289 * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
5290 for ffb, ffmism and flmism.
5291 * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
5292 (unspec_ffmism): Ditto.
5293 (unspec_flmism): Ditto.
5294 (nds32_expand_builtin_impl): Check if string extension is available.
5295 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
5296 NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
5297
5298 2018-03-10 Vladimir Makarov <vmakarov@redhat.com>
5299
5300 Reverting patch:
5301 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
5302
5303 PR target/83712
5304 * lra-assigns.c (assign_by_spills): Return a flag of reload
5305 assignment failure. Do not process the reload assignment
5306 failures. Do not spill other reload pseudos if they has the same
5307 reg class.
5308 (lra_assign): Add a return arg. Set up from the result of
5309 assign_by_spills call.
5310 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5311 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
5312 usage_insns if it is not NULL.
5313 (spill_hard_reg_in_range): New function.
5314 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5315 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5316 function prototypes.
5317 (lra_assign): Change prototype.
5318 * lra.c (lra): Add code to deal with fails by splitting hard reg
5319 live ranges.
5320
5321 2018-03-10 H.J. Lu <hongjiu.lu@intel.com>
5322
5323 PR target/84807
5324 * config/i386/i386.opt: Replace Enforcment with Enforcement.
5325
5326 2018-03-10 Alexandre Oliva <aoliva@redhat.com>
5327
5328 PR debug/84620
5329 * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
5330 (dw_val_node): Add val_symbolic_view.
5331 * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
5332 (symview_upper_bound): New.
5333 (new_line_info_table): Initialize symviews_since_reset.
5334 (dwarf2out_source_line): Count symviews_since_reset and set
5335 symview_upper_bound.
5336 (dw_val_equal_p): Handle symview.
5337 (add_AT_symview): New.
5338 (print_dw_val): Handle symview.
5339 (attr_checksum, attr_checksum_ordered): Likewise.
5340 (same_dw_val_p, size_of_die): Likewise.
5341 (value_format, output_die): Likewise.
5342 (add_high_low_attributes): Use add_AT_symview for entry_view.
5343 (dwarf2out_finish): Reset symview_upper_bound, clear
5344 zero_view_p.
5345
5346 2018-03-09 Peter Bergner <bergner@vnet.ibm.com>
5347
5348 PR target/83969
5349 * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
5350 Add strict argument and use it.
5351 (rs6000_split_multireg_move): Update for new strict argument.
5352 (mem_operand_gpr): Disallow all non-offsettable addresses.
5353 * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
5354
5355 2018-03-09 Jakub Jelinek <jakub@redhat.com>
5356
5357 PR target/84772
5358 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
5359 temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
5360 * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
5361
5362 PR c++/84767
5363 * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
5364 decl, use remap_type if we want to use the type.
5365
5366 2018-03-09 Martin Sebor <msebor@redhat.com>
5367
5368 PR tree-optimization/84526
5369 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
5370 Remove dead code.
5371 (builtin_access::generic_overlap): Be prepared to handle non-array
5372 base objects.
5373
5374 2018-03-09 Alexandre Oliva <aoliva@redhat.com>
5375
5376 PR rtl-optimization/84682
5377 * lra-constraints.c (process_address_1): Check is_address flag
5378 for address constraints.
5379 (process_alt_operands): Likewise.
5380 * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
5381 preprocess_constraints.
5382 * recog.h (preprocess_constraints): Add oploc parameter.
5383 Adjust callers.
5384 * recog.c (preprocess_constraints): Test address_operand for
5385 CT_ADDRESS constraints.
5386
5387 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
5388
5389 PR target/83712
5390 * lra-assigns.c (assign_by_spills): Return a flag of reload
5391 assignment failure. Do not process the reload assignment
5392 failures. Do not spill other reload pseudos if they has the same
5393 reg class.
5394 (lra_assign): Add a return arg. Set up from the result of
5395 assign_by_spills call.
5396 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5397 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
5398 usage_insns if it is not NULL.
5399 (spill_hard_reg_in_range): New function.
5400 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5401 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5402 function prototypes.
5403 (lra_assign): Change prototype.
5404 * lra.c (lra): Add code to deal with fails by splitting hard reg
5405 live ranges.
5406
5407 2018-03-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5408
5409 PR target/83193
5410 * common/config/arm/arm-common.c (arm_parse_arch_option_name):
5411 Accept complain bool parameter. Only emit errors if it is true.
5412 (arm_parse_cpu_option_name): Likewise.
5413 (arm_target_thumb_only): Adjust callers of the above.
5414 * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
5415 prototype to take a default true bool parameter.
5416 (arm_parse_arch_option_name): Likewise.
5417
5418 2018-03-09 David Malcolm <dmalcolm@redhat.com>
5419 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
5420
5421 PR jit/64089
5422 PR jit/84288
5423 * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
5424 * configure: Regenerate.
5425 * configure.ac ("linker --version-script option"): New.
5426 ("linker soname option"): New.
5427
5428 2018-03-09 Richard Biener <rguenther@suse.de>
5429
5430 PR tree-optimization/84775
5431 * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
5432 immediate uses of predicate stmts and mark them modified.
5433
5434 Revert
5435 PR tree-optimization/84178
5436 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
5437 to caller.
5438 (version_loop_for_if_conversion): Delay update_ssa call.
5439 (tree_if_conversion): Delay update_ssa until after predicate
5440 insertion.
5441
5442 2018-03-09 Eric Botcazou <ebotcazou@adacore.com>
5443
5444 PR target/84763
5445 * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
5446 when the function accesses prior frames.
5447
5448 2018-03-08 Jakub Jelinek <jakub@redhat.com>
5449
5450 PR debug/84456
5451 * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
5452 gen_llsym, otherwise call maybe_gen_llsym.
5453
5454 PR inline-asm/84742
5455 * recog.c (asm_operand_ok): Return 0 if multi-character constraint
5456 has ',' character inside of it.
5457
5458 2018-03-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5459
5460 PR target/84748
5461 * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
5462 as clobbering CC_REGNUM.
5463
5464 2018-03-08 Richard Biener <rguenther@suse.de>
5465
5466 PR middle-end/84552
5467 * tree-scalar-evolution.c: Include tree-into-ssa.h.
5468 (follow_copies_to_constant): Do not follow SSA names registered
5469 for update.
5470
5471 2018-03-08 Richard Biener <rguenther@suse.de>
5472
5473 PR tree-optimization/84178
5474 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
5475 to caller.
5476 (version_loop_for_if_conversion): Delay update_ssa call.
5477 (tree_if_conversion): Delay update_ssa until after predicate
5478 insertion.
5479
5480 2018-03-08 David Malcolm <dmalcolm@redhat.com>
5481
5482 PR tree-optimization/84178
5483 * tree-if-conv.c (release_bb_predicate): Remove the
5484 the assertion that the stmts have NULL use_ops.
5485 Discard the statements, asserting that they haven't
5486 yet been added to a BB.
5487
5488 2018-03-08 Richard Biener <rguenther@suse.de>
5489
5490 PR tree-optimization/84746
5491 * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
5492 (phi_translate): Pass in destination ANTIC_OUT set.
5493 (phi_translate_1): Likewise. For a simplified result lookup
5494 a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
5495 (phi_translate_set): Adjust.
5496 (do_pre_regular_insertion): Likewise.
5497 (do_pre_partial_partial_insertion): Likewise.
5498
5499 2018-03-08 Martin Liska <mliska@suse.cz>
5500
5501 PR gcov-profile/84735
5502 * doc/gcov.texi: Document usage of profile files.
5503 * gcov-io.h: Document changes in the format.
5504
5505 2018-03-08 Alexandre Oliva <aoliva@redhat.com>
5506
5507 PR debug/84404
5508 PR debug/84408
5509 * dwarf2out.c (struct dw_line_info_table): Update comments for
5510 view == -1.
5511 (FORCE_RESET_NEXT_VIEW): New.
5512 (FORCE_RESETTING_VIEW_P): New.
5513 (RESETTING_VIEW_P): Check for -1 too.
5514 (ZERO_VIEW_P): Likewise.
5515 (new_line_info_table): Force-reset next view.
5516 (dwarf2out_begin_function): Likewise.
5517 (dwarf2out_source_line): Simplify zero_view_p initialization.
5518 Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
5519 view directly. Omit view when omitting .loc at line 0.
5520
5521 2018-03-08 Jakub Jelinek <jakub@redhat.com>
5522
5523 PR tree-optimization/84740
5524 * tree-switch-conversion.c (process_switch): Call build_constructors
5525 only if info.phi_count is non-zero.
5526
5527 PR tree-optimization/84739
5528 * tree-tailcall.c (find_tail_calls): Check call arguments against
5529 DECL_ARGUMENTS (current_function_decl) rather than
5530 DECL_ARGUMENTS (func) when checking for tail recursion.
5531
5532 2018-03-07 Jakub Jelinek <jakub@redhat.com>
5533
5534 * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
5535 Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
5536 Volker Reichelt's entry and add entries for people that perform
5537 GCC fuzzy testing and report numerous bugs.
5538
5539 2018-03-07 Segher Boessenkool <segher@kernel.crashing.org>
5540
5541 PR target/82411
5542 * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
5543 readonly data in sdata, if that is disabled.
5544 * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
5545 * doc/invoke.texi (RS/6000 and PowerPC Options): Document
5546 -mreadonly-in-sdata option.
5547
5548 2018-03-07 Martin Sebor <msebor@redhat.com>
5549
5550 PR tree-optimization/84468
5551 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
5552 basic block when looking for nul assignment.
5553
5554 2018-03-07 Eric Botcazou <ebotcazou@adacore.com>
5555
5556 PR target/84277
5557 * except.h (output_function_exception_table): Adjust prototype.
5558 * except.c (output_function_exception_table): Remove FNNAME parameter
5559 and add SECTION parameter. Ouput one part of the table at a time.
5560 * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
5561 the first part of the exception table and emit unwind directives.
5562 * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
5563 (i386_pe_seh_cold_init): Likewise.
5564 * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
5565 (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
5566 * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
5567 (ix86_output_call_insn): Emit a nop in one more case for SEH.
5568 * config/i386/winnt.c: Include except.h.
5569 (struct seh_frame_state): Add reg_offset, after_prologue and
5570 in_cold_section fields.
5571 (i386_pe_seh_end_prologue): Set seh->after_prologue.
5572 (i386_pe_seh_cold_init): New function.
5573 (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
5574 to seh->in_cold_section.
5575 (seh_emit_push): Record the offset of the push.
5576 (seh_emit_save): Record the offet of the save.
5577 (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
5578 Test seh->after_prologue to disregard the epilogue.
5579 (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
5580 (i386_pe_end_cold_function): New function.
5581
5582 2018-03-07 Jakub Jelinek <jakub@redhat.com>
5583
5584 PR fortran/84565
5585 * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
5586 aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
5587
5588 PR c++/84704
5589 * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
5590 on tmp_var.
5591 * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
5592 don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
5593
5594 PR middle-end/84723
5595 * multiple_target.c: Include tree-inline.h and intl.h.
5596 (expand_target_clones): Diagnose and fail if node->definition and
5597 !tree_versionable_function_p (node->decl).
5598
5599 2018-03-06 John David Anglin <danglin@gcc.gnu.org>
5600
5601 * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
5602 sprint_ul.
5603 (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
5604 (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
5605 * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
5606
5607 2018-03-06 Jakub Jelinek <jakub@redhat.com>
5608
5609 PR target/84710
5610 * combine.c (try_combine): Use reg_or_subregno instead of handling
5611 just paradoxical SUBREGs and REGs.
5612
5613 2018-03-06 Claudiu Zissulescu <claziss@synopsys.com>
5614
5615 * config/arc/arc.c (arc_finalize_pic): Remove function.
5616 (arc_must_save_register): We use single base PIC register, remove
5617 checks to save/restore the PIC register.
5618 (arc_expand_prologue): Likewise.
5619 * config/arc/arc-protos.h (arc_set_default_type_attributes):
5620 Remove.
5621 (arc_verify_short): Likewise.
5622 (arc_attr_type): Likewise.
5623 * config/arc/arc.c (arc_set_default_type_attributes): Remove.
5624 (walk_stores): Likewise.
5625 (arc_address_cost): Make it static.
5626 (arc_verify_short): Likewise.
5627 (branch_dest): Likewise.
5628 (arc_attr_type): Likewise.
5629 * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
5630 (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
5631 (arc_final_prescan_insn): Remove inserting the nops due to
5632 hardware hazards. It is done in reorg step.
5633 (insn_length_variant_t): Remove.
5634 (insn_length_parameters_t): Likewise.
5635 (arc_insn_length_parameters): Likewise.
5636 (arc_get_insn_variants): Likewise.
5637 * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
5638
5639 2018-03-06 Jakub Jelinek <jakub@redhat.com>
5640
5641 PR inline-asm/84683
5642 * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
5643 assertion failure.
5644
5645 PR tree-optimization/84687
5646 * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
5647 on new_node->decl.
5648 * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
5649
5650 2018-03-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
5651
5652 * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
5653 Rename to ppc_speculation_barrier.
5654 * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
5655 __builtin_ppc_speculation_barrier.
5656
5657 2018-03-05 Jakub Jelinek <jakub@redhat.com>
5658
5659 PR target/84700
5660 * combine.c (combine_simplify_rtx): Don't try to simplify if
5661 if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
5662 are equal to x.
5663
5664 2018-03-05 Segher Boessenkool <segher@kernel.crashing.org>
5665
5666 * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
5667 to 32 bytes when compiling for POWER9.
5668
5669 2018-03-05 Jakub Jelinek <jakub@redhat.com>
5670
5671 PR target/84564
5672 * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
5673 regparm >= 3 with no arg reg available also for calls with
5674 flag_force_indirect_call. Pass decl to ix86_function_regparm.
5675
5676 PR target/84524
5677 * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
5678 orig,vex.
5679 (*<plusminus_insn><mode>3): Likewise. Remove <mask_operand3> uses.
5680
5681 2018-03-05 Peter Bergner <bergner@vnet.ibm.com>
5682
5683 PR target/84264
5684 * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
5685
5686 2018-03-05 Richard Biener <rguenther@suse.de>
5687
5688 PR tree-optimization/84486
5689 * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
5690 When inserting a __builtin_assume_aligned call set the LHS
5691 SSA name alignment info accordingly.
5692
5693 2018-03-05 Wilco Dijkstra <wdijkstr@arm.com>
5694
5695 PR tree-optimization/84114
5696 * config/aarch64/aarch64.c (aarch64_reassociation_width)
5697 Avoid reassociation of FLOAT_MODE addition.
5698
5699 2018-03-05 Olga Makhotina <olga.makhotina@intel.com>
5700
5701 * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
5702 OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
5703 OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
5704 (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
5705 * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
5706 * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
5707 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
5708 and -mwbnoinvd.
5709 * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
5710 __builtin_ia32_wbinvd): New builtins.
5711 (SPECIAL_ARGS2): New.
5712 * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
5713 (SPECIAL_ARGS2): New.
5714 * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
5715 (ix86_valid_target_attribute_inner_p): Ditto.
5716 (ix86_init_mmx_sse_builtins): Add special_args2.
5717 * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
5718 TARGET_WBNOINVD_P): New.
5719 * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
5720 (define_insn "wbinvd", define_insn "wbnoinvd"): New.
5721 * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
5722 * config/i386/immintrin.h (_wbinvd): New intrinsic.
5723 * config/i386/pconfigintrin.h: New file.
5724 * config/i386/wbnoinvdintrin.h: Ditto.
5725 * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
5726 * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
5727
5728 2018-03-05 Richard Biener <rguenther@suse.de>
5729
5730 PR tree-optimization/84670
5731 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
5732 member.
5733 (BB_VISITED_WITH_VISITED_SUCCS): New define.
5734 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
5735 (compute_antic_aux): Only assert the number of values in ANTIC_IN
5736 doesn't grow if all successors (recursively) were visited at least
5737 once.
5738
5739 2018-03-05 Richard Biener <rguenther@suse.de>
5740
5741 PR tree-optimization/84650
5742 * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
5743 if executed in the loop pipeline.
5744
5745 2018-03-05 Sandra Loosemore <sandra@codesourcery.com>
5746
5747 * doc/configfiles.texi (Configuration Files): Move info about
5748 conditionalizing $target-protos.h to...
5749 * doc/sourcebuild.texi (Back End): Here. Explain how $target.h
5750 differs from $target-protos.h.
5751
5752 2018-03-05 Kito Cheng <kito.cheng@gmail.com>
5753 Chung-Ju Wu <jasonwucj@gmail.com>
5754
5755 * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
5756 * config/nds32/nds32-multiple.md (setmemsi): Define.
5757 * config/nds32/nds32-memory-manipulation.c
5758 (nds32_gen_dup_4_byte_to_word_value): New.
5759 (emit_setmem_word_loop): New.
5760 (emit_setmem_byte_loop): New.
5761 (nds32_expand_setmem_loop): New.
5762 (nds32_expand_setmem_loop_v3m): New.
5763 (nds32_expand_setmem_unroll): New.
5764 (nds32_expand_setmem): New.
5765
5766 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
5767 Chung-Ju Wu <jasonwucj@gmail.com>
5768
5769 * config/nds32/nds32-memory-manipulation.c
5770 (nds32_emit_load_store): New.
5771 (nds32_emit_post_inc_load_store): New.
5772 (nds32_emit_mem_move): New.
5773 (nds32_emit_mem_move_block): New.
5774 (nds32_expand_movmemsi_loop_unknown_size): New.
5775 (nds32_expand_movmemsi_loop_known_size): New.
5776 (nds32_expand_movmemsi_loop): New.
5777 (nds32_expand_movmemsi_unroll): New.
5778 (nds32_expand_movmemqi): Rename ...
5779 (nds32_expand_movmemsi): ... to this.
5780 * config/nds32/nds32-multiple.md (movmemqi): Rename ...
5781 (movmemsi): ... to this.
5782 * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
5783 (nds32_expand_movmemsi): ... to this.
5784
5785 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
5786 Monk Chiang <sh.chiang04@gmail.com>
5787 Chung-Ju Wu <jasonwucj@gmail.com>
5788
5789 * config/nds32/nds32-protos.h
5790 (nds32_expand_load_multiple): New arguments.
5791 (nds32_expand_store_multiple): Ditto.
5792 (nds32_valid_multiple_load_store): Rename ...
5793 (nds32_valid_multiple_load_store_p): ... to this.
5794 * config/nds32/nds32-memory-manipulation.c
5795 (nds32_expand_load_multiple): Refine implementation.
5796 (nds32_expand_store_multiple): Ditto.
5797 * config/nds32/nds32-multiple.md
5798 (load_multiple): Update nds32_expand_load_multiple interface.
5799 (store_multiple): Update nds32_expand_store_multiple interface.
5800 * config/nds32/nds32-predicates.c
5801 (nds32_valid_multiple_load_store): Rename ...
5802 (nds32_valid_multiple_load_store_p): ... to this and refine
5803 implementation.
5804 * config/nds32/predicates.md
5805 (nds32_load_multiple_and_update_address_operation): New predicate.
5806 (nds32_store_multiple_and_update_address_operation): New predicate.
5807
5808 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
5809 Chung-Ju Wu <jasonwucj@gmail.com>
5810
5811 * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
5812 (combo): New attribute.
5813 * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
5814
5815 2018-03-03 Chung-Ju Wu <jasonwucj@gmail.com>
5816
5817 * config/nds32/nds32.opt: Change -mcmodel= default value.
5818
5819 2018-03-03 Kito Cheng <kito.cheng@gmail.com>
5820 Monk Chiang <sh.chiang04@gmail.com>
5821 Chung-Ju Wu <jasonwucj@gmail.com>
5822
5823 * config/nds32/constants.md (unspec_element): New enum.
5824 * config/nds32/constraints.md (Umw): New constraint.
5825 * config/nds32/nds32-intrinsic.c: Add more builtin functions.
5826 * config/nds32/nds32-intrinsic.md: Likewise.
5827 * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
5828 (nds32_valid_smw_lwm_base_p): New.
5829 (nds32_output_smw_single_word): New.
5830 (nds32_output_lmw_single_word): New.
5831 (nds32_expand_unaligned_load): New.
5832 (nds32_expand_unaligned_store): New.
5833 * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
5834 (nds32_output_smw_single_word): Declare.
5835 (nds32_output_lmw_single_word): Declare.
5836 (nds32_expand_unaligned_load): Declare.
5837 (nds32_expand_unaligned_store): Declare.
5838 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
5839 NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
5840 NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
5841 NDS32_BUILTIN_UASTORE_DW.
5842 * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
5843 predicate.
5844
5845 2018-03-03 Monk Chiang <sh.chiang04@gmail.com>
5846 Kito Cheng <kito.cheng@gmail.com>
5847 Chung-Ju Wu <jasonwucj@gmail.com>
5848
5849 * config/nds32/nds32-intrinsic.c
5850 (nds32_expand_builtin_null_ftype_reg): Delete.
5851 (nds32_expand_builtin_reg_ftype_imm): Ditto.
5852 (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
5853 (nds32_read_argument): New.
5854 (nds32_legitimize_target): Ditto.
5855 (nds32_legitimize_argument): Ditto.
5856 (nds32_check_constant_argument): Ditto.
5857 (nds32_expand_unop_builtin): Ditto.
5858 (nds32_expand_unopimm_builtin): Ditto.
5859 (nds32_expand_binop_builtin): Ditto.
5860 (nds32_builtin_decl_impl): Ditto.
5861 (builtin_description): Ditto.
5862 (nds32_expand_builtin_impl): Rewrite with new infrastructure.
5863 (nds32_init_builtins_impl): Ditto.
5864 * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
5865 (nds32_builtin_decl): New.
5866 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
5867 * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
5868
5869 2018-03-02 Jeff Law <law@redhat.com>
5870
5871 * reorg.c (stop_search_p): Handle DEBUG_INSN.
5872 (redundant_insn, fill_simple_delay_slots): Likewise.
5873 (fill_slots_from_thread): Likewise.
5874 * resource.c (mark_referenced_resources): Likewise.
5875 (mark_set_resources, find_dead_or_set_registers): Likewise.
5876
5877 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5878
5879 * substring-locations.h (format_warning_va): Formatting fix for
5880 ATTRIBUTE_GCC_DIAG.
5881 (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
5882 argument.
5883 (format_warning_n_va, format_warning_at_substring_n): New prototypes.
5884 * substring-locations.c: Include intl.h.
5885 (format_warning_va): Turned into small wrapper around
5886 format_warning_n_va, renamed to ...
5887 (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
5888 rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
5889 use ngettext.
5890 (format_warning_at_substring_n): New function.
5891 * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
5892 (fmtwarn): Add ATTRIBUTE_GCC_DIAG. Turn into a copy of
5893 format_warning_at_substring with just a shorter name instead of
5894 const function pointer.
5895 (fmtwarn_n): New function.
5896 (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
5897 appropriate, get rid of all the fmtstr temporaries, move conditionals
5898 with G_() wrapped string literals directly into fmtwarn arguments,
5899 cast dir.len to (int), formatting fixes.
5900
5901 2018-03-02 Thomas Schwinge <thomas@codesourcery.com>
5902
5903 * doc/invoke.texi: Remove "Cilk Plus" references.
5904
5905 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5906 Richard Biener <rguenther@suse.de>
5907
5908 PR ipa/84628
5909 * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
5910 for error or warning attributes if CALL_FROM_THUNK_P is set.
5911 Formatting fixes.
5912
5913 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5914
5915 PR target/56540
5916 * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
5917 __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
5918
5919 PR target/56540
5920 * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
5921 __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
5922
5923 * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
5924 instead of -1U in last predictors element's probability member.
5925
5926 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
5927
5928 PR ipa/83983
5929 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
5930 arguments if they are comparable.
5931
5932 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
5933
5934 PR tree-optimization/84634
5935 * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
5936 masks and masked_loop_p with a single loop_masks, making sure it's
5937 null for bb vectorization.
5938
5939 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
5940
5941 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
5942 (vect_analyze_data_ref_access): Use loop->safe_len rather than
5943 loop->force_vectorize to check whether there is no alias.
5944
5945 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5946
5947 PR target/84614
5948 * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
5949 prototypes.
5950 * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
5951 comments.
5952 (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
5953 * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
5954 instead of a loop around prev_real_insn.
5955 * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
5956 prev_real_insn.
5957
5958 PR inline-asm/84625
5959 * config/i386/i386.c (ix86_print_operand): Use conditional
5960 output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
5961 zero vector.
5962
5963 2018-03-02 Richard Biener <rguenther@suse.de>
5964
5965 PR tree-optimization/84427
5966 * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
5967 (bitmap_set_subtract_values): Rewrite to handle multiple
5968 exprs per value.
5969 (clean): Likewise.
5970 (prune_clobbered_mems): Likewise.
5971 (phi_translate): Take edge instead of pred/phiblock.
5972 (phi_translate_1): Likewise.
5973 (phi_translate_set): Likewise. Insert all translated
5974 exprs for a value into the set, keeping possibly multiple
5975 expressions per value.
5976 (compute_antic_aux): Adjust for phi_translate changes.
5977 When intersecting union the expressions and prune those
5978 not in the final value set, keeping possibly multiple
5979 expressions per value. Do not use value-insertion
5980 for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
5981 all expressions. Add verification that the value-sets
5982 only shrink during iteration.
5983 (compute_partial_antic_aux): Adjust for the phi_translate changes.
5984 (do_pre_regular_insertion): Likewise.
5985 (do_pre_partial_partial_insertion): Likewise.
5986
5987 2018-03-02 Richard Biener <rguenther@suse.de>
5988
5989 PR target/82005
5990 * config/darwin.c (saved_debug_info_level): New static global.
5991 (darwin_asm_lto_start): Disable debug info generation for LTO out.
5992 (darwin_asm_lto_end): Restore debug info generation settings.
5993
5994 2018-03-01 Martin Liska <mliska@suse.cz>
5995
5996 PR sanitizer/82484
5997 * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
5998 volatile arguments.
5999
6000 2018-03-01 Richard Biener <rguenther@suse.de>
6001
6002 PR debug/84645
6003 * dwarf2out.c (gen_variable_die): Properly handle late VLA
6004 type annotation with LTO when debug was disabled at compile-time.
6005
6006 2018-03-01 Matthew Fortune <mfortune@gmail.com>
6007
6008 * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
6009 XINT with INTVAL.
6010 (mips_final_postscan_insn): Likewise.
6011
6012 2018-03-01 Richard Sandiford <richard.sandiford@linaro.org>
6013
6014 PR rtl-optimization/84528
6015 * alias.c (init_alias_target): Add commentary.
6016 (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
6017 a unique base value if the frame pointer is not eliminated
6018 to the stack pointer.
6019
6020 2018-03-01 Tom de Vries <tom@codesourcery.com>
6021
6022 PR rtl-optimization/83327
6023 * lra-int.h (hard_regs_spilled_into): Declare.
6024 * lra.c (hard_regs_spilled_into): Define.
6025 (init_reg_info): Init hard_regs_spilled_into.
6026 * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
6027 * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
6028 (process_bb_lives): Handle hard_regs_spilled_into.
6029 (lra_create_live_ranges_1): Before doing liveness propagation, clear
6030 regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
6031
6032 2018-02-28 David Edelsohn <dje.gcc@gmail.com>
6033
6034 * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
6035 (powerpc-ibm-aix[789]*): Default to AIX 7.2.
6036 * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
6037 * config/rs6000/aix72.h: New file.
6038
6039 2018-02-28 Jakub Jelinek <jakub@redhat.com>
6040
6041 * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
6042 instead of warning_at with conditional singular and plural messages
6043 where possible.
6044
6045 PR target/52991
6046 * stor-layout.c (update_alignment_for_field): For
6047 targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
6048 && !DECL_PACKED (field), do the alignment update, just use
6049 only desired_align instead of MAX (type_align, desired_align)
6050 as the alignment.
6051 (place_field): Don't do known_align < desired_align handling
6052 early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
6053 is non-NULL, instead do it after rli->prev_field handling and
6054 only if not within a bitfield word. For DECL_PACKED (field)
6055 use type_align of BITS_PER_UNIT.
6056
6057 2018-02-28 Eric Botcazou <ebotcazou@adacore.com>
6058
6059 * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
6060 superfluous parentheses and trailing spaces.
6061
6062 2018-02-28 Richard Biener <rguenther@suse.de>
6063
6064 PR tree-optimization/84584
6065 * graphite-scop-detection.c (scop_detection::add_scop): Discard
6066 SCoPs with fake exit edge.
6067
6068 2018-02-28 Martin Liska <mliska@suse.cz>
6069
6070 PR testsuite/84597
6071 * timevar.c (timer::print): Fix format to properly print 100%
6072 values.
6073
6074 2018-02-28 Richard Biener <rguenther@suse.de>
6075
6076 PR middle-end/84607
6077 * genmatch.c (capture_info::walk_match): Do not mark
6078 captured expressions without operands as expr_p given
6079 they act more like predicates and should be subject to
6080 "lost tail" side-effect preserving.
6081
6082 2018-02-28 Alexandre Oliva <aoliva@redhat.com>
6083
6084 PR rtl-optimization/81611
6085 * auto-inc-dec.c (attempt_change): Move dead note from
6086 mem_insn if it's the next use of regno
6087 (find_address): Take address use of reg holding
6088 non-incremented value. Add parm to limit search to the named
6089 reg only.
6090 (merge_in_block): Attempt to use a mem insn that is the next
6091 use of the original regno.
6092
6093 2018-02-27 Martin Sebor <msebor@redhat.com>
6094
6095 PR c++/83871
6096 * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
6097 * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
6098
6099 2018-02-27 Martin Sebor <msebor@redhat.com>
6100
6101 PR translation/84207
6102 * diagnostic-core.h (warning_n, error_n, inform_n): Change
6103 n argument to unsigned HOST_WIDE_INT.
6104 * diagnostic.c (warning_n, error_n, inform_n): Ditto.
6105 (diagnostic_n_impl): Ditto. Handle arguments in excess of LONG_MAX.
6106 * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
6107 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
6108
6109 2018-02-27 Richard Biener <rguenther@suse.de>
6110
6111 PR tree-optimization/84512
6112 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
6113 Do not use the estimate returned from record_stmt_cost for
6114 the scalar iteration cost but sum properly using add_stmt_cost.
6115
6116 2018-02-27 Richard Biener <rguenther@suse.de>
6117
6118 PR tree-optimization/84466
6119 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
6120 Adjust last change to less strictly validate use operands.
6121
6122 2018-02-27 Martin Liska <mliska@suse.cz>
6123
6124 PR gcov-profile/84548
6125 * gcov.c (process_file): Allow partial overlap and consider it
6126 also as group functions.
6127 (output_lines): Properly calculate range of lines for a group.
6128
6129 2018-02-27 Martin Liska <mliska@suse.cz>
6130
6131 * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
6132 'ggc' suffixes. Change first column width.
6133 (timer::print): Fix formatting of the column.
6134
6135 2018-02-27 Alexandre Oliva <aoliva@redhat.com>
6136
6137 * tree-ssa-live.c (remove_unused_scope_block_p): Do not
6138 preserve inline entry blocks for the sake of debug inline
6139 entry point markers alone.
6140 (remove_unused_locals): Suggest in comments a better place to
6141 force the preservation of inline entry blocks that are
6142 otherwise unused, but do not preserve them.
6143
6144 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
6145
6146 * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
6147
6148 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
6149
6150 PR target/84039
6151 * config/i386/constraints.md (Bs): Replace
6152 ix86_indirect_branch_register with
6153 TARGET_INDIRECT_BRANCH_REGISTER.
6154 (Bw): Likewise.
6155 * config/i386/i386.md (indirect_jump): Likewise.
6156 (tablejump): Likewise.
6157 (*sibcall_memory): Likewise.
6158 (*sibcall_value_memory): Likewise.
6159 Peepholes of indirect call and jump via memory: Likewise.
6160 (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
6161 (*sibcall_value_GOT_32): Likewise.
6162 * config/i386/predicates.md (indirect_branch_operand): Likewise.
6163 (GOT_memory_operand): Likewise.
6164 (call_insn_operand): Likewise.
6165 (sibcall_insn_operand): Likewise.
6166 (GOT32_symbol_operand): Likewise.
6167 * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
6168
6169 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
6170
6171 PR rtl-optimization/83496
6172 * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
6173 booleans to RTXes. Call fix_reg_dead_note on every non-null element.
6174 (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
6175 redundant insn, if any.
6176 (relax_delay_slots): Likewise.
6177 (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
6178
6179 2018-02-26 Richard Sandiford <richard.sandiford@linaro.org>
6180
6181 PR tree-optimization/83965
6182 * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
6183 that grouped statements are part of a reduction chain. Return
6184 true if the statement is not marked as a reduction itself but
6185 is part of a group.
6186 (vect_recog_dot_prod_pattern): Don't check whether the statement
6187 is part of a group here.
6188 (vect_recog_sad_pattern): Likewise.
6189 (vect_recog_widen_sum_pattern): Likewise.
6190
6191 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
6192
6193 PR debug/84545
6194 * final.c (rest_of_clean_state): Also look for calls inside sequences.
6195
6196 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
6197
6198 PR target/84530
6199 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
6200 the bool argument.
6201 (ix86_output_indirect_function_return): New prototype.
6202 (ix86_split_simple_return_pop_internal): Likewise.
6203 * config/i386/i386.c (indirect_return_via_cx): New.
6204 (indirect_return_via_cx_bnd): Likewise.
6205 (indirect_thunk_name): Handle return va CX_REG.
6206 (output_indirect_thunk_function): Create alias for
6207 __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
6208 (ix86_output_indirect_jmp): Remove the bool argument.
6209 (ix86_output_indirect_function_return): New function.
6210 (ix86_split_simple_return_pop_internal): Likewise.
6211 * config/i386/i386.md (*indirect_jump): Don't pass false
6212 to ix86_output_indirect_jmp.
6213 (*tablejump_1): Likewise.
6214 (simple_return_pop_internal): Change it to define_insn_and_split.
6215 Call ix86_split_simple_return_pop_internal to split it for
6216 -mfunction-return=.
6217 (simple_return_indirect_internal): Call
6218 ix86_output_indirect_function_return instead of
6219 ix86_output_indirect_jmp.
6220
6221 2018-02-26 Jakub Jelinek <jakub@redhat.com>
6222
6223 PR bootstrap/84405
6224 * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
6225 memset and value initialization afterwards.
6226
6227 2018-02-26 Christophe Lyon <christophe.lyon@linaro.org>
6228
6229 * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
6230
6231 2018-02-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
6232
6233 PR target/84521
6234 * common/config/aarch64/aarch64-common.c
6235 (aarch_option_optimization_table[]): Switch
6236 off fomit-frame-pointer
6237
6238 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
6239 Chung-Ju Wu <jasonwucj@gmail.com>
6240
6241 * config/nds32/nds32-multiple.md (load_multiple): Disallow
6242 volatile memory.
6243 (store_multiple): Ditto.
6244
6245 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
6246
6247 * config.gcc: Add --with-cpu support for nds32 target.
6248 * config/nds32/nds32-opts.h (nds32_cpu_type): New.
6249 * config/nds32/nds32.opt: Add -mcpu= option.
6250
6251 2018-02-25 Segher Boessenkool <segher@kernel.crashing.org>
6252
6253 * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
6254 isel=yes): Warn for these deprecated options.
6255
6256 2018-02-23 David Edelsohn <dje.gcc@gmail.com>
6257
6258 * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
6259 ISA_2_5_MASKS_EMBEDDED.
6260
6261 2018-02-23 Jakub Jelinek <jakub@redhat.com>
6262
6263 * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
6264 p->max as pointers rather than using iterative_hash_expr.
6265
6266 2018-02-23 Carl Love <cel@us.ibm.com>
6267
6268 * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
6269 macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
6270 BU_P8V_OVERLOAD_2.
6271 * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
6272 P8V_BUILTIN_VEC_VSIGNED2. Change VSX_BUILTIN_VEC_VUNSIGNED2 to
6273 P8V_BUILTIN_VEC_VUNSIGNED2.
6274
6275 2018-02-22 Vladimir Makarov <vmakarov@redhat.com>
6276
6277 PR target/81572
6278 * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
6279 * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
6280 LRA_UNKNOWN_ALT.
6281 * lra-constraints.c (curr_insn_transform): Set up
6282 LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use
6283 LRA_UNKNOWN_ALT.
6284 (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
6285 * lra-eliminations.c (spill_pseudos): Ditto.
6286 (process_insn_for_elimination): Ditto.
6287 * lra-lives.c (reg_early_clobber_p): Use the new macros.
6288 * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
6289 LRA_NON_CLOBBERED_ALT.
6290
6291 2018-02-22 Martin Sebor <msebor@redhat.com>
6292
6293 PR tree-optimization/84480
6294 * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
6295 to maybe_diag_stxncpy_trunc. Call it.
6296 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
6297 from gimple_fold_builtin_strcpy. Print inlining stack.
6298 (handle_builtin_stxncpy): Print inlining stack.
6299 * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
6300
6301 2018-02-22 H.J. Lu <hongjiu.lu@intel.com>
6302
6303 PR target/84176
6304 * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
6305 error when -mindirect-branch=thunk-extern, -fcf-protection=branch
6306 and -fcheck-pointer-bounds are used together.
6307 (indirect_thunk_prefix): New enum.
6308 (indirect_thunk_need_prefix): New function.
6309 (indirect_thunk_name): Replace need_bnd_p with need_prefix. Use
6310 "_nt" instead of "_bnd" for NOTRACK prefix.
6311 (output_indirect_thunk): Replace need_bnd_p with need_prefix.
6312 (output_indirect_thunk_function): Likewise.
6313 (): Likewise.
6314 (ix86_code_end): Update output_indirect_thunk_function calls.
6315 (ix86_output_indirect_branch_via_reg): Replace
6316 ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
6317 (ix86_output_indirect_branch_via_push): Likewise.
6318 (ix86_output_function_return): Likewise.
6319 * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
6320 incompatible with -fcf-protection=branch and
6321 -fcheck-pointer-bounds.
6322
6323 2018-02-22 Steve Ellcey <sellcey@cavium.com>
6324
6325 PR target/83335
6326 * config/aarch64/aarch64.c (aarch64_print_address_internal):
6327 Change gcc_assert call to output_operand_lossage.
6328
6329 2018-02-22 Steve Ellcey <sellcey@cavium.com>
6330
6331 * doc/extend.texi (__builtin_extend_pointer): Document builtin.
6332
6333 2018-02-22 DJ Delorie <dj@redhat.com>
6334 Sebastian Perta <sebastian.perta@renesas.com>
6335 Oleg Endo <olegendo@gcc.gnu.org>
6336
6337 * config/rx/rx.c (rx_rtx_costs): New function.
6338 (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
6339
6340 2018-02-22 Thomas Preud'homme <thomas.preudhomme@arm.com>
6341
6342 * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
6343
6344 2018-02-22 Martin Liska <mliska@suse.cz>
6345
6346 PR driver/83193
6347 * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
6348 Add "native" as a possible value.
6349
6350 2018-02-22 Martin Liska <mliska@suse.cz>
6351
6352 PR driver/83193
6353 * config/i386/i386.c (ix86_option_override_internal):
6354 Add "native" as a possible value for -march and -mtune.
6355
6356 2018-02-22 Jakub Jelinek <jakub@redhat.com>
6357
6358 PR target/84502
6359 * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
6360 to all type variants.
6361
6362 PR tree-optimization/84503
6363 * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
6364 width as info->bitpos + info->bitsize - start.
6365 (merged_store_group::merge_overlapping): Simplify width computation.
6366 (check_no_overlap): New function.
6367 (imm_store_chain_info::try_coalesce_bswap): Compute expected
6368 start + width and last_order of the group, fail if check_no_overlap
6369 fails.
6370 (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
6371 to group if check_no_overlap fails.
6372
6373 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
6374
6375 * config/rs6000/altivec.md: Delete contraint arguments to
6376 define_expand, define_split, and define_peephole2, and in
6377 define_insn_and_split if always unused.
6378 * config/rs6000/darwin.md: Ditto.
6379 * config/rs6000/dfp.md: Ditto.
6380 * config/rs6000/rs6000.md: Ditto.
6381 * config/rs6000/sync.md: Ditto.
6382 * config/rs6000/vector.md: Ditto.
6383 * config/rs6000/vsx.md: Ditto.
6384
6385 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
6386
6387 * config/rs6000/altivec.md: Write output control strings as braced
6388 blocks instead of double-quoted strings.
6389 * config/rs6000/darwin.md: Ditto.
6390 * config/rs6000/rs6000.md: Ditto.
6391 * config/rs6000/vector.md: Ditto.
6392 * config/rs6000/vsx.md: Ditto.
6393
6394 2018-02-21 Jason Merrill <jason@redhat.com>
6395
6396 PR c++/84314 - ICE with templates and fastcall attribute.
6397 * attribs.c (build_type_attribute_qual_variant): Remove assert.
6398
6399 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
6400
6401 * ipa-cp.c (determine_versionability): Fix comment typos.
6402
6403 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
6404
6405 PR c/84229
6406 * ipa-cp.c (determine_versionability): Do not version functions caling
6407 va_arg_pack.
6408
6409 2018-02-21 Martin Liska <mliska@suse.cz>
6410
6411 PR driver/83193
6412 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
6413 Add "native" as a possible value.
6414 * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT): Define
6415 the macro when native cpu detection is available.
6416
6417 2018-02-21 Martin Liska <mliska@suse.cz>
6418
6419 PR driver/83193
6420 * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
6421 Add "native" as a possible value.
6422 * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
6423 when native cpu detection is available.
6424
6425 2018-02-21 Jakub Jelinek <jakub@redhat.com>
6426 Martin Sebor <msebor@redhat.com>
6427
6428 PR tree-optimization/84478
6429 * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
6430 false.
6431 * gimple-fold.c (get_range_strlen): Make minlen const and assume it
6432 can't be NULL. Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
6433 support which is conservatively correct, for 2 only stay conservative
6434 for maxlen. Formatting and comment capitalization fixes. Add STRICT
6435 argument to the 2 argument get_range_strlen, adjust 6 arg
6436 get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
6437 false.
6438 (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
6439 (gimple_fold_builtin_strlen): Pass true as last argument to
6440 get_range_strlen.
6441
6442 2018-02-20 Martin Sebor <msebor@redhat.com>
6443
6444 PR middle-end/84095
6445 * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
6446 (builtin_memref::set_base_and_offset): Same. Handle inner references.
6447 (builtin_memref::builtin_memref): Factor out parts into
6448 set_base_and_offset and call it.
6449
6450 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
6451
6452 PR middle-end/84406
6453 * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
6454 is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
6455 greater precision. If to_mode is a MODE_PARTIAL_INT, stop the
6456 search at the associated MODE_INT.
6457
6458 2018-02-20 Jeff Law <law@redhat.com>
6459
6460 PR middle-end/82123
6461 PR tree-optimization/81592
6462 PR middle-end/79257
6463 * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
6464 for range data rather than using global data.
6465 * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
6466 range data rather than using global data.
6467 * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
6468 pass it to children as needed.
6469 (struct directive::fmtresult): Similarly.
6470 (struct directive::set_width): Similarly.
6471 (struct directive::set_precision): Similarly.
6472 (format_integer, format_directive, parse_directive): Similarly.
6473 (format_none): Accept unnamed vr_values parameter.
6474 (format_percent, format_floating, format_character): Similarly.
6475 (format_string, format_plain): Similarly.
6476 * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
6477 the EVRP range analyzer for range data rather than using global data.
6478 * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
6479 gimple-ssa-evrp-analyze.h
6480 (class sprintf_dom_walker): Add after_dom_children member function.
6481 Add evrp_range_analyzer member.
6482 (sprintf_dom_walker::before_dom_children): Call into the EVRP
6483 range analyzer as needed.
6484 (sprintf_dom_walker::after_dom_children): New member function.
6485 * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
6486 if not optimizing.
6487 (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
6488 (evrp_range_analyzer::pop_to_marker): Likewise.
6489
6490 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
6491
6492 PR tree-optimization/84419
6493 * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
6494 with the required type if its current type is compatible but
6495 different.
6496
6497 2018-02-20 Jakub Jelinek <jakub@redhat.com>
6498
6499 PR middle-end/82004
6500 * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
6501 after vectorization.
6502
6503 2018-02-20 Martin Liska <mliska@suse.cz>
6504
6505 PR driver/83193
6506 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
6507 possible values if we don't have a hint.
6508
6509 2018-02-20 Martin Liska <mliska@suse.cz>
6510
6511 PR c/84310
6512 PR target/79747
6513 * final.c (shorten_branches): Build align_tab array with one
6514 more element.
6515 * opts.c (finish_options): Add alignment option limit check.
6516 (MAX_CODE_ALIGN): Likewise.
6517 (MAX_CODE_ALIGN_VALUE): Likewise.
6518 * doc/invoke.texi: Document maximum allowed option value for
6519 all -falign-* options.
6520
6521 2018-02-19 Jakub Jelinek <jakub@redhat.com>
6522
6523 PR target/84146
6524 * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
6525 * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
6526 * var-tracking.c (emit_note_insn_var_location): Remove all references
6527 to NOTE_INSN_CALL_ARG_LOCATION.
6528 (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
6529 the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
6530 Use copy_rtx_if_shared.
6531 * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
6532 NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
6533 (dwarf2out_var_location): Remove handling of
6534 NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
6535 on call_insn.
6536 * final.c (final_scan_insn): Remove all references to
6537 NOTE_INSN_CALL_ARG_LOCATION.
6538 (rest_of_clean_state): Likewise. Remove REG_CALL_ARG_LOCATION notes
6539 before dumping final insns.
6540 * except.c (emit_note_eh_region_end): Remove all references to
6541 NOTE_INSN_CALL_ARG_LOCATION.
6542 * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
6543 * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
6544 * config/arc/arc.c (hwloop_optimize): Likewise.
6545 * config/arm/arm.c (create_fix_barrier): Likewise.
6546 * config/s390/s390.c (s390_chunkify_start): Likewise.
6547 * config/sh/sh.c (find_barrier): Likewise.
6548 * config/i386/i386.c (rest_of_insert_endbranch,
6549 ix86_seh_fixup_eh_fallthru): Likewise.
6550 * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
6551 * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
6552 * config/frv/frv.c (frv_function_prologue): Likewise.
6553 * emit-rtl.c (try_split): Likewise. Copy over REG_CALL_ARG_LOCATION
6554 reg note.
6555 (note_outside_basic_block_p): Remove all references to
6556 NOTE_INSN_CALL_ARG_LOCATION.
6557 * gengtype.c (adjust_field_rtx_def): Likewise.
6558 * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
6559 Likewise.
6560 * jump.c (cleanup_barriers, delete_related_insns): Likewise.
6561 * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
6562
6563 PR c++/84444
6564 * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
6565 is ADDR_EXPR.
6566
6567 PR tree-optimization/84452
6568 * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
6569 expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
6570 is NULL.
6571
6572 2018-02-19 Martin Liska <mliska@suse.cz>
6573
6574 PR sanitizer/82183
6575 * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
6576
6577 2018-02-19 Martin Liska <mliska@suse.cz>
6578 Richard Sandiford <richard.sandiford@linaro.org>
6579
6580 PR tree-optimization/82491
6581 * gimple-fold.c (get_base_constructor): Make earlier bail out
6582 to prevent ubsan.
6583
6584 2018-02-19 Carl Love <cel@us.ibm.com>
6585
6586 * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
6587 BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
6588 BU_P8V_OVERLOAD_1.
6589 * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
6590 P8V_BUILTIN_VEC_NEG.
6591
6592 2018-02-19 Sebastian Perta <sebastian.perta@renesas.com>
6593
6594 * config/rl78/rl78.md (movdf): New define expand.
6595
6596 2018-02-19 Martin Liska <mliska@suse.cz>
6597
6598 PR other/80589
6599 * doc/invoke.texi: Fix typo.
6600 * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
6601
6602 2018-02-18 Segher Boessenkool <segher@kernel.crashing.org>
6603
6604 * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
6605 handle rs6000_single_float and rs6000_double_float specially for
6606 e500 family CPUs.
6607
6608 2018-02-16 Jeff Law <law@redhat.com>
6609
6610 * config/rx/rx.c (add_pop_cfi_notes): New function.;
6611 (pop_regs): Use it.
6612
6613 2018-02-16 Jakub Jelinek <jakub@redhat.com>
6614
6615 PR ipa/84425
6616 * ipa-inline.c (inline_small_functions): Fix a typo.
6617
6618 2018-02-16 Nathan Sidwell <nathan@acm.org>
6619
6620 * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
6621
6622 2018-02-16 Carl Love <cel@us.ibm.com>
6623
6624 * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
6625 Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
6626 from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
6627 * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
6628 expansion to P8V_BUILTIN_VEC_FLOAT2.
6629
6630 2018-02-16 Vladimir Makarov <vmakarov@redhat.com>
6631
6632 PR rtl-optimization/70023
6633 * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
6634 src_regno into account.
6635
6636 2018-02-16 Carl Love <cel@us.ibm.com>
6637
6638 * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
6639 * config/rs6000/rs6000-builtin.def: Remove macro expansion for
6640 VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
6641 * config/rs6000/rs6000.c: Remove case statements for
6642 P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
6643 P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
6644 and P9V_BUILTIN_VEC_VINSERT4B.
6645 * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
6646 P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
6647 * config/rs6000/vsx.md:
6648 * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
6649 vec_insert4b.
6650
6651 2018-02-16 Carl Love <cel@us.ibm.com>
6652
6653 * config/rs6000/altivec.h: Add builtin names vec_extract4b
6654 vec_insert4b.
6655 * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
6656 definitions.
6657 * config/rs6000/rs6000-c.c: Add the definitions for
6658 P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
6659 * config/rs6000/rs6000.c (altivec_expand_builtin): Add
6660 P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
6661 * config/rs6000/vsx.md: Add define_insn extract4b. Add define_expand
6662 definition for insert4b and define insn *insert3b_internal.
6663 * doc/extend.texi: Add documentation for vec_extract4b.
6664
6665 2018-02-16 Nathan Sidwell <nathan@acm.org>
6666
6667 * doc/extend.texi (Backwards Compatibility): Mention friend
6668 injection. Note for-scope is deprecated.
6669 * doc/invoke.texi (-ffriend-injection): Deprecate.
6670
6671 2018-02-16 Segher Boessenkool <segher@kernel.crashing.org>
6672
6673 * combine.c (try_combine): When adjusting LOG_LINKS for the destination
6674 that moved to I2, also allow destinations that are a paradoxical
6675 subreg (instead of a normal reg).
6676
6677 2018-02-16 Oleg Endo <olegendo@gcc.gnu.org>
6678
6679 PR target/83831
6680 * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
6681 to QImode.
6682
6683 2018-02-16 Richard Biener <rguenther@suse.de>
6684
6685 PR tree-optimization/84037
6686 PR tree-optimization/84016
6687 PR target/82862
6688 * config/i386/i386.c (ix86_builtin_vectorization_cost):
6689 Adjust vec_construct for the fact we need additional higher latency
6690 128bit inserts for AVX256 and AVX512 vector builds.
6691 (ix86_add_stmt_cost): Scale vector construction cost for
6692 elementwise loads.
6693
6694 2018-02-16 Richard Biener <rguenther@suse.de>
6695
6696 PR tree-optimization/84417
6697 * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
6698 the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
6699 (non_rewritable_lvalue_p): Likewise, use poly-ints.
6700
6701 2018-02-16 Martin Liska <mliska@suse.cz>
6702
6703 PR sanitizer/84307
6704 * internal-fn.def (ASAN_CHECK): Set proper flags.
6705 (ASAN_MARK): Likewise.
6706
6707 2018-02-16 Julia Koval <julia.koval@intel.com>
6708
6709 * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
6710 from PTA_CANNONLAKE.
6711
6712 2018-02-16 Jakub Jelinek <jakub@redhat.com>
6713
6714 PR target/84272
6715 * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
6716 Use ++iter rather than iter++ for std::list iterators.
6717 (func_fma_steering::dfs): Likewise. Don't delete nodes right away,
6718 defer deleting them until all nodes in the forest are processed. Do
6719 free even leaf nodes. Change to_process into auto_vec.
6720
6721 PR bootstrap/84405
6722 * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
6723 * vec.h (vec_default_construct): Use memset instead of placement new
6724 if BROKEN_VALUE_INITIALIZATION is defined.
6725 * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
6726 memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
6727 is defined.
6728
6729 PR rtl-optimization/83723
6730 * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
6731 * lra.c (lra_substitute_pseudo): Likewise. If true, use
6732 gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to
6733 recursive calls.
6734 (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
6735 callers.
6736 * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
6737
6738 2018-02-16 Eric Botcazou <ebotcazou@adacore.com>
6739
6740 PR rtl-optimization/81443
6741 * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
6742 from inner REGs to paradoxical SUBREGs.
6743
6744 2018-02-16 Richard Biener <rguenther@suse.de>
6745
6746 PR tree-optimization/84399
6747 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
6748 For operands we can analyze at their definition make sure we can
6749 analyze them at each use as well.
6750
6751 2018-02-16 Richard Biener <rguenther@suse.de>
6752
6753 PR tree-optimization/84190
6754 * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
6755 volatile accesses if the decl isn't volatile.
6756
6757 2018-02-15 Jason Merrill <jason@redhat.com>
6758
6759 PR c++/84314 - ICE with templates and fastcall attribute.
6760 * attribs.c (build_type_attribute_qual_variant): Don't clobber
6761 TYPE_CANONICAL on an existing type.
6762
6763 2018-02-15 Jakub Jelinek <jakub@redhat.com>
6764
6765 PR tree-optimization/84383
6766 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
6767 dstoff nor call operand_equal_p if dstbase is NULL.
6768
6769 PR tree-optimization/84334
6770 * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
6771 also a CONSTANT_CLASS_P, punt.
6772
6773 2018-02-14 Jim Wilson <jimw@sifive.com>
6774
6775 * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
6776 first SMALL_OPERAND check. New local min_second_step. Move assert
6777 to where locals are set. Add TARGET_RVC support.
6778 * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
6779
6780 2018-02-14 Indu Bhagat <indu.bhagat@oracle.com>
6781
6782 * doc/invoke.texi: Correct -Wformat-overflow code sample.
6783
6784 2018-02-14 Martin Sebor <msebor@redhat.com>
6785
6786 PR tree-optimization/83698
6787 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
6788 arrays constrain the offset range to their bounds.
6789 (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
6790 (builtin_access::overlap): Avoid setting the size of overlap if it's
6791 already been set.
6792 (maybe_diag_overlap): Also consider arrays when deciding what values
6793 of offsets to include in diagnostics.
6794
6795 2018-02-14 Martin Sebor <msebor@redhat.com>
6796
6797 PR c/84108
6798 * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
6799 that correspond to the kind of a declaration.
6800
6801 2018-02-14 John David Anglin <danglin@gcc.gnu.org>
6802
6803 PR target/83984
6804 * config/pa/pa.md: Load address of PIC label using the linkage table
6805 if the label is nonlocal.
6806
6807 2018-02-14 Kelvin Nilsen <kelvin@gcc.gnu.org>
6808
6809 * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
6810 warning message if user requests -maltivec=be.
6811 * doc/invoke.texi: Document deprecation of -maltivec=be.
6812
6813 2018-02-14 Will Schmidt <will_schmidt@vnet.ibm.com>
6814
6815 PR target/84220
6816 * config/rs6000/rs6000-c.c: Update definitions for
6817 ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
6818 VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
6819
6820 2018-02-14 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
6821
6822 PR target/84239
6823 * config/i386/cetintrin.h: Remove _rdssp[d|q] and
6824 add _get_ssp intrinsics. Remove argument from
6825 __builtin_ia32_rdssp[d|q].
6826 * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
6827 * config/i386/i386-builtin.def: Remove argument from
6828 __builtin_ia32_rdssp[d|q].
6829 * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
6830 ix86_expand_special_args_builtin for _rdssp[d|q].
6831 * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
6832 Clear register before usage.
6833 * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
6834 Add documentation for new _get_ssp and _inc_ssp intrinsics.
6835
6836 2018-02-14 Richard Sandiford <richard.sandiford@linaro.org>
6837
6838 PR tree-optimization/84357
6839 * tree-data-ref.c (object_address_invariant_in_loop_p): Check
6840 operand 1 of an ARRAY_REF too.
6841
6842 2018-02-14 Oleg Endo <olegendo@gcc.gnu.org>
6843
6844 PR target/83831
6845 * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
6846 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6847 declarations.
6848 (set_of_reg): New struct.
6849 (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
6850 * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
6851 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6852 functions.
6853 * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
6854 Split into bitclr, bitset, bitinvert patterns if appropriate.
6855 (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
6856 use rx_fuse_in_memory_bitop.
6857 (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
6858 to named insn, correct maximum insn length.
6859
6860 2018-02-14 Jozef Lawrynowicz <jozefl.gcc@gmail.com>
6861
6862 PR target/79242
6863 * machmode.def: Define a complex mode for PARTIAL_INT.
6864 * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
6865 MODE_PARTIAL_INT.
6866 * doc/rtl.texi: Document CSPImode.
6867 * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
6868 handling.
6869 (msp430_hard_regno_nregs_with_padding): Likewise.
6870
6871 2018-02-13 Peter Bergner <bergner@vnet.ibm.com>
6872
6873 PR target/84279
6874 * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
6875
6876 2018-02-13 Segher Boessenkool <segher@kernel.crashing.org>
6877
6878 PR rtl-optimization/84169
6879 * combine.c (try_combine): New variable split_i2i3. Set it to true if
6880 we generated a parallel as new i3 and we split that to new i2 and i3
6881 instructions. Handle split_i2i3 similar to swap_i2i3: scan the
6882 LOG_LINKs of i3 to see which of those need to link to i2 now. Link
6883 those to i2, not i1. Partially rewrite this scan code.
6884
6885 2018-02-13 Jakub Jelinek <jakub@redhat.com>
6886
6887 PR c/82210
6888 * stor-layout.c (place_field): For variable length fields, adjust
6889 offset_align afterwards not just based on the field's alignment,
6890 but also on the size.
6891
6892 PR middle-end/84309
6893 * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
6894 of exps and logs in the use_exp2 case.
6895
6896 2018-02-13 Jeff Law <law@redhat.com>
6897
6898 * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
6899 entry for "vector".
6900
6901 * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
6902 ARGS as unused.
6903
6904 2018-02-13 Alexandre Oliva <aoliva@redhat.com>
6905
6906 PR debug/84342
6907 PR debug/84319
6908 * common.opt (gas-loc-support, gas-locview-support): New.
6909 (ginline-points, ginternal-reset-location-views): New.
6910 * doc/invoke.texi: Document them. Use @itemx where intended.
6911 (gvariable-location-views): Adjust.
6912 * target.def (reset_location_view): New.
6913 * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
6914 (TARGET_RESET_LOCATION_VIEW): New.
6915 * doc/tm.texi: Rebuilt.
6916 * dwarf2out.c (dwarf2out_default_as_loc_support): New.
6917 (dwarf2out_default_as_locview_support): New.
6918 (output_asm_line_debug_info): Use option variables.
6919 (dwarf2out_maybe_output_loclist_view_pair): Likewise.
6920 (output_loc_list): Likewise.
6921 (add_high_low_attributes): Check option variables.
6922 Don't output entry view attribute in strict mode.
6923 (gen_inlined_subroutine_die): Check option variables.
6924 (dwarf2out_inline_entry): Likewise.
6925 (init_sections_and_labels): Likewise.
6926 (dwarf2out_early_finish): Likewise.
6927 (maybe_reset_location_view): New, from...
6928 (dwarf2out_var_location): ... here. Call it.
6929 * debug.h (dwarf2out_default_as_loc_support): Declare.
6930 (dwarf2out_default_as_locview_support): Declare.
6931 * hooks.c (hook_int_rtx_insn_0): New.
6932 * hooks.h (hook_int_rtx_insn_0): Declare.
6933 * toplev.c (process_options): Take -gas-loc-support and
6934 -gas-locview-support from dwarf2out. Enable
6935 -gvariable-location-views by default only with locview
6936 assembler support. Enable -ginternal-reset-location-views by
6937 default only if the target defines the corresponding hook.
6938 Enable -ginline-points by default if location views are
6939 enabled; force it disabled if statement frontiers are
6940 disabled.
6941 * tree-inline.c (expand_call_inline): Check option variables.
6942 * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
6943
6944 2018-02-13 Richard Sandiford <richard.sandiford@linaro.org>
6945
6946 PR tree-optimization/84321
6947 * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
6948 handling. Also check whether the anti-range contains any values
6949 that satisfy the mask; switch to a VR_RANGE if not.
6950
6951 2018-02-13 Paolo Bonzini <bonzini@gnu.org>
6952
6953 PR sanitizer/84340
6954 * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
6955
6956 2018-02-13 Martin Jambor <mjambor@suse.cz>
6957
6958 PR c++/83990
6959 * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
6960 of call statements, also set location of a load to a temporary.
6961
6962 2018-02-13 Sebastian Perta <sebastian.perta@renesas.com>
6963
6964 * config/rl78/rl78.c (add_vector_labels): New function.
6965 * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
6966 * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
6967 * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert
6968 which checks that no arguments are passed.
6969 * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
6970 * doc/extend.texi: Documentation for the new attribute.
6971
6972 2018-02-13 Andreas Schwab <schwab@suse.de>
6973
6974 * config/riscv/linux.h (CPP_SPEC): Define.
6975
6976 2018-02-13 Jakub Jelinek <jakub@redhat.com>
6977
6978 PR target/84335
6979 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
6980 OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
6981 OPTION_MASK_ISA_AES as first argument to def_builtin_const
6982 for AES builtins. Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
6983 instead of OPTION_MASK_ISA_PCLMUL as first argument to
6984 def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
6985 * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
6986 temporarily for AES and PCLMUL builtins.
6987
6988 PR tree-optimization/84339
6989 * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
6990 ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
6991 Formatting fixes.
6992
6993 PR middle-end/84309
6994 * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
6995 exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
6996 * generic-match-head.c (canonicalize_math_after_vectorization_p): New
6997 inline function.
6998 * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
6999 inline function.
7000 * omp-simd-clone.h: New file.
7001 * omp-simd-clone.c: Include omp-simd-clone.h.
7002 (expand_simd_clones): No longer static.
7003 * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
7004 cgraph.h and omp-simd-clone.h.
7005 (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
7006 (vect_recog_widen_shift_pattern): Formatting fix.
7007 (vect_pattern_recog_1): Don't check optab for calls.
7008
7009 PR target/84336
7010 * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
7011 operands[2] into a REG before using gen_lowpart on it.
7012
7013 2018-02-12 Jeff Law <law@redhat.com>
7014
7015 PR target/83760
7016 * config/sh/sh.c (find_barrier): Consider a sibling call
7017 a barrier as well.
7018
7019 * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
7020 successfully back substituting a reg.
7021
7022 2018-02-12 Richard Biener <rguenther@suse.de>
7023
7024 PR tree-optimization/84037
7025 * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
7026 parameter, move visited init to caller.
7027 (vect_slp_analyze_operations): Separate cost from validity
7028 check, initialize visited once for all instances.
7029 (vect_schedule_slp): Analyze map to CSE vectorized nodes once
7030 for all instances.
7031 * tree-vect-stmts.c (vect_model_simple_cost): Make early
7032 out an assert.
7033 (vect_model_promotion_demotion_cost): Likewise.
7034 (vectorizable_bswap): Guard cost modeling with !slp_node
7035 instead of !PURE_SLP_STMT to avoid double-counting on hybrid
7036 SLP stmts.
7037 (vectorizable_call): Likewise.
7038 (vectorizable_conversion): Likewise.
7039 (vectorizable_assignment): Likewise.
7040 (vectorizable_shift): Likewise.
7041 (vectorizable_operation): Likewise.
7042 (vectorizable_store): Likewise.
7043 (vectorizable_load): Likewise.
7044 (vectorizable_condition): Likewise.
7045 (vectorizable_comparison): Likewise.
7046
7047 2018-02-12 Paolo Bonzini <bonzini@gnu.org>
7048
7049 PR sanitizer/84307
7050 * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
7051 (ASAN_MARK): Fix fnspec to account for return value, change pointer
7052 argument from 'R' to 'W' so that the pointed-to datum is clobbered.
7053
7054 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
7055
7056 PR middle-end/83665
7057 * params.def (inline-min-speedup): Increase from 8 to 15.
7058 (max-inline-insns-auto): Decrease from 40 to 30.
7059 * ipa-split.c (consider_split): Add some buffer for function to
7060 be considered inlining candidate.
7061 * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
7062 default values.
7063
7064 2018-02-12 Richard Biener <rguenther@suse.de>
7065
7066 PR tree-optimization/84037
7067 * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
7068 matched stmts if we cannot swap the non-matched ones.
7069
7070 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
7071
7072 * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
7073 _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
7074 _mm_maskz_scalef_round_ss): New intrinsics.
7075 (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
7076 * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
7077 __builtin_ia32_scalefss_round): Remove.
7078 (__builtin_ia32_scalefsd_mask_round,
7079 __builtin_ia32_scalefss_mask_round): New intrinsics.
7080 * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
7081 (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
7082 ((match_operand:VF_128 2 "<round_nimm_predicate>"
7083 "<round_constraint>")): Changed to ...
7084 ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
7085 "<round_scalar_constraint>")): ... this.
7086 ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
7087 %0, %1, %2<round_op3>}"): Changed to ...
7088 ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
7089 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
7090 %2<round_scalar_mask_op3>}"): ... this.
7091 * config/i386/subst.md (round_scalar_nimm_predicate): New.
7092
7093 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
7094
7095 * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
7096 (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
7097 (_mm_maskz_sqrt_round_ss): New intrinsics.
7098 (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
7099 (__builtin_ia32_sqrtsd_mask_round)
7100 (__builtin_ia32_sqrtss_mask_round): New builtins.
7101 * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
7102 (__builtin_ia32_sqrtss_round): Remove.
7103 (__builtin_ia32_sqrtsd_mask_round)
7104 (__builtin_ia32_sqrtss_mask_round): New builtins.
7105 * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
7106 (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
7107 ((match_operand:VF_128 1 "vector_operand"
7108 "xBm,<round_constraint>")): Changed to ...
7109 ((match_operand:VF_128 1 "vector_operand"
7110 "xBm,<round_scalar_constraint>")): ... this.
7111 (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
7112 %0, %2, %<iptr>1<round_op3>}): Changed to ...
7113 (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
7114 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
7115 %<iptr>1<round_scalar_mask_op3>}): ... this.
7116 ((set_attr "prefix" "<round_prefix>")): Changed to ...
7117 ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
7118
7119 2018-02-11 Steven Munroe <munroesj@gcc.gnu.org>
7120
7121 PR target/84266
7122 * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
7123 Cast vec_cmpeq result to correct type.
7124 * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
7125 Cast vec_cmpgt result to correct type.
7126
7127 2018-02-11 Alexandre Oliva <aoliva@redhat.com>
7128
7129 * final.c (final_scan_insn_1): Renamed from...
7130 (final_scan_insn): ... this. New wrapper, to recover
7131 seen from the outermost call in recursive ones.
7132 * config/sparc/sparc.c (output_return): Drop seen from call.
7133 (output_sibcall): Likewise.
7134 * config/visium/visium.c (output_branch): Likewise.
7135
7136 2018-02-10 John David Anglin <danglin@gcc.gnu.org>
7137
7138 * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
7139 function label.
7140
7141 2018-02-10 Alan Modra <amodra@gmail.com>
7142
7143 PR target/84300
7144 * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
7145 Specify LR as an input.
7146
7147 2018-02-10 Jakub Jelinek <jakub@redhat.com>
7148
7149 PR sanitizer/83987
7150 * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
7151 remove_member_access_dummy_vars): New functions.
7152 (lower_omp_for, lower_omp_taskreg, lower_omp_target,
7153 lower_omp_1, execute_lower_omp): Use them.
7154
7155 PR rtl-optimization/84308
7156 * shrink-wrap.c (spread_components): Release todo vector.
7157
7158 2018-02-09 Vladimir Makarov <vmakarov@redhat.com>
7159
7160 PR rtl-optimization/57193
7161 * ira-color.c (struct allocno_color_data): Add member
7162 conflict_allocno_hard_prefs.
7163 (update_conflict_allocno_hard_prefs): New.
7164 (bucket_allocno_compare_func): Add a preference based on
7165 conflict_allocno_hard_prefs.
7166 (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
7167 (color_allocnos): Remove a dead code. Initiate
7168 conflict_allocno_hard_prefs. Call update_costs_from_prefs.
7169
7170 2018-02-09 Jakub Jelinek <jakub@redhat.com>
7171
7172 PR target/84226
7173 * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
7174 constraint from =wa to wa. Avoid a subreg on the output operand,
7175 instead use a pseudo and subreg it in a move.
7176 (p9_xxbrd_<mode>): Changed to ...
7177 (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
7178 (p9_xxbrd_v2df): New expander.
7179 (p9_xxbrw_<mode>): Changed to ...
7180 (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
7181 (p9_xxbrw_v4sf): New expander.
7182
7183 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
7184
7185 * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
7186
7187 2018-02-09 Peter Bergner <bergner@vnet.ibm.com>
7188
7189 PR target/83926
7190 * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
7191 multiply in 32-bit mode.
7192 (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
7193 (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
7194 mode.
7195
7196 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
7197
7198 * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
7199 to allow or block "symbol_ref" depending on the value of TARGET_JSR.
7200 * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
7201 * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
7202
7203 2018-02-09 Pierre-Marie de Rodat <derodat@adacore.com>
7204
7205 PR lto/84213
7206 * dwarf2out.c (is_trivial_indirect_ref): New function.
7207 (dwarf2out_late_global_decl): Do not generate a location
7208 attribute for variables that have a non-trivial DECL_VALUE_EXPR
7209 and that are not defined in the current unit.
7210
7211 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
7212
7213 * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
7214 instead of a libcall for UNORDERED.
7215
7216 2018-02-09 Tamar Christina <tamar.christina@arm.com>
7217
7218 PR target/82641
7219 * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
7220 __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
7221
7222 2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
7223
7224 PR target/PR84295
7225 * config/s390/s390.c (s390_set_current_function): Invoke
7226 s390_indirect_branch_settings also if fndecl didn't change.
7227
7228 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
7229
7230 * config/rs6000/rs6000.md (blockage): Set length to zero.
7231
7232 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
7233
7234 * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
7235
7236 2018-02-09 Jakub Jelinek <jakub@redhat.com>
7237
7238 PR sanitizer/84285
7239 * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
7240 STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
7241 -static-lib*san.
7242
7243 PR debug/84252
7244 * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
7245 PARALLEL incoming that failed vt_get_decl_and_offset check.
7246
7247 PR middle-end/84237
7248 * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
7249 * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
7250 TREE_READONLY bit.
7251 (get_variable_section): For decls in named .bss* sections pass true as
7252 second argument to bss_initializer_p.
7253
7254 2018-02-09 Marek Polacek <polacek@redhat.com>
7255 Jakub Jelinek <jakub@redhat.com>
7256
7257 PR c++/83659
7258 * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
7259 Formatting fixes. Verify first that tree_fits_poly_int64_p (op01).
7260 Sync some changes from cxx_fold_indirect_ref.
7261
7262 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
7263
7264 * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
7265 markers.
7266 * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
7267 (BLOCK_INLINE_ENTRY_LABEL): New.
7268 (dwarf2out_var_location): Disregard inline entry markers.
7269 (inline_entry_data): New struct.
7270 (inline_entry_data_hasher): New hashtable type.
7271 (inline_entry_data_hasher::hash): New.
7272 (inline_entry_data_hasher::equal): New.
7273 (inline_entry_data_table): New variable.
7274 (add_high_low_attributes): Add DW_AT_entry_pc and
7275 DW_AT_GNU_entry_view attributes if a pending entry is found
7276 in inline_entry_data_table. Add old entry_pc attribute only
7277 if debug nonbinding markers are disabled.
7278 (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
7279 markers are enabled.
7280 (block_within_block_p, dwarf2out_inline_entry): New.
7281 (dwarf2out_finish): Check that no entries remained in
7282 inline_entry_data_table.
7283 * final.c (reemit_insn_block_notes): Handle inline entry notes.
7284 (final_scan_insn, notice_source_line): Likewise.
7285 (rest_of_clean_state): Skip inline entry markers.
7286 * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
7287 markers.
7288 * gimple.c (gimple_build_debug_inline_entry): New.
7289 * gimple.h (enum gimple_debug_subcode): Add
7290 GIMPLE_DEBUG_INLINE_ENTRY.
7291 (gimple_build_debug_inline_entry): Declare.
7292 (gimple_debug_inline_entry_p): New.
7293 (gimple_debug_nonbind_marker_p): Adjust.
7294 * insn-notes.def (INLINE_ENTRY): New.
7295 * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
7296 inline entry marker notes.
7297 (print_insn): Likewise.
7298 * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
7299 (INSN_DEBUG_MARKER_KIND): Likewise.
7300 (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
7301 * tree-inline.c (expand_call_inline): Build and insert
7302 debug_inline_entry stmt.
7303 * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
7304 inline entry blocks early, if nonbind markers are enabled.
7305 (dump_scope_block): Dump fragment info.
7306 * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
7307 * doc/gimple.texi (gimple_debug_inline_entry_p): New.
7308 (gimple_build_debug_inline_entry): New.
7309 * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
7310 Enable/disable inline entry points too.
7311 * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
7312 (DEBUG_INSN): Describe inline entry markers.
7313
7314 * common.opt (gvariable-location-views): New.
7315 (gvariable-location-views=incompat5): New.
7316 * config.in: Rebuilt.
7317 * configure: Rebuilt.
7318 * configure.ac: Test assembler for view support.
7319 * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
7320 * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
7321 * dwarf2out.c (var_loc_view): New typedef.
7322 (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
7323 (dwarf2out_locviews_in_attribute): New.
7324 (dwarf2out_locviews_in_loclist): New.
7325 (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
7326 (enum dw_line_info_opcode): Add LI_adv_address.
7327 (struct dw_line_info_table): Add view.
7328 (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
7329 (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
7330 (zero_view_p): New variable.
7331 (ZERO_VIEW_P): New macro.
7332 (output_asm_line_debug_info): New.
7333 (struct var_loc_node): Add view.
7334 (add_AT_view_list, AT_loc_list): New.
7335 (add_var_loc_to_decl): Add view param. Test it against last.
7336 (new_loc_list): Add view params. Record them.
7337 (AT_loc_list_ptr): Handle loc and view lists.
7338 (view_list_to_loc_list_val_node): New.
7339 (print_dw_val): Handle dw_val_class_view_list.
7340 (size_of_die): Likewise.
7341 (value_format): Likewise.
7342 (loc_list_has_views): New.
7343 (gen_llsym): Set vl_symbol too.
7344 (maybe_gen_llsym, skip_loc_list_entry): New.
7345 (dwarf2out_maybe_output_loclist_view_pair): New.
7346 (output_loc_list): Output view list or entries too.
7347 (output_view_list_offset): New.
7348 (output_die): Handle dw_val_class_view_list.
7349 (output_dwarf_version): New.
7350 (output_compilation_unit_header): Use it.
7351 (output_skeleton_debug_sections): Likewise.
7352 (output_rnglists, output_line_info): Likewise.
7353 (output_pubnames, output_aranges): Update version comments.
7354 (output_one_line_info_table): Output view numbers in asm comments.
7355 (dw_loc_list): Determine current endview, pass it to new_loc_list.
7356 Call maybe_gen_llsym.
7357 (loc_list_from_tree_1): Adjust.
7358 (add_AT_location_description): Create view list attribute if
7359 needed, check it's absent otherwise.
7360 (convert_cfa_to_fb_loc_list): Adjust.
7361 (maybe_emit_file): Call output_asm_line_debug_info for test.
7362 (dwarf2out_var_location): Reset views as needed. Precompute
7363 add_var_loc_to_decl args. Call get_attr_min_length only if we have the
7364 attribute. Set view.
7365 (new_line_info_table): Reset next view.
7366 (set_cur_line_info_table): Call output_asm_line_debug_info for test.
7367 (dwarf2out_source_line): Likewise. Output view resets and labels to
7368 the assembler, or select appropriate line info opcodes.
7369 (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
7370 (optimize_string_length): Catch it. Adjust.
7371 (resolve_addr): Copy vl_symbol along with ll_symbol. Handle
7372 dw_val_class_view_list, and remove it if no longer needed.
7373 (hash_loc_list): Hash view numbers.
7374 (loc_list_hasher::equal): Compare them.
7375 (optimize_location_lists): Check whether a view list symbol is
7376 needed, and whether the locview attribute is present, and
7377 whether they match. Remove the locview attribute if no longer
7378 needed.
7379 (index_location_lists): Call skip_loc_list_entry for test.
7380 (dwarf2out_finish): Call output_asm_line_debug_info for test.
7381 Use output_dwarf_version.
7382 * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
7383 (struct dw_val_node): Add val_view_list.
7384 * final.c (SEEN_NEXT_VIEW): New.
7385 (set_next_view_needed): New.
7386 (clear_next_view_needed): New.
7387 (maybe_output_next_view): New.
7388 (final_start_function): Rename to...
7389 (final_start_function_1): ... this. Take pointer to FIRST,
7390 add SEEN parameter. Emit param bindings in the initial view.
7391 (final_start_function): Reintroduce SEEN-less interface.
7392 (final): Rename to...
7393 (final_1): ... this. Take SEEN parameter. Output final pending
7394 next view at the end.
7395 (final): Reintroduce seen-less interface.
7396 (final_scan_insn): Output pending next view before switching
7397 sections or ending a block. Mark the next view as needed when
7398 outputting variable locations. Notify debug backend of section
7399 changes, and of location view changes.
7400 (rest_of_handle_final): Adjust.
7401 * toplev.c (process_options): Autodetect value for debug variable
7402 location views option. Warn on incompat5 without -gdwarf-5.
7403 * doc/invoke.texi (gvariable-location-views): New.
7404 (gvariable-location-views=incompat5): New.
7405 (gno-variable-location-views): New.
7406
7407 2018-02-08 David Malcolm <dmalcolm@redhat.com>
7408
7409 PR tree-optimization/84136
7410 * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
7411 that the result of find_edge is non-NULL.
7412
7413 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
7414
7415 PR target/83008
7416 * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
7417 storing integer register in SImode. Fix cost of 256 and 512
7418 byte aligned SSE register store.
7419
7420 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
7421
7422 * config/i386/i386.c (ix86_multiplication_cost): Fix
7423 multiplication cost for TARGET_AVX512DQ.
7424
7425 2018-02-08 Marek Polacek <polacek@redhat.com>
7426
7427 PR tree-optimization/84238
7428 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
7429 get_range_strlen.
7430
7431 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
7432
7433 PR tree-optimization/84265
7434 * tree-vect-stmts.c (vectorizable_store): Don't treat
7435 VMAT_CONTIGUOUS accesses as grouped.
7436 (vectorizable_load): Likewise.
7437
7438 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
7439
7440 PR tree-optimization/81635
7441 * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
7442 * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
7443 (test_round_for_mask): New functions.
7444 (wide_int_cc_tests): Call test_round_for_mask.
7445 * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
7446 * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
7447 * tree-data-ref.c (split_constant_offset_1): Use it to refine the
7448 range returned by get_range_info.
7449
7450 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
7451
7452 PR ipa/81360
7453 * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
7454 * symtab.c: Include builtins.h
7455 (symtab_node::output_to_lto_symbol_table_p): Move here
7456 from lto-streamer-out.c:output_symbol_p.
7457 * lto-streamer-out.c (write_symbol): Turn early exit to assert.
7458 (output_symbol_p): Move all logic to symtab.c
7459 (produce_symtab): Update.
7460
7461 2018-02-08 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
7462
7463 * config/s390/s390-opts.h (enum indirect_branch): Define.
7464 * config/s390/s390-protos.h (s390_return_addr_from_memory)
7465 (s390_indirect_branch_via_thunk)
7466 (s390_indirect_branch_via_inline_thunk): Add function prototypes.
7467 (enum s390_indirect_branch_type): Define.
7468 * config/s390/s390.c (struct s390_frame_layout, struct
7469 machine_function): Remove.
7470 (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
7471 (indirect_branch_table_label_no, indirect_branch_table_name):
7472 Define variables.
7473 (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
7474 (enum s390_indirect_branch_option): Define.
7475 (s390_return_addr_from_memory): New function.
7476 (s390_handle_string_attribute): New function.
7477 (s390_attribute_table): Add new attribute handler.
7478 (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
7479 (s390_indirect_branch_via_thunk): New function.
7480 (s390_indirect_branch_via_inline_thunk): New function.
7481 (s390_function_ok_for_sibcall): When jumping via thunk disallow
7482 sibling call optimization for non z10 compiles.
7483 (s390_emit_call): Force indirect branch target to be a single
7484 register. Add r1 clobber for non-z10 compiles.
7485 (s390_emit_epilogue): Emit return jump via return_use expander.
7486 (s390_reorg): Handle JUMP_INSNs as execute targets.
7487 (s390_option_override_internal): Perform validity checks for the
7488 new command line options.
7489 (s390_indirect_branch_attrvalue): New function.
7490 (s390_indirect_branch_settings): New function.
7491 (s390_set_current_function): Invoke s390_indirect_branch_settings.
7492 (s390_output_indirect_thunk_function): New function.
7493 (s390_code_end): Implement target hook.
7494 (s390_case_values_threshold): Implement target hook.
7495 (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
7496 macros.
7497 * config/s390/s390.h (struct s390_frame_layout)
7498 (struct machine_function): Move here from s390.c.
7499 (TARGET_INDIRECT_BRANCH_NOBP_RET)
7500 (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
7501 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
7502 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
7503 (TARGET_INDIRECT_BRANCH_NOBP_CALL)
7504 (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
7505 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
7506 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
7507 (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
7508 * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
7509 (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
7510 (mnemonic attribute): Add values which aren't recognized
7511 automatically.
7512 ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
7513 pattern for branch conversion. Fix mnemonic attribute.
7514 ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
7515 indirect branch via thunk if requested.
7516 ("indirect_jump", "<code>"): Expand patterns for branch conversion.
7517 ("*indirect_jump"): Disable for branch conversion using out of
7518 line thunks.
7519 ("indirect_jump_via_thunk<mode>_z10")
7520 ("indirect_jump_via_thunk<mode>")
7521 ("indirect_jump_via_inlinethunk<mode>_z10")
7522 ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
7523 ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
7524 ("casesi_jump_via_inlinethunk<mode>_z10")
7525 ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
7526 ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
7527 ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
7528 ("*indirect2_jump"): Disable for branch conversion.
7529 ("casesi_jump"): Turn into expander and expand patterns for branch
7530 conversion.
7531 ("return_use"): New expander.
7532 ("*return"): Emit return via thunk and rename it to ...
7533 ("*return<mode>"): ... this one.
7534 * config/s390/s390.opt: Add new options and and enum for the
7535 option values.
7536
7537 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
7538
7539 * lra-constraints.c (match_reload): Unconditionally use
7540 gen_lowpart_SUBREG, rather than selecting between that
7541 and equivalent gen_rtx_SUBREG code.
7542
7543 2018-02-08 Richard Biener <rguenther@suse.de>
7544
7545 PR tree-optimization/84233
7546 * tree-ssa-phiprop.c (propagate_with_phi): Use separate
7547 changed flag instead of boguously re-using phi_inserted.
7548
7549 2018-02-08 Martin Jambor <mjambor@suse.cz>
7550
7551 * hsa-gen.c (get_symbol_for_decl): Set program allocation for
7552 static local variables.
7553
7554 2018-02-08 Richard Biener <rguenther@suse.de>
7555
7556 PR tree-optimization/84278
7557 * tree-vect-stmts.c (vectorizable_store): When looking for
7558 smaller vector types to perform grouped strided loads/stores
7559 make sure the mode is supported by the target.
7560 (vectorizable_load): Likewise.
7561
7562 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
7563
7564 * config/aarch64/aarch64.c (aarch64_components_for_bb):
7565 Increase LDP/STP opportunities by adding adjacent callee-saves.
7566
7567 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
7568
7569 PR rtl-optimization/84068
7570 PR rtl-optimization/83459
7571 * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
7572
7573 2018-02-08 Aldy Hernandez <aldyh@redhat.com>
7574
7575 PR tree-optimization/84224
7576 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
7577 * calls.c (gimple_alloca_call_p): Only return TRUE when we have
7578 non-zero arguments.
7579
7580 2018-02-07 Iain Sandoe <iain@codesourcery.com>
7581
7582 PR target/84113
7583 * config/rs6000/altivec.md (*restore_world): Remove LR use.
7584 * config/rs6000/predicates.md (restore_world_operation): Adjust op
7585 count, remove one USE.
7586
7587 2018-02-07 Michael Meissner <meissner@linux.vnet.ibm.com>
7588
7589 * doc/install.texi (Configuration): Document the
7590 --with-long-double-format={ibm,ieee} PowerPC configuration
7591 options.
7592
7593 PR target/84154
7594 * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
7595 Convert from define_expand to be define_insn_and_split. Rework
7596 float/double/_Float128 conversions to QI/HI/SImode to work with
7597 both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where
7598 conversions to QI/HImode types did a store and then a load to
7599 truncate the value. For conversions to VSX registers, don't split
7600 the insn, instead emit the code directly. Use the code iterator
7601 any_fix to combine signed and unsigned conversions.
7602 (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
7603 (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
7604 (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
7605 (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
7606 (fix_<mode>di2_hw): Likewise.
7607 (fixuns_<mode>di2_hw): Likewise.
7608 (fix_<mode>si2_hw): Likewise.
7609 (fixuns_<mode>si2_hw): Likewise.
7610 (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
7611 (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
7612 (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
7613 fix<uns>_trunc<SFDF:mode>si2_p8.
7614 (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
7615 used.
7616 (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
7617 (fix<uns>_<mode>_mem): Likewise.
7618 (fctiw<u>z_<mode>_mem): Likewise.
7619 (fix<uns>_<mode>_mem): Likewise.
7620 (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
7621 the register allocator from doing a direct move to the GPRs to do
7622 a store, and instead use the ISA 3.0 store byte/half-word from
7623 vector register instruction. For IEEE 128-bit floating point,
7624 also optimize stores of 32-bit ints.
7625 (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
7626
7627 2018-02-07 Alan Hayward <alan.hayward@arm.com>
7628
7629 * genextract.c (push_pathstr_operand): New function to support
7630 [a-zA-Z].
7631 (walk_rtx): Call push_pathstr_operand.
7632 (print_path): Support [a-zA-Z].
7633
7634 2018-02-07 Richard Biener <rguenther@suse.de>
7635
7636 PR tree-optimization/84037
7637 * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
7638 (cse_and_gimplify_to_preheader): Declare.
7639 (vect_get_place_in_interleaving_chain): Likewise.
7640 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
7641 ivexpr_map.
7642 (_loop_vec_info::~_loop_vec_info): Delete it.
7643 (cse_and_gimplify_to_preheader): New function.
7644 * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
7645 * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
7646 (vectorizable_load): Likewise. For grouped stores always base
7647 the IV on the first element.
7648 * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
7649 condition before gimplifying.
7650
7651 2018-02-07 Jakub Jelinek <jakub@redhat.com>
7652
7653 * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
7654 *DIV_EXPR and *MOD_EXPR.
7655
7656 2018-02-07 H.J. Lu <hongjiu.lu@intel.com>
7657
7658 PR target/84248
7659 * config/i386/i386.c (ix86_option_override_internal): Mask out
7660 the CF_SET bit when checking -fcf-protection.
7661
7662 2018-02-07 Tom de Vries <tom@codesourcery.com>
7663
7664 PR libgomp/84217
7665 * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
7666 enough.
7667
7668 2018-02-07 Richard Biener <rguenther@suse.de>
7669
7670 PR tree-optimization/84204
7671 * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
7672 this place.
7673
7674 PR tree-optimization/84205
7675 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
7676 special-case isl_ast_op_zdiv_r.
7677
7678 PR tree-optimization/84223
7679 * graphite-scop-detection.c (gather_bbs::before_dom_children):
7680 Only add conditions from within the region.
7681 (gather_bbs::after_dom_children): Adjust.
7682
7683 2018-02-07 Georg-Johann Lay <avr@gjlay.de>
7684
7685 PR target/84209
7686 * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
7687 * config/avr/avr.md: Only post-reload split REG-REG moves if
7688 either register is GENERAL_REG_P.
7689
7690 2018-02-07 Jakub Jelinek <jakub@redhat.com>
7691
7692 PR tree-optimization/84235
7693 * tree-ssa-scopedtables.c
7694 (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
7695 if the subtraction is performed in floating point type where NaNs are
7696 honored. For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
7697 build 1. Formatting fix.
7698
7699 2018-02-06 Jakub Jelinek <jakub@redhat.com>
7700
7701 PR target/84146
7702 * config/i386/i386.c (rest_of_insert_endbranch): Only skip
7703 NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
7704 and skip it regardless of bb boundaries. Use CALL_P macro,
7705 don't test INSN_P (insn) together with CALL_P or JUMP_P check
7706 unnecessarily, formatting fix.
7707
7708 2018-02-06 Michael Collison <michael.collison@arm.com>
7709
7710 * config/arm/thumb2.md:
7711 (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
7712 (*thumb_mov_notscc): Ditto.
7713
7714 2018-02-06 Michael Meissner <meissner@linux.vnet.ibm.com>
7715
7716 PR target/84154
7717 * config/rs6000/rs6000.md (su code attribute): Use "u" for
7718 unsigned_fix, not "s".
7719
7720 2018-02-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
7721
7722 * configure.ac (gcc_fn_eh_frame_ro): New function.
7723 (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
7724 correct .eh_frame permissions.
7725 * configure: Regenerate.
7726
7727 2018-02-06 Andrew Jenner <andrew@codeourcery.com>
7728
7729 * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
7730 irrelevant options.
7731
7732 2018-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
7733
7734 * config/rs6000/rs6000.c (rs6000_option_override_internal):
7735 Display warning message for -mno-speculate-indirect-jumps.
7736
7737 2018-02-06 Andrew Jenner <andrew@codesourcery.com>
7738
7739 * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
7740 Undocumented.
7741 * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
7742
7743 2018-02-06 Aldy Hernandez <aldyh@redhat.com>
7744
7745 PR tree-optimization/84225
7746 * tree-eh.c (find_trapping_overflow): Only call
7747 operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
7748
7749 2018-02-06 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
7750
7751 PR target/84145
7752 * config/i386/i386.c: Reimplement the check of possible options
7753 -mibt/-mshstk conbination. Change error messages.
7754 * doc/invoke.texi: Fix a typo: remove extra '='.
7755
7756 2018-02-06 Marek Polacek <polacek@redhat.com>
7757
7758 PR tree-optimization/84228
7759 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
7760
7761 2018-02-06 Tamar Christina <tamar.christina@arm.com>
7762
7763 PR target/82641
7764 * config/arm/arm.c (arm_print_asm_arch_directives): Record already
7765 emitted arch directives.
7766 * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
7767 __ARM_FEATURE_COPROC before changing architectures.
7768
7769 2018-02-06 Richard Biener <rguenther@suse.de>
7770
7771 * config/i386/i386.c (print_reg): Fix typo.
7772 (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
7773
7774 2018-02-06 Eric Botcazou <ebotcazou@adacore.com>
7775
7776 * configure: Regenerate.
7777
7778 2018-02-05 Martin Sebor <msebor@redhat.com>
7779
7780 PR tree-optimization/83369
7781 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
7782 inlining context.
7783
7784 2018-02-05 Martin Liska <mliska@suse.cz>
7785
7786 * doc/invoke.texi: Cherry-pick upstream r323995.
7787
7788 2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
7789
7790 * ira.c (ira_init_register_move_cost): Adjust comment.
7791
7792 2018-02-05 Martin Liska <mliska@suse.cz>
7793
7794 PR gcov-profile/84137
7795 * doc/gcov.texi: Fix typo in documentation.
7796
7797 2018-02-05 Martin Liska <mliska@suse.cz>
7798
7799 PR gcov-profile/83879
7800 * doc/gcov.texi: Document necessity of --dynamic-list-data when
7801 using dlopen functionality.
7802
7803 2018-02-05 Olga Makhotina <olga.makhotina@intel.com>
7804
7805 * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
7806 _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
7807 _mm_maskz_range_ss, _mm_mask_range_round_ss,
7808 _mm_maskz_range_round_ss): New intrinsics.
7809 (__builtin_ia32_rangesd128_round)
7810 (__builtin_ia32_rangess128_round): Remove.
7811 (__builtin_ia32_rangesd128_mask_round,
7812 __builtin_ia32_rangess128_mask_round): New builtins.
7813 * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
7814 __builtin_ia32_rangess128_round): Remove.
7815 (__builtin_ia32_rangesd128_mask_round,
7816 __builtin_ia32_rangess128_mask_round): New builtins.
7817 * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
7818 (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
7819 ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
7820 "<round_saeonly_constraint>")): Changed to ...
7821 ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
7822 "<round_saeonly_scalar_constraint>")): ... this.
7823 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
7824 %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
7825 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
7826 %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
7827 %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
7828
7829 2018-02-02 Andrew Jenner <andrew@codesourcery.com>
7830
7831 * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
7832 options.
7833 * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
7834 Remove all values except native, 8540 and 8548.
7835
7836 2018-02-02 H.J. Lu <hongjiu.lu@intel.com>
7837
7838 * config/i386/i386.c (ix86_output_function_return): Pass
7839 INVALID_REGNUM, instead of -1, as invalid register number to
7840 indirect_thunk_name and output_indirect_thunk.
7841
7842 2018-02-02 Julia Koval <julia.koval@intel.com>
7843
7844 * config.gcc: Add -march=icelake.
7845 * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
7846 * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
7847 * config/i386/i386.c (processor_costs): Add m_ICELAKE.
7848 (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
7849 PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
7850 (processor_target_table): Add icelake.
7851 (ix86_option_override_internal): Handle new PTAs.
7852 (get_builtin_code_for_version): Handle icelake.
7853 (M_INTEL_COREI7_ICELAKE): New.
7854 (fold_builtin_cpu): Handle icelake.
7855 * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
7856 * doc/invoke.texi: Add -march=icelake.
7857
7858 2018-02-02 Julia Koval <julia.koval@intel.com>
7859
7860 * config/i386/i386.c (ix86_option_override_internal): Change flags type
7861 to wide_int_bitmask.
7862 * wide-int-bitmask.h: New.
7863
7864 2018-02-02 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
7865
7866 PR target/84066
7867 * config/i386/i386.md: Replace Pmode with word_mode in
7868 builtin_setjmp_setup and builtin_longjmp to support x32.
7869
7870 2018-02-01 Peter Bergner <bergner@vnet.ibm.com>
7871
7872 PR target/56010
7873 PR target/83743
7874 * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
7875 #include "opts.h".
7876 (rs6000_supported_cpu_names): New static variable.
7877 (linux_cpu_translation_table): Likewise.
7878 (elf_platform) <cpu>: Define new static variable and use it.
7879 Translate kernel AT_PLATFORM name to canonical name if needed.
7880 Error if platform name is unknown.
7881
7882 2018-02-01 Aldy Hernandez <aldyh@redhat.com>
7883
7884 PR target/84089
7885 * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
7886
7887 2018-02-01 Jeff Law <law@redhat.com>
7888
7889 PR target/84128
7890 * config/i386/i386.c (release_scratch_register_on_entry): Add new
7891 OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore
7892 the scratch if RELEASE_VIA_POP is false.
7893 (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
7894 If we have to save a temporary register, decrement SIZE appropriately.
7895 Pass new arguments to release_scratch_register_on_entry.
7896 (ix86_adjust_stack_and_probe): Likewise.
7897 (ix86_emit_probe_stack_range): Pass new arguments to
7898 release_scratch_register_on_entry.
7899
7900 2018-02-01 Uros Bizjak <ubizjak@gmail.com>
7901
7902 PR rtl-optimization/84157
7903 * combine.c (change_zero_ext): Use REG_P predicate in
7904 front of HARD_REGISTER_P predicate.
7905
7906 2018-02-01 Georg-Johann Lay <avr@gjlay.de>
7907
7908 * config/avr/avr.c (avr_option_override): Move disabling of
7909 -fdelete-null-pointer-checks to...
7910 * common/config/avr/avr-common.c (avr_option_optimization_table):
7911 ...here.
7912
7913 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7914
7915 PR tree-optimization/81635
7916 * tree-data-ref.c (split_constant_offset_1): For types that
7917 wrap on overflow, try to use range info to prove that wrapping
7918 cannot occur.
7919
7920 2018-02-01 Renlin Li <renlin.li@arm.com>
7921
7922 PR target/83370
7923 * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
7924 TAILCALL_ADDR_REGS.
7925 (aarch64_register_move_cost): Likewise.
7926 * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
7927 TAILCALL_ADDR_REGS.
7928 (REG_CLASS_NAMES): Likewise.
7929 (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
7930 TAILCALL_ADDR_REGS. Remove IP registers.
7931 * config/aarch64/aarch64.md (Ucs): Update register constraint.
7932
7933 2018-02-01 Richard Biener <rguenther@suse.de>
7934
7935 * domwalk.h (dom_walker::dom_walker): Add additional constructor
7936 for specifying RPO order and allow NULL for that.
7937 * domwalk.c (dom_walker::dom_walker): Likewise.
7938 (dom_walker::walk): Handle NULL RPO order.
7939 * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
7940 in RPO order.
7941 (rewrite_update_dom_walker): Likewise.
7942 (mark_def_dom_walker): Likewise.
7943
7944 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7945
7946 * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
7947 (aarch64_maybe_expand_sve_subreg_move): Declare.
7948 * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
7949 * config/aarch64/predicates.md (aarch64_any_register_operand): New
7950 predicate.
7951 * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
7952 that are semantically a reverse operation.
7953 (*aarch64_sve_mov<mode>_subreg_be): New pattern.
7954 * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
7955 (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
7956 functions.
7957 (aarch64_can_change_mode_class): For big-endian, forbid changes
7958 between two SVE modes if they have different element sizes.
7959
7960 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7961
7962 * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
7963 the TImode handling for big-endian targets.
7964
7965 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7966
7967 * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
7968 (*sve_ld1rq<Vesize>): ... this new pattern. Handle all element sizes,
7969 not just bytes.
7970 * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
7971 Remove BSWAP handing for big-endian targets and use the form of
7972 LD1RQ appropariate for the mode.
7973
7974 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7975
7976 * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
7977 all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
7978 duplicated element.
7979
7980 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7981
7982 PR tearget/83845
7983 * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
7984 check for operands that need to go through aarch64_sve_reload_be.
7985
7986 2018-02-01 Jakub Jelinek <jakub@redhat.com>
7987
7988 PR tree-optimization/81661
7989 PR tree-optimization/84117
7990 * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
7991 * tree-eh.c: Include gimplify.h.
7992 (find_trapping_overflow, replace_trapping_overflow,
7993 rewrite_to_non_trapping_overflow): New functions.
7994 * tree-vect-loop.c: Include tree-eh.h.
7995 (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
7996 * tree-data-ref.c: Include tree-eh.h.
7997 (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
7998
7999 2018-01-31 Uros Bizjak <ubizjak@gmail.com>
8000
8001 PR rtl-optimization/84123
8002 * combine.c (change_zero_ext): Check if hard register satisfies
8003 can_change_dest_mode before calling gen_lowpart_SUBREG.
8004
8005 2018-01-31 Vladimir Makarov <vmakarov@redhat.com>
8006
8007 PR target/82444
8008 * ira.c (ira_init_register_move_cost): Remove assert.
8009
8010 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
8011
8012 PR rtl-optimization/84071
8013 * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
8014 * doc/tm.texi: Regenerate.
8015
8016 2018-01-31 Richard Biener <rguenther@suse.de>
8017
8018 PR tree-optimization/84132
8019 * tree-data-ref.c (analyze_miv_subscript): Properly
8020 check whether evolution_function_is_affine_multivariate_p
8021 before calling gcd_of_steps_may_divide_p.
8022
8023 2018-01-31 Julia Koval <julia.koval@intel.com>
8024
8025 PR target/83618
8026 * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
8027 * config/i386/i386.md (rdpid_rex64) New.
8028 (rdpid): Make 32bit only.
8029
8030 2018-01-29 Aldy Hernandez <aldyh@redhat.com>
8031
8032 PR lto/84105
8033 * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
8034 an IDENTIFIER_NODE for FUNCTION_TYPE's.
8035
8036 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
8037
8038 Revert
8039 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
8040
8041 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
8042
8043 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
8044
8045 PR rtl-optimization/84071
8046 * combine.c (record_dead_and_set_regs_1): Record the source unmodified
8047 for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
8048
8049 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
8050
8051 * config/arc/arc.c (arc_handle_aux_attribute): New function.
8052 (arc_attribute_table): Add 'aux' attribute.
8053 (arc_in_small_data_p): Consider aux like variables.
8054 (arc_is_aux_reg_p): New function.
8055 (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
8056 (arc_get_aux_arg): New function.
8057 (prepare_move_operands): Handle aux-register access.
8058 (arc_handle_aux_attribute): New function.
8059 * doc/extend.texi (ARC Variable attributes): Add subsection.
8060
8061 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
8062
8063 * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
8064 * config/arc/arc.c (arc_handle_uncached_attribute): New function.
8065 (arc_attribute_table): Add 'uncached' attribute.
8066 (arc_print_operand): Print '.di' flag for uncached memory
8067 accesses.
8068 (arc_in_small_data_p): Do not consider for small data the uncached
8069 types.
8070 (arc_is_uncached_mem_p): New function.
8071 * config/arc/predicates.md (compact_store_memory_operand): Check
8072 for uncached memory accesses.
8073 (nonvol_nonimm_operand): Likewise.
8074 * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
8075
8076 2018-01-31 Jakub Jelinek <jakub@redhat.com>
8077
8078 PR c/84100
8079 * common.opt (falign-functions=, falign-jumps=, falign-labels=,
8080 falign-loops=): Add Optimization flag.
8081
8082 2018-01-30 Jeff Law <law@redhat.com>
8083
8084 PR target/84064
8085 * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
8086 INT_REGISTERS_SAVED. Check it prior to calling
8087 get_scratch_register_on_entry.
8088 (ix86_adjust_stack_and_probe): Similarly.
8089 (ix86_emit_probe_stack_range): Similarly.
8090 (ix86_expand_prologue): Corresponding changes.
8091
8092 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8093
8094 PR target/40411
8095 * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
8096 -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
8097
8098 2018-01-30 Vladimir Makarov <vmakarov@redhat.com>
8099
8100 PR target/84112
8101 * lra-constraints.c (curr_insn_transform): Process AND in the
8102 address.
8103
8104 2018-01-30 Jakub Jelinek <jakub@redhat.com>
8105
8106 PR rtl-optimization/83986
8107 * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
8108 dependence against last_pending_memory_flush in addition to
8109 pending_jump_insns.
8110
8111 2018-01-30 Alexandre Oliva <aoliva@redhat.com>
8112
8113 PR tree-optimization/81611
8114 * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
8115 copies.
8116
8117 2018-01-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
8118
8119 PR target/83758
8120 * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
8121 a reg rtx.
8122
8123 2018-01-30 Richard Biener <rguenther@suse.de>
8124 Jakub Jelinek <jakub@redhat.com>
8125
8126 PR tree-optimization/84111
8127 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
8128 inner loops added during recursion, as they don't have up-to-date
8129 SSA form.
8130
8131 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
8132
8133 PR ipa/81360
8134 * ipa-inline.c (can_inline_edge_p): Break out late tests to...
8135 (can_inline_edge_by_limits_p): ... here.
8136 (can_early_inline_edge_p, check_callers,
8137 update_caller_keys, update_callee_keys, recursive_inlining,
8138 add_new_edges_to_heap, speculation_useful_p,
8139 inline_small_functions,
8140 inline_small_functions, flatten_function,
8141 inline_to_all_callers_1): Update.
8142
8143 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
8144
8145 * profile-count.c (profile_count::combine_with_ipa_count): Handle
8146 zeros correctly.
8147
8148 2018-01-30 Richard Biener <rguenther@suse.de>
8149
8150 PR tree-optimization/83008
8151 * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
8152 invariant and constant vector uses in stmts when they need
8153 more than one stmt.
8154
8155 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8156
8157 PR bootstrap/84017
8158 * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
8159 * configure: Regenerate.
8160
8161 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
8162
8163 * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
8164 pattern.
8165 (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
8166 Use gen_rtx_REG rather than gen_lowpart.
8167
8168 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
8169
8170 * lra-constraints.c (match_reload): Use subreg_lowpart_offset
8171 rather than 0 when creating partial subregs.
8172
8173 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
8174
8175 * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
8176 of usage.
8177
8178 2018-01-29 Michael Meissner <meissner@linux.vnet.ibm.com>
8179
8180 PR target/81550
8181 * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
8182 and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
8183 -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
8184 flags. This restores the settings used before the 2017-07-24.
8185 Turning off pre increment/decrement/modify allows IVOPTS to
8186 optimize DF/SF loops where the index is an int.
8187
8188 2018-01-29 Richard Biener <rguenther@suse.de>
8189 Kelvin Nilsen <kelvin@gcc.gnu.org>
8190
8191 PR bootstrap/80867
8192 * tree-vect-stmts.c (vectorizable_call): Don't call
8193 targetm.vectorize_builtin_md_vectorized_function if callee is
8194 NULL.
8195
8196 2018-01-22 Carl Love <cel@us.ibm.com>
8197
8198 * doc/extend.tex: Fix typo in second arg in
8199 __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
8200
8201 2018-01-29 Richard Biener <rguenther@suse.de>
8202
8203 PR tree-optimization/84086
8204 * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
8205 (flush_ssaname_freelist): When SSA names were released reset
8206 the SCEV hash table.
8207
8208 2018-01-29 Richard Biener <rguenther@suse.de>
8209
8210 PR tree-optimization/84057
8211 * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
8212 removed paths when removing edges.
8213
8214 2018-01-27 H.J. Lu <hongjiu.lu@intel.com>
8215
8216 * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
8217 -mfunction-return=@var{choice}.
8218
8219 2018-01-27 Bernd Edlinger <bernd.edlinger@hotmail.de>
8220
8221 PR diagnostic/84034
8222 * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
8223 Handle CR like TAB.
8224 (layout::print_source_line): Likewise.
8225 (test_get_line_width_without_trailing_whitespace): Add test cases.
8226
8227 2018-01-27 Jakub Jelinek <jakub@redhat.com>
8228
8229 PR middle-end/84040
8230 * sched-deps.c (sched_macro_fuse_insns): Return immediately for
8231 debug insns.
8232
8233 2018-01-26 Jim Wilson <jimw@sifive.com>
8234
8235 * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
8236
8237 * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
8238 specified.
8239
8240 2018-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8241
8242 * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
8243 and CMP + SUB-immediate -> SUBS.
8244
8245 2018-01-26 Martin Sebor <msebor@redhat.com>
8246
8247 PR tree-optimization/83896
8248 * tree-ssa-strlen.c (get_string_len): Rename...
8249 (get_string_cst_length): ...to this. Return HOST_WIDE_INT.
8250 Avoid assuming length is constant.
8251 (handle_char_store): Use HOST_WIDE_INT for string length.
8252
8253 2018-01-26 Uros Bizjak <ubizjak@gmail.com>
8254
8255 PR target/81763
8256 * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
8257 to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
8258
8259 2018-01-26 Richard Biener <rguenther@suse.de>
8260
8261 PR rtl-optimization/84003
8262 * dse.c (record_store): Only record redundant stores when
8263 the earlier store aliases at least all accesses the later one does.
8264
8265 2018-01-26 Jakub Jelinek <jakub@redhat.com>
8266
8267 PR rtl-optimization/83985
8268 * dce.c (deletable_insn_p): Return false for separate shrink wrapping
8269 REG_CFA_RESTORE insns.
8270 (delete_unmarked_insns): Don't ignore separate shrink wrapping
8271 REG_CFA_RESTORE insns here.
8272
8273 PR c/83989
8274 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
8275 use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
8276
8277 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8278
8279 * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
8280 * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
8281 (arc_init): Likewise.
8282 (arc_override_options): Likewise.
8283 (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
8284 value.
8285 (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
8286 support.
8287 * config/arc/arc.h (TARGET_DBNZ): Define.
8288 * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
8289 properly set the tune attribute.
8290 (dbnz): Use TARGET_DBNZ guard.
8291 * config/arc/arc.opt (mtune): Add core3 option.
8292
8293 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8294
8295 * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
8296 recognize new pic like addresses.
8297 (arc_delegitimize_address): Clean up.
8298
8299 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8300
8301 * config/arc/arc-arches.def: Option mrf16 valid for all
8302 architectures.
8303 * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
8304 * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
8305 * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
8306 * config/arc/arc-tables.opt: Regenerate.
8307 * config/arc/arc.c (arc_conditional_register_usage): Handle
8308 reduced register file case.
8309 (arc_file_start): Set must have build attributes.
8310 * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
8311 mrf16 option value.
8312 * config/arc/arc.opt (mrf16): Add new option.
8313 * config/arc/elf.h (ATTRIBUTE_PCS): Define.
8314 * config/arc/genmultilib.awk: Handle new mrf16 option.
8315 * config/arc/linux.h (ATTRIBUTE_PCS): Define.
8316 * config/arc/t-multilib: Regenerate.
8317 * doc/invoke.texi (ARC Options): Document mrf16 option.
8318
8319 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8320
8321 * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
8322 * config/arc/arc.c (arc_handle_secure_attribute): New function.
8323 (arc_attribute_table): Add 'secure_call' attribute.
8324 (arc_print_operand): Print secure call operand.
8325 (arc_function_ok_for_sibcall): Don't optimize tail calls when
8326 secure.
8327 (arc_is_secure_call_p): New function. * config/arc/arc.md
8328 (call_i): Add support for sjli instruction.
8329 (call_value_i): Likewise.
8330 * config/arc/constraints.md (Csc): New constraint.
8331
8332 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8333 John Eric Martin <John.Martin@emmicro-us.com>
8334
8335 * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
8336 * config/arc/arc.c (_arc_jli_section): New struct.
8337 (arc_jli_section): New type.
8338 (rc_jli_sections): New static variable.
8339 (arc_handle_jli_attribute): New function.
8340 (arc_attribute_table): Add jli_always and jli_fixed attribute.
8341 (arc_file_end): New function.
8342 (TARGET_ASM_FILE_END): Define.
8343 (arc_print_operand): Reuse 'S' letter for JLI output instruction.
8344 (arc_add_jli_section): New function.
8345 (jli_call_scan): Likewise.
8346 (arc_reorg): Call jli_call_scan.
8347 (arc_output_addsi): Remove 'S' from printing asm operand.
8348 (arc_is_jli_call_p): New function.
8349 * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
8350 operand.
8351 (movhi_insn): Likewise.
8352 (movsi_insn): Likewise.
8353 (movsi_set_cc_insn): Likewise.
8354 (loadqi_update): Likewise.
8355 (load_zeroextendqisi_update): Likewise.
8356 (load_signextendqisi_update): Likewise.
8357 (loadhi_update): Likewise.
8358 (load_zeroextendhisi_update): Likewise.
8359 (load_signextendhisi_update): Likewise.
8360 (loadsi_update): Likewise.
8361 (loadsf_update): Likewise.
8362 (movsicc_insn): Likewise.
8363 (bset_insn): Likewise.
8364 (bxor_insn): Likewise.
8365 (bclr_insn): Likewise.
8366 (bmsk_insn): Likewise.
8367 (bicsi3_insn): Likewise.
8368 (cmpsi_cc_c_insn): Likewise.
8369 (movsi_ne): Likewise.
8370 (movsi_cond_exec): Likewise.
8371 (clrsbsi2): Likewise.
8372 (norm_f): Likewise.
8373 (normw): Likewise.
8374 (swap): Likewise.
8375 (divaw): Likewise.
8376 (flag): Likewise.
8377 (sr): Likewise.
8378 (kflag): Likewise.
8379 (ffs): Likewise.
8380 (ffs_f): Likewise.
8381 (fls): Likewise.
8382 (call_i): Remove 'S' asm letter, add jli instruction.
8383 (call_value_i): Likewise.
8384 * config/arc/arc.op (mjli-always): New option.
8385 * config/arc/constraints.md (Cji): New constraint.
8386 * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
8387 operand.
8388 (subsf3_fpx): Likewise.
8389 (mulsf3_fpx): Likewise.
8390 * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
8391 asm operand.
8392 * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
8393 function attrbutes.
8394 * doc/invoke.texi (ARC): Document mjli-always option.
8395
8396 2018-01-26 Sebastian Perta <sebastian.perta@renesas.com>
8397
8398 * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const
8399 avoid addition with 0 and use incw and decw where possible.
8400
8401 2018-01-26 Richard Biener <rguenther@suse.de>
8402
8403 PR tree-optimization/81082
8404 * fold-const.c (fold_plusminus_mult_expr): Do not perform the
8405 association if it requires casting to unsigned.
8406 * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
8407 from fold_plusminus_mult_expr to catch important cases late when
8408 range info is available.
8409
8410 2018-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8411
8412 * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
8413 * configure.ac (hidden_linkonce): New test.
8414 * configure: Regenerate.
8415 * config.in: Regenerate.
8416
8417 2018-01-26 Julia Koval <julia.koval@intel.com>
8418
8419 * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
8420 _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
8421 _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
8422 _mm_mask_bitshuffle_epi64_mask): Fix type.
8423 * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
8424 USI_FTYPE_V4DI_V4DI_USI): Remove.
8425 * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
8426 __builtin_ia32_vpshufbitqmb256_mask,
8427 __builtin_ia32_vpshufbitqmb128_mask): Fix types.
8428 * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
8429 * config/i386/sse.md (VI1_AVX512VLBW): Change types.
8430
8431 2018-01-26 Alan Modra <amodra@gmail.com>
8432
8433 PR target/84033
8434 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
8435 UNSPEC_VBPERMQ. Sort other unspecs.
8436
8437 2018-01-25 David Edelsohn <dje.gcc@gmail.com>
8438
8439 * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
8440
8441 2018-01-25 Jan Hubicka <hubicka@ucw.cz>
8442
8443 PR middle-end/83055
8444 * predict.c (drop_profile): Do not push/pop cfun; update also
8445 node->count.
8446 (handle_missing_profiles): Fix logic looking for zero profiles.
8447
8448 2018-01-25 Jakub Jelinek <jakub@redhat.com>
8449
8450 PR middle-end/83977
8451 * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
8452 on functions with #pragma omp declare simd or functions with simd
8453 attribute.
8454 * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
8455 * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
8456 Remove trailing \n from warning_at calls.
8457
8458 2018-01-25 Tom de Vries <tom@codesourcery.com>
8459
8460 PR target/84028
8461 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
8462 for neutered workers.
8463
8464 2018-01-24 Joseph Myers <joseph@codesourcery.com>
8465
8466 PR target/68467
8467 * config/m68k/m68k.c (m68k_promote_function_mode): New function.
8468 (TARGET_PROMOTE_FUNCTION_MODE): New macro.
8469
8470 2018-01-24 Jeff Law <law@redhat.com>
8471
8472 PR target/83994
8473 * i386.c (get_probe_interval): Move to earlier point.
8474 (ix86_compute_frame_layout): If -fstack-clash-protection and
8475 the frame is larger than the probe interval, then use pushes
8476 to save registers rather than reg->mem moves.
8477 (ix86_expand_prologue): Remove conditional for int_registers_saved
8478 assertion.
8479
8480 2018-01-24 Vladimir Makarov <vmakarov@redhat.com>
8481
8482 PR target/84014
8483 * ira-build.c (setup_min_max_allocno_live_range_point): Set up
8484 min/max for never referenced object.
8485
8486 2018-01-24 Jakub Jelinek <jakub@redhat.com>
8487
8488 PR middle-end/83977
8489 * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
8490 here.
8491 * omp-low.c (create_omp_child_function): Remove "omp declare simd"
8492 attributes from DECL_ATTRIBUTES (decl) without affecting
8493 DECL_ATTRIBUTES (current_function_decl).
8494 * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
8495 functions with non-NULL DECL_ABSTRACT_ORIGIN.
8496
8497 2018-01-24 Richard Sandiford <richard.sandiford@linaro.org>
8498
8499 PR tree-optimization/83979
8500 * fold-const.c (fold_comparison): Use constant_boolean_node
8501 instead of boolean_{true,false}_node.
8502
8503 2018-01-24 Jan Hubicka <hubicka@ucw.cz>
8504
8505 * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
8506 with zero counts.
8507
8508 2018-01-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
8509
8510 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8511 Simplify the clause that sets the length attribute.
8512 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8513 (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
8514 clause that sets the length attribute.
8515 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8516
8517 2018-01-24 Tom de Vries <tom@codesourcery.com>
8518
8519 PR target/83589
8520 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
8521 (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
8522 Add strict parameter.
8523 (prevent_branch_around_nothing): Insert dummy insn between branch to
8524 label and label with no ptx insn inbetween.
8525 * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
8526
8527 2018-01-24 Tom de Vries <tom@codesourcery.com>
8528
8529 PR target/81352
8530 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
8531 for neutered threads in warp.
8532 * config/nvptx/nvptx.md (define_insn "exit"): New insn.
8533
8534 2018-01-24 Richard Biener <rguenther@suse.de>
8535
8536 PR tree-optimization/83176
8537 * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
8538 operands.
8539
8540 2018-01-24 Richard Biener <rguenther@suse.de>
8541
8542 PR tree-optimization/82819
8543 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
8544 code generating pluses that are no-ops in the target precision.
8545
8546 2018-01-24 Richard Biener <rguenther@suse.de>
8547
8548 PR middle-end/84000
8549 * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
8550
8551 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
8552
8553 * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
8554 to merge probabilities.
8555 * predict.c (probably_never_executed): Also mark as cold functions
8556 with global 0 profile and guessed local profile.
8557 * profile-count.c (profile_probability::combine_with_count): New
8558 member function.
8559 * profile-count.h (profile_probability::operator*,
8560 profile_probability::operator*=, profile_probability::operator/,
8561 profile_probability::operator/=): Reduce precision to adjusted
8562 and set value to guessed on contradictory divisions.
8563 (profile_probability::combine_with_freq): Remove.
8564 (profile_probability::combine_wiht_count): Declare.
8565 (profile_count::force_nonzero):: Set to adjusted.
8566 (profile_count::probability_in):: Set quality to adjusted.
8567 * tree-ssa-tail-merge.c (replace_block_by): Use
8568 combine_with_count.
8569
8570 2018-01-23 Andrew Waterman <andrew@sifive.com>
8571 Jim Wilson <jimw@sifive.com>
8572
8573 * config/riscv/riscv.c (riscv_stack_boundary): New.
8574 (riscv_option_override): Set riscv_stack_boundary. Handle
8575 riscv_preferred_stack_boundary_arg.
8576 * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
8577 (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
8578 (STACK_BOUNDARY): Set to riscv_stack_boundary.
8579 (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
8580 * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
8581 * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
8582
8583 2018-01-23 H.J. Lu <hongjiu.lu@intel.com>
8584
8585 PR target/83905
8586 * config/i386/i386.c (ix86_expand_prologue): Use cost reference
8587 of struct ix86_frame.
8588 (ix86_expand_epilogue): Likewise. Add a local variable for
8589 the reg_save_offset field in struct ix86_frame.
8590
8591 2018-01-23 Bin Cheng <bin.cheng@arm.com>
8592
8593 PR tree-optimization/82604
8594 * tree-loop-distribution.c (enum partition_kind): New enum item
8595 PKIND_PARTIAL_MEMSET.
8596 (partition_builtin_p): Support above new enum item.
8597 (generate_code_for_partition): Ditto.
8598 (compute_access_range): Differentiate cases that equality can be
8599 proven at all loops, the innermost loops or no loops.
8600 (classify_builtin_st, classify_builtin_ldst): Adjust call to above
8601 function. Set PKIND_PARTIAL_MEMSET for partition appropriately.
8602 (finalize_partitions, distribute_loop): Don't fuse partition of
8603 PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
8604 (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
8605 parloop is enabled.
8606
8607 2018-01-23 Martin Liska <mliska@suse.cz>
8608
8609 * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
8610 order to ignore the predictor.
8611 (PRED_POLYMORPHIC_CALL): Likewise.
8612 (PRED_RECURSIVE_CALL): Likewise.
8613
8614 2018-01-23 Martin Liska <mliska@suse.cz>
8615
8616 * tree-profile.c (tree_profiling): Print function header to
8617 aware reader which function we are working on.
8618 * value-prof.c (gimple_find_values_to_profile): Do not print
8619 not interesting value histograms.
8620
8621 2018-01-23 Martin Liska <mliska@suse.cz>
8622
8623 * profile-count.h (enum profile_quality): Add
8624 profile_uninitialized as the first value. Do not number values
8625 as they are zero based.
8626 (profile_count::verify): Update sanity check.
8627 (profile_probability::verify): Likewise.
8628
8629 2018-01-23 Nathan Sidwell <nathan@acm.org>
8630
8631 * doc/invoke.texi (ffor-scope): Deprecate.
8632
8633 2018-01-23 David Malcolm <dmalcolm@redhat.com>
8634
8635 PR tree-optimization/83510
8636 * domwalk.c (set_all_edges_as_executable): New function.
8637 (dom_walker::dom_walker): Convert bool param
8638 "skip_unreachable_blocks" to enum reachability. Move setup of
8639 edge flags to set_all_edges_as_executable and only do it when
8640 reachability is REACHABLE_BLOCKS.
8641 * domwalk.h (enum dom_walker::reachability): New enum.
8642 (dom_walker::dom_walker): Convert bool param
8643 "skip_unreachable_blocks" to enum reachability.
8644 (set_all_edges_as_executable): New decl.
8645 * graphite-scop-detection.c (gather_bbs::gather_bbs): Convert
8646 from false for "skip_unreachable_blocks" to ALL_BLOCKS for
8647 "reachability".
8648 * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
8649 but converting true to REACHABLE_BLOCKS.
8650 * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
8651 * tree-vrp.c
8652 (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
8653 Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
8654 (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
8655 REACHABLE_BLOCKS.
8656 (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
8657 if check_all_array_refs will be called.
8658
8659 2018-01-23 David Malcolm <dmalcolm@redhat.com>
8660
8661 * tree.c (selftest::test_location_wrappers): Add more test
8662 coverage.
8663
8664 2018-01-23 David Malcolm <dmalcolm@redhat.com>
8665
8666 * sbitmap.c (selftest::test_set_range): Fix memory leaks.
8667 (selftest::test_bit_in_range): Likewise.
8668
8669 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
8670
8671 PR testsuite/83888
8672 * doc/sourcebuild.texi (vect_float): Say that the selector
8673 only describes the situation when -funsafe-math-optimizations is on.
8674 (vect_float_strict): Document.
8675
8676 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
8677
8678 PR tree-optimization/83965
8679 * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
8680 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
8681 instead of checking only for a reduction.
8682 (vect_recog_widen_sum_pattern): Likewise.
8683
8684 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
8685
8686 * predict.c (probably_never_executed): Only use precise profile info.
8687 (compute_function_frequency): Skip after inlining hack since we now
8688 have quality checking.
8689
8690 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
8691
8692 * profile-count.h (profile_probability::very_unlikely,
8693 profile_probability::unlikely, profile_probability::even): Set
8694 precision to guessed.
8695
8696 2018-01-23 Richard Biener <rguenther@suse.de>
8697
8698 PR tree-optimization/83963
8699 * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
8700 Properly terminate dominator walk when crossing the exit edge not
8701 when visiting its source block.
8702
8703 2018-01-23 Jakub Jelinek <jakub@redhat.com>
8704
8705 PR c++/83918
8706 * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
8707 VIEW_CONVERT_EXPR to wrap CONST_DECLs.
8708
8709 2018-01-22 Jakub Jelinek <jakub@redhat.com>
8710
8711 PR tree-optimization/83957
8712 * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs. Remove
8713 semicolon after for body surrounded by braces.
8714
8715 PR tree-optimization/83081
8716 * profile-count.h (profile_probability::split): New method.
8717 * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
8718 Use profile_probability::split.
8719 (do_compare_rtx_and_jump): Fix adjustment of probabilities
8720 when splitting a single conditional jump into 2.
8721
8722 2018-01-22 David Malcolm <dmalcolm@redhat.com>
8723
8724 PR tree-optimization/69452
8725 * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
8726 decl.
8727
8728 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8729
8730 * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
8731 * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
8732 * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
8733
8734 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8735
8736 * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
8737 * config/rl78/rl78.md (movdi): New define_expand.
8738 * config/rl78/rl78.c (rl78_split_movdi): New function.
8739
8740 2018-01-22 Michael Meissner <meissner@linux.vnet.ibm.com>
8741
8742 PR target/83862
8743 * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
8744 no longer used.
8745 * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
8746 * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
8747 128-bit to produce an UNSPEC move to get the double word with the
8748 signbit and then a shift directly to do signbit.
8749 (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
8750 implementation with a new version that just does either a direct
8751 move or a regular move. Move memory interface to separate insns.
8752 Move insns so they are next to the expander.
8753 (signbit<mode>2_dm_mem_be): New combiner insns to combine load
8754 with signbit move. Split big and little endian case.
8755 (signbit<mode>2_dm_mem_le): Likewise.
8756 (signbit<mode>2_dm_<su>ext): Delete, no longer used.
8757 (signbit<mode>2_dm2): Likewise.
8758
8759 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8760
8761 * config/rl78/rl78.md (anddi3): New define_expand.
8762
8763 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8764
8765 * config/rl78/rl78.md (umindi3): New define_expand.
8766
8767 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8768
8769 * config/rl78/rl78.md (smindi3): New define_expand.
8770
8771 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8772
8773 * config/rl78/rl78.md (smaxdi3): New define_expand.
8774
8775 2018-01-22 Carl Love <cel@us.ibm.com>
8776
8777 * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
8778 LVX_V1TI): Add macro expansion.
8779 * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
8780 definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
8781 VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
8782 * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
8783 Change check to determine if the instruction is a byte reversing
8784 entry. Fix typo in comment.
8785 * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
8786 for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
8787 Add def_builtin calls for new builtins.
8788 * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
8789 Add define_insn expansion.
8790
8791 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8792
8793 * config/rl78/rl78.md (umaxdi3): New define_expand.
8794
8795 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8796
8797 * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
8798 for non-QImode registers.
8799
8800 2018-01-22 Richard Biener <rguenther@suse.de>
8801
8802 PR tree-optimization/83963
8803 * graphite-scop-detection.c (scop_detection::get_sese): Delay
8804 including the loop exit block.
8805 (scop_detection::merge_sese): Likewise.
8806 (scop_detection::add_scop): Do it here instead.
8807
8808 2018-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8809
8810 * doc/sourcebuild.texi (arm_softfloat): Document.
8811
8812 2018-01-21 John David Anglin <danglin@gcc.gnu.org>
8813
8814 PR gcc/77734
8815 * config/pa/pa.c (pa_function_ok_for_sibcall): Use
8816 targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
8817 Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
8818
8819 2018-01-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
8820 David Edelsohn <dje.gcc@gmail.com>
8821
8822 PR target/83946
8823 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8824 Change "crset eq" to "crset 2".
8825 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8826 (*call_indirect_aix<mode>_nospec): Likewise.
8827 (*call_value_indirect_aix<mode>_nospec): Likewise.
8828 (*call_indirect_elfv2<mode>_nospec): Likewise.
8829 (*call_value_indirect_elfv2<mode>_nospec): Likewise.
8830 (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
8831 change assembly output from . to $.
8832 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8833 (indirect_jump<mode>_nospec): Change assembly output from . to $.
8834 (*tablejump<mode>_internal1_nospec): Likewise.
8835
8836 2018-01-21 Oleg Endo <olegendo@gcc.gnu.org>
8837
8838 PR target/80870
8839 * config/sh/sh_optimize_sett_clrt.cc:
8840 Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
8841
8842 2018-01-20 Richard Sandiford <richard.sandiford@linaro.org>
8843
8844 PR tree-optimization/83940
8845 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
8846 offset_dt to vect_constant_def rather than vect_unknown_def_type.
8847 (vect_check_load_store_mask): Add a mask_dt_out parameter and
8848 use it to pass back the definition type.
8849 (vect_check_store_rhs): Likewise rhs_dt_out.
8850 (vect_build_gather_load_calls): Add a mask_dt argument and use
8851 it instead of a call to vect_is_simple_use.
8852 (vectorizable_store): Update calls to vect_check_load_store_mask
8853 and vect_check_store_rhs. Use the dt returned by the latter instead
8854 of scatter_src_dt. Use the cached mask_dt and gs_info.offset_dt
8855 instead of calls to vect_is_simple_use. Pass the scalar rather
8856 than the vector operand to vect_is_simple_use when handling
8857 second and subsequent copies of an rhs value.
8858 (vectorizable_load): Update calls to vect_check_load_store_mask
8859 and vect_build_gather_load_calls. Use the cached mask_dt and
8860 gs_info.offset_dt instead of calls to vect_is_simple_use.
8861
8862 2018-01-20 Jakub Jelinek <jakub@redhat.com>
8863
8864 PR middle-end/83945
8865 * tree-emutls.c: Include gimplify.h.
8866 (lower_emutls_2): New function.
8867 (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
8868 with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
8869 it before further processing.
8870
8871 PR target/83930
8872 * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
8873 UINTVAL (trueop1) instead of INTVAL (op1).
8874
8875 2018-01-19 Jakub Jelinek <jakub@redhat.com>
8876
8877 PR debug/81570
8878 PR debug/83728
8879 * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
8880 INCOMING_FRAME_SP_OFFSET if not defined.
8881 (scan_trace): Add ENTRY argument. If true and
8882 DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
8883 emit a note to adjust the CFA offset.
8884 (create_cfi_notes): Adjust scan_trace callers.
8885 (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
8886 INCOMING_FRAME_SP_OFFSET in the CIE.
8887 * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
8888 * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
8889 Likewise.
8890 * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
8891 * doc/tm.texi: Regenerated.
8892
8893 2018-01-19 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
8894
8895 PR rtl-optimization/83147
8896 * lra-constraints.c (remove_inheritance_pseudos): Use
8897 lra_substitute_pseudo_within_insn.
8898
8899 2018-01-19 Tom de Vries <tom@codesourcery.com>
8900 Cesar Philippidis <cesar@codesourcery.com>
8901
8902 PR target/83920
8903 * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
8904
8905 2018-01-19 Cesar Philippidis <cesar@codesourcery.com>
8906
8907 PR target/83790
8908 * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
8909 spaces for function labels.
8910
8911 2018-01-19 Martin Liska <mliska@suse.cz>
8912
8913 * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
8914 (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
8915 (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
8916 (PRED_OPCODE_POSITIVE): Change from 64 to 59.
8917 (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
8918 (PRED_CONST_RETURN): Change from 69 to 65.
8919 (PRED_NULL_RETURN): Change from 91 to 71.
8920 (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
8921 (PRED_LOOP_GUARD): Change from 66 to 73.
8922
8923 2018-01-19 Martin Liska <mliska@suse.cz>
8924
8925 * predict.c (predict_insn_def): Add new assert.
8926 (struct branch_predictor): Change type to signed integer.
8927 (test_prediction_value_range): Amend test to cover
8928 PROB_UNINITIALIZED.
8929 * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
8930 (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
8931 (PRED_LOOP_ITERATIONS_MAX): Likewise.
8932 (PRED_LOOP_IV_COMPARE): Likewise.
8933 * predict.h (PROB_UNINITIALIZED): Define new constant.
8934
8935 2018-01-19 Martin Liska <mliska@suse.cz>
8936
8937 * predict.c (dump_prediction): Add new format for
8938 analyze_brprob.py script which is enabled with -details
8939 suboption.
8940 * profile-count.h (precise_p): New function.
8941
8942 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
8943
8944 PR tree-optimization/83922
8945 * tree-vect-loop.c (vect_verify_full_masking): Return false if
8946 there are no statements that need masking.
8947 (vect_active_double_reduction_p): New function.
8948 (vect_analyze_loop_operations): Use it when handling phis that
8949 are not in the loop header.
8950
8951 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
8952
8953 PR tree-optimization/83914
8954 * tree-vect-loop.c (vectorizable_induction): Don't convert
8955 init_expr or apply the peeling adjustment for inductions
8956 that are nested within the vectorized loop.
8957
8958 2018-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8959
8960 * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
8961 instead of NEG.
8962
8963 2018-01-18 Jakub Jelinek <jakub@redhat.com>
8964
8965 PR sanitizer/81715
8966 PR testsuite/83882
8967 * function.h (gimplify_parameters): Add gimple_seq * argument.
8968 * function.c: Include gimple.h and options.h.
8969 (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
8970 for the added local temporaries if needed.
8971 * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
8972 if there are any parameter cleanups, wrap whole body into a
8973 try/finally with the cleanups.
8974
8975 2018-01-18 Wilco Dijkstra <wdijkstr@arm.com>
8976
8977 PR target/82964
8978 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
8979 Use GET_MODE_CLASS for scalar floating point.
8980
8981 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
8982
8983 PR ipa/82256
8984 patch by PaX Team
8985 * cgraphclones.c (cgraph_node::create_version_clone_with_body):
8986 Fix call of call_cgraph_insertion_hooks.
8987
8988 2018-01-18 Martin Sebor <msebor@redhat.com>
8989
8990 * doc/invoke.texi (-Wclass-memaccess): Tweak text.
8991
8992 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
8993
8994 PR ipa/83619
8995 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
8996 frequencies.
8997
8998 2018-01-18 Boris Kolpackov <boris@codesynthesis.com>
8999
9000 PR other/70268
9001 * common.opt: (-ffile-prefix-map): New option.
9002 * opts.c (common_handle_option): Defer it.
9003 * opts-global.c (handle_common_deferred_options): Handle it.
9004 * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
9005 * file-prefix-map.h: New file.
9006 (remap_debug_filename, add_debug_prefix_map): ...here.
9007 (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
9008 * final.c (debug_prefix_map, add_debug_prefix_map
9009 remap_debug_filename): Move to...
9010 * file-prefix-map.c: New file.
9011 (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
9012 generalize, get rid of alloca(), use strrchr() instead of strchr().
9013 (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
9014 Implement in terms of add_prefix_map().
9015 (remap_macro_filename, remap_debug_filename): Implement in term of
9016 remap_filename().
9017 * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
9018 * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
9019 * dbxout.c: Include file-prefix-map.h.
9020 * varasm.c: Likewise.
9021 * vmsdbgout.c: Likewise.
9022 * xcoffout.c: Likewise.
9023 * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
9024 * doc/cppopts.texi (-fmacro-prefix-map): Document.
9025 * doc/invoke.texi (-ffile-prefix-map): Document.
9026 (-fdebug-prefix-map): Update description.
9027
9028 2018-01-18 Martin Liska <mliska@suse.cz>
9029
9030 * config/i386/i386.c (indirect_thunk_name): Document that also
9031 lfence is emitted.
9032 (output_indirect_thunk): Document why both instructions
9033 (pause and lfence) are generated.
9034
9035 2018-01-18 Richard Biener <rguenther@suse.de>
9036
9037 PR tree-optimization/83887
9038 * graphite-scop-detection.c
9039 (scop_detection::get_nearest_dom_with_single_entry): Remove.
9040 (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
9041 (scop_detection::merge_sese): Re-implement with a flood-fill
9042 algorithm that properly finds a SESE region if it exists.
9043
9044 2018-01-18 Jakub Jelinek <jakub@redhat.com>
9045
9046 PR c/61240
9047 * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
9048 pointer_diff optimizations use view_convert instead of convert.
9049
9050 2018-01-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
9051
9052 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
9053 Generate different code for -mno-speculate-indirect-jumps.
9054 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
9055 (*call_indirect_aix<mode>): Disable for
9056 -mno-speculate-indirect-jumps.
9057 (*call_indirect_aix<mode>_nospec): New define_insn.
9058 (*call_value_indirect_aix<mode>): Disable for
9059 -mno-speculate-indirect-jumps.
9060 (*call_value_indirect_aix<mode>_nospec): New define_insn.
9061 (*sibcall_nonlocal_sysv<mode>): Generate different code for
9062 -mno-speculate-indirect-jumps.
9063 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
9064
9065 2018-01-17 Michael Meissner <meissner@linux.vnet.ibm.com>
9066
9067 * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
9068 long double type, set the flags for noting the default long double
9069 type, even if we don't pass or return a long double type.
9070
9071 2018-01-17 Jan Hubicka <hubicka@ucw.cz>
9072
9073 PR ipa/83051
9074 * ipa-inline.c (flatten_function): Do not overwrite final inlining
9075 failure.
9076
9077 2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com>
9078
9079 * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
9080 support for merge[hl].
9081 (fold_mergehl_helper): New helper function.
9082 (tree-vector-builder.h): New #include for tree_vector_builder usage.
9083 * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
9084 (altivec_vmrglw_direct): Add xxmrglw insn.
9085
9086 2018-01-17 Andrew Waterman <andrew@sifive.com>
9087
9088 * config/riscv/riscv.c (riscv_conditional_register_usage): If
9089 UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
9090
9091 2018-01-17 David Malcolm <dmalcolm@redhat.com>
9092
9093 PR lto/83121
9094 * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
9095 call the lto_location_cache before reading the
9096 DECL_SOURCE_LOCATION of the types.
9097
9098 2018-01-17 Wilco Dijkstra <wdijkstr@arm.com>
9099 Richard Sandiford <richard.sandiford@linaro.org>
9100
9101 * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
9102 * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
9103 (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
9104 SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
9105 * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
9106 Add declaration.
9107 * config/aarch64/constraints.md (aarch64_movti_operand):
9108 Limit immediates.
9109 * config/aarch64/predicates.md (Uti): Add new constraint.
9110
9111 2018-01-17 Carl Love <cel@us.ibm.com>
9112
9113 * config/rs6000/vsx.md (define_expand xl_len_r,
9114 define_expand stxvl, define_expand *stxvl): Add match_dup argument.
9115 (define_insn): Add, match_dup 1 argument to define_insn stxvll and
9116 lxvll.
9117 (define_expand, define_insn): Move the shift left from the
9118 define_insn to the define_expand for lxvl and stxvl instructions.
9119 * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
9120 and XL_LEN_R definitions to PURE.
9121
9122 2018-01-17 Uros Bizjak <ubizjak@gmail.com>
9123
9124 * config/i386/i386.c (indirect_thunk_name): Declare regno
9125 as unsigned int. Compare regno with INVALID_REGNUM.
9126 (output_indirect_thunk): Ditto.
9127 (output_indirect_thunk_function): Ditto.
9128 (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM
9129 in the call to output_indirect_thunk_function.
9130
9131 2018-01-17 Richard Sandiford <richard.sandiford@linaro.org>
9132
9133 PR middle-end/83884
9134 * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
9135 rather than the size of inner_type to determine the stack slot size
9136 when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
9137
9138 2018-01-16 Sebastian Peryt <sebastian.peryt@intel.com>
9139
9140 PR target/83546
9141 * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
9142 to PTA_SILVERMONT.
9143
9144 2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com>
9145
9146 * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
9147 endian Linux systems to optionally enable multilibs for selecting
9148 the long double type if the user configured an explicit type.
9149 * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
9150 have no long double multilibs if not defined.
9151 * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
9152 warn if the user used -mabi={ieee,ibm}longdouble and we built
9153 multilibs for long double.
9154 * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
9155 appropriate multilib option.
9156 (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
9157 multilib options.
9158 * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
9159 for building long double multilibs.
9160 * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
9161
9162 2018-01-16 John David Anglin <danglin@gcc.gnu.org>
9163
9164 * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
9165 copies.
9166
9167 * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
9168 64 bits.
9169 * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
9170 128 bits.
9171
9172 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
9173 variables.
9174
9175 * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
9176 return value.
9177
9178 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
9179
9180 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
9181 ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
9182
9183 2018-01-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
9184
9185 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
9186 different rtl trees depending on TARGET_64BIT.
9187 (rs6000_gen_lvx): Likewise.
9188
9189 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
9190
9191 * config/visium/visium.md (nop): Tweak comment.
9192 (hazard_nop): Likewise.
9193
9194 2018-01-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
9195
9196 * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
9197 -mspeculate-indirect-jumps.
9198 * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
9199 for -mno-speculate-indirect-jumps.
9200 (*call_indirect_elfv2<mode>_nospec): New define_insn.
9201 (*call_value_indirect_elfv2<mode>): Disable for
9202 -mno-speculate-indirect-jumps.
9203 (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
9204 (indirect_jump): Emit different RTL for
9205 -mno-speculate-indirect-jumps.
9206 (*indirect_jump<mode>): Disable for
9207 -mno-speculate-indirect-jumps.
9208 (*indirect_jump<mode>_nospec): New define_insn.
9209 (tablejump): Emit different RTL for
9210 -mno-speculate-indirect-jumps.
9211 (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
9212 (tablejumpsi_nospec): New define_expand.
9213 (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
9214 (tablejumpdi_nospec): New define_expand.
9215 (*tablejump<mode>_internal1): Disable for
9216 -mno-speculate-indirect-jumps.
9217 (*tablejump<mode>_internal1_nospec): New define_insn.
9218 * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
9219 option.
9220
9221 2018-01-16 Artyom Skrobov tyomitch@gmail.com
9222
9223 * caller-save.c (insert_save): Drop unnecessary parameter. All
9224 callers updated.
9225
9226 2018-01-16 Jakub Jelinek <jakub@redhat.com>
9227 Richard Biener <rguenth@suse.de>
9228
9229 PR libgomp/83590
9230 * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
9231 return early, inline manually is_gimple_sizepos. Make sure if we
9232 call gimplify_expr we don't end up with a gimple constant.
9233 * tree.c (variably_modified_type_p): Don't return true for
9234 is_gimple_constant (_t). Inline manually is_gimple_sizepos.
9235 * gimplify.h (is_gimple_sizepos): Remove.
9236
9237 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9238
9239 PR tree-optimization/83857
9240 * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
9241 vectorizable_live_operation for pure SLP statements.
9242 (vectorizable_live_operation): Handle PHIs.
9243
9244 2018-01-16 Richard Biener <rguenther@suse.de>
9245
9246 PR tree-optimization/83867
9247 * tree-vect-stmts.c (vect_transform_stmt): Precompute
9248 nested_in_vect_loop_p since the scalar stmt may get invalidated.
9249
9250 2018-01-16 Jakub Jelinek <jakub@redhat.com>
9251
9252 PR c/83844
9253 * stor-layout.c (handle_warn_if_not_align): Use byte_position and
9254 multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
9255 If off is not INTEGER_CST, issue a may not be aligned warning
9256 rather than isn't aligned. Use isn%'t rather than isn't.
9257 * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
9258 into MULT_EXPR.
9259 <case MULT_EXPR>: Improve the case when bottom and one of the
9260 MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
9261 operand, in that case check if the other operand is multiple of
9262 bottom divided by the INTEGER_CST operand.
9263
9264 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9265
9266 PR target/83858
9267 * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
9268 * config/pa/pa-protos.h (pa_function_arg_size): Declare.
9269 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
9270 pa_function_arg_size instead of FUNCTION_ARG_SIZE.
9271 * config/pa/pa.c (pa_function_arg_advance): Likewise.
9272 (pa_function_arg, pa_arg_partial_bytes): Likewise.
9273 (pa_function_arg_size): New function.
9274
9275 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9276
9277 * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
9278 in a separate statement.
9279
9280 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9281
9282 PR tree-optimization/83847
9283 * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
9284 group gathers and scatters.
9285
9286 2018-01-16 Jakub Jelinek <jakub@redhat.com>
9287
9288 PR rtl-optimization/86620
9289 * params.def (max-sched-ready-insns): Bump minimum value to 1.
9290
9291 PR rtl-optimization/83213
9292 * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
9293 to last if both are JUMP_INSNs.
9294
9295 PR tree-optimization/83843
9296 * gimple-ssa-store-merging.c
9297 (imm_store_chain_info::output_merged_store): Handle bit_not_p on
9298 store_immediate_info for bswap/nop orig_stores.
9299
9300 2018-01-15 Andrew Waterman <andrew@sifive.com>
9301
9302 * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
9303 !TARGET_MUL.
9304 <UDIV>: Increase cost if !TARGET_DIV.
9305
9306 2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
9307
9308 * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
9309 (define_attr "cr_logical_3op"): New.
9310 (cceq_ior_compare): Adjust.
9311 (cceq_ior_compare_complement): Adjust.
9312 (*cceq_rev_compare): Adjust.
9313 * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
9314 (is_cracked_insn): Adjust.
9315 (insn_must_be_first_in_group): Adjust.
9316 * config/rs6000/40x.md: Adjust.
9317 * config/rs6000/440.md: Adjust.
9318 * config/rs6000/476.md: Adjust.
9319 * config/rs6000/601.md: Adjust.
9320 * config/rs6000/603.md: Adjust.
9321 * config/rs6000/6xx.md: Adjust.
9322 * config/rs6000/7450.md: Adjust.
9323 * config/rs6000/7xx.md: Adjust.
9324 * config/rs6000/8540.md: Adjust.
9325 * config/rs6000/cell.md: Adjust.
9326 * config/rs6000/e300c2c3.md: Adjust.
9327 * config/rs6000/e500mc.md: Adjust.
9328 * config/rs6000/e500mc64.md: Adjust.
9329 * config/rs6000/e5500.md: Adjust.
9330 * config/rs6000/e6500.md: Adjust.
9331 * config/rs6000/mpc.md: Adjust.
9332 * config/rs6000/power4.md: Adjust.
9333 * config/rs6000/power5.md: Adjust.
9334 * config/rs6000/power6.md: Adjust.
9335 * config/rs6000/power7.md: Adjust.
9336 * config/rs6000/power8.md: Adjust.
9337 * config/rs6000/power9.md: Adjust.
9338 * config/rs6000/rs64.md: Adjust.
9339 * config/rs6000/titan.md: Adjust.
9340
9341 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9342
9343 * config/i386/predicates.md (indirect_branch_operand): Rewrite
9344 ix86_indirect_branch_register logic.
9345
9346 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9347
9348 * config/i386/constraints.md (Bs): Update
9349 ix86_indirect_branch_register check. Don't check
9350 ix86_indirect_branch_register with GOT_memory_operand.
9351 (Bw): Likewise.
9352 * config/i386/predicates.md (GOT_memory_operand): Don't check
9353 ix86_indirect_branch_register here.
9354 (GOT32_symbol_operand): Likewise.
9355
9356 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9357
9358 * config/i386/predicates.md (constant_call_address_operand):
9359 Rewrite ix86_indirect_branch_register logic.
9360 (sibcall_insn_operand): Likewise.
9361
9362 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9363
9364 * config/i386/constraints.md (Bs): Replace
9365 ix86_indirect_branch_thunk_register with
9366 ix86_indirect_branch_register.
9367 (Bw): Likewise.
9368 * config/i386/i386.md (indirect_jump): Likewise.
9369 (tablejump): Likewise.
9370 (*sibcall_memory): Likewise.
9371 (*sibcall_value_memory): Likewise.
9372 Peepholes of indirect call and jump via memory: Likewise.
9373 * config/i386/i386.opt: Likewise.
9374 * config/i386/predicates.md (indirect_branch_operand): Likewise.
9375 (GOT_memory_operand): Likewise.
9376 (call_insn_operand): Likewise.
9377 (sibcall_insn_operand): Likewise.
9378 (GOT32_symbol_operand): Likewise.
9379
9380 2018-01-15 Jakub Jelinek <jakub@redhat.com>
9381
9382 PR middle-end/83837
9383 * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
9384 type rather than type addr's type points to.
9385 (expand_omp_atomic_mutex): Likewise.
9386 (expand_omp_atomic): Likewise.
9387
9388 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9389
9390 PR target/83839
9391 * config/i386/i386.c (output_indirect_thunk_function): Use
9392 ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
9393 for __x86_return_thunk.
9394
9395 2018-01-15 Richard Biener <rguenther@suse.de>
9396
9397 PR middle-end/83850
9398 * expmed.c (extract_bit_field_1): Fix typo.
9399
9400 2018-01-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9401
9402 PR target/83687
9403 * config/arm/iterators.md (VF): New mode iterator.
9404 * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
9405 Remove integer-related logic from pattern.
9406 (neon_vabd<mode>_3): Likewise.
9407
9408 2018-01-15 Jakub Jelinek <jakub@redhat.com>
9409
9410 PR middle-end/82694
9411 * common.opt (fstrict-overflow): No longer an alias.
9412 (fwrapv-pointer): New option.
9413 * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
9414 also for pointer types based on flag_wrapv_pointer.
9415 * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
9416 opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
9417 opts->x_flag_wrapv got set.
9418 * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
9419 changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
9420 POINTER_TYPE_OVERFLOW_UNDEFINED.
9421 * match.pd: Likewise in address comparison pattern.
9422 * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
9423
9424 2018-01-15 Richard Biener <rguenther@suse.de>
9425
9426 PR lto/83804
9427 * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
9428 from TYPE_FIELDS. Free TYPE_BINFO if not used by devirtualization.
9429 Reset type names to their identifier if their TYPE_DECL doesn't
9430 have linkage (and thus is used for ODR and devirt).
9431 (save_debug_info_for_decl): Remove.
9432 (save_debug_info_for_type): Likewise.
9433 (add_tree_to_fld_list): Adjust.
9434 * tree-pretty-print.c (dump_generic_node): Make dumping of
9435 type names more robust.
9436
9437 2018-01-15 Richard Biener <rguenther@suse.de>
9438
9439 * BASE-VER: Bump to 8.0.1.
9440
9441 2018-01-14 Martin Sebor <msebor@redhat.com>
9442
9443 PR other/83508
9444 * builtins.c (check_access): Avoid warning when the no-warning bit
9445 is set.
9446
9447 2018-01-14 Cory Fields <cory-nospam-@coryfields.com>
9448
9449 * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
9450 * ira-color (allocno_hard_regs_compare): Likewise.
9451
9452 2018-01-14 Nathan Rossi <nathan@nathanrossi.com>
9453
9454 PR target/83013
9455 * config/microblaze/microblaze.c (microblaze_asm_output_ident):
9456 Use .pushsection/.popsection.
9457
9458 2018-01-14 Martin Sebor <msebor@redhat.com>
9459
9460 PR c++/81327
9461 * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
9462
9463 2018-01-14 Jakub Jelinek <jakub@redhat.com>
9464
9465 * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
9466 entry from extra_headers.
9467 (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
9468 extra_headers, make the list bitwise identical to the i?86-*-* one.
9469
9470 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9471
9472 * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
9473 -mcmodel=large with -mindirect-branch=thunk,
9474 -mindirect-branch=thunk-extern, -mfunction-return=thunk and
9475 -mfunction-return=thunk-extern.
9476 * doc/invoke.texi: Document -mcmodel=large is incompatible with
9477 -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
9478 -mfunction-return=thunk and -mfunction-return=thunk-extern.
9479
9480 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9481
9482 * config/i386/i386.c (print_reg): Print the name of the full
9483 integer register without '%'.
9484 (ix86_print_operand): Handle 'V'.
9485 * doc/extend.texi: Document 'V' modifier.
9486
9487 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9488
9489 * config/i386/constraints.md (Bs): Disallow memory operand for
9490 -mindirect-branch-register.
9491 (Bw): Likewise.
9492 * config/i386/predicates.md (indirect_branch_operand): Likewise.
9493 (GOT_memory_operand): Likewise.
9494 (call_insn_operand): Likewise.
9495 (sibcall_insn_operand): Likewise.
9496 (GOT32_symbol_operand): Likewise.
9497 * config/i386/i386.md (indirect_jump): Call convert_memory_address
9498 for -mindirect-branch-register.
9499 (tablejump): Likewise.
9500 (*sibcall_memory): Likewise.
9501 (*sibcall_value_memory): Likewise.
9502 Disallow peepholes of indirect call and jump via memory for
9503 -mindirect-branch-register.
9504 (*call_pop): Replace m with Bw.
9505 (*call_value_pop): Likewise.
9506 (*sibcall_pop_memory): Replace m with Bs.
9507 * config/i386/i386.opt (mindirect-branch-register): New option.
9508 * doc/invoke.texi: Document -mindirect-branch-register option.
9509
9510 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9511
9512 * config/i386/i386-protos.h (ix86_output_function_return): New.
9513 * config/i386/i386.c (ix86_set_indirect_branch_type): Also
9514 set function_return_type.
9515 (indirect_thunk_name): Add ret_p to indicate thunk for function
9516 return.
9517 (output_indirect_thunk_function): Pass false to
9518 indirect_thunk_name.
9519 (ix86_output_indirect_branch_via_reg): Likewise.
9520 (ix86_output_indirect_branch_via_push): Likewise.
9521 (output_indirect_thunk_function): Create alias for function
9522 return thunk if regno < 0.
9523 (ix86_output_function_return): New function.
9524 (ix86_handle_fndecl_attribute): Handle function_return.
9525 (ix86_attribute_table): Add function_return.
9526 * config/i386/i386.h (machine_function): Add
9527 function_return_type.
9528 * config/i386/i386.md (simple_return_internal): Use
9529 ix86_output_function_return.
9530 (simple_return_internal_long): Likewise.
9531 * config/i386/i386.opt (mfunction-return=): New option.
9532 (indirect_branch): Mention -mfunction-return=.
9533 * doc/extend.texi: Document function_return function attribute.
9534 * doc/invoke.texi: Document -mfunction-return= option.
9535
9536 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9537
9538 * config/i386/i386-opts.h (indirect_branch): New.
9539 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
9540 * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
9541 with local indirect jump when converting indirect call and jump.
9542 (ix86_set_indirect_branch_type): New.
9543 (ix86_set_current_function): Call ix86_set_indirect_branch_type.
9544 (indirectlabelno): New.
9545 (indirect_thunk_needed): Likewise.
9546 (indirect_thunk_bnd_needed): Likewise.
9547 (indirect_thunks_used): Likewise.
9548 (indirect_thunks_bnd_used): Likewise.
9549 (INDIRECT_LABEL): Likewise.
9550 (indirect_thunk_name): Likewise.
9551 (output_indirect_thunk): Likewise.
9552 (output_indirect_thunk_function): Likewise.
9553 (ix86_output_indirect_branch_via_reg): Likewise.
9554 (ix86_output_indirect_branch_via_push): Likewise.
9555 (ix86_output_indirect_branch): Likewise.
9556 (ix86_output_indirect_jmp): Likewise.
9557 (ix86_code_end): Call output_indirect_thunk_function if needed.
9558 (ix86_output_call_insn): Call ix86_output_indirect_branch if
9559 needed.
9560 (ix86_handle_fndecl_attribute): Handle indirect_branch.
9561 (ix86_attribute_table): Add indirect_branch.
9562 * config/i386/i386.h (machine_function): Add indirect_branch_type
9563 and has_local_indirect_jump.
9564 * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
9565 to true.
9566 (tablejump): Likewise.
9567 (*indirect_jump): Use ix86_output_indirect_jmp.
9568 (*tablejump_1): Likewise.
9569 (simple_return_indirect_internal): Likewise.
9570 * config/i386/i386.opt (mindirect-branch=): New option.
9571 (indirect_branch): New.
9572 (keep): Likewise.
9573 (thunk): Likewise.
9574 (thunk-inline): Likewise.
9575 (thunk-extern): Likewise.
9576 * doc/extend.texi: Document indirect_branch function attribute.
9577 * doc/invoke.texi: Document -mindirect-branch= option.
9578
9579 2018-01-14 Jan Hubicka <hubicka@ucw.cz>
9580
9581 PR ipa/83051
9582 * ipa-inline.c (edge_badness): Tolerate roundoff errors.
9583
9584 2018-01-14 Richard Sandiford <richard.sandiford@linaro.org>
9585
9586 * ipa-inline.c (want_inline_small_function_p): Return false if
9587 inlining has already failed with CIF_FINAL_ERROR.
9588 (update_caller_keys): Call want_inline_small_function_p before
9589 can_inline_edge_p.
9590 (update_callee_keys): Likewise.
9591
9592 2018-01-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
9593
9594 * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
9595 New function.
9596 (rs6000_quadword_masked_address_p): Likewise.
9597 (quad_aligned_load_p): Likewise.
9598 (quad_aligned_store_p): Likewise.
9599 (const_load_sequence_p): Add comment to describe the outer-most loop.
9600 (mimic_memory_attributes_and_flags): New function.
9601 (rs6000_gen_stvx): Likewise.
9602 (replace_swapped_aligned_store): Likewise.
9603 (rs6000_gen_lvx): Likewise.
9604 (replace_swapped_aligned_load): Likewise.
9605 (replace_swapped_load_constant): Capitalize argument name in
9606 comment describing this function.
9607 (rs6000_analyze_swaps): Add a third pass to search for vector loads
9608 and stores that access quad-word aligned addresses and replace
9609 with stvx or lvx instructions when appropriate.
9610 * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
9611 New function prototype.
9612 (rs6000_quadword_masked_address_p): Likewise.
9613 (rs6000_gen_lvx): Likewise.
9614 (rs6000_gen_stvx): Likewise.
9615 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
9616 VSX_D (V2DF, V2DI), modify this split to select lvx instruction
9617 when memory address is aligned.
9618 (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
9619 this split to select lvx instruction when memory address is aligned.
9620 (*vsx_le_perm_load_v8hi): Modify this split to select lvx
9621 instruction when memory address is aligned.
9622 (*vsx_le_perm_load_v16qi): Likewise.
9623 (four unnamed splitters): Modify to select the stvx instruction
9624 when memory is aligned.
9625
9626 2018-01-13 Jan Hubicka <hubicka@ucw.cz>
9627
9628 * predict.c (determine_unlikely_bbs): Handle correctly BBs
9629 which appears in the queue multiple times.
9630
9631 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9632 Alan Hayward <alan.hayward@arm.com>
9633 David Sherwood <david.sherwood@arm.com>
9634
9635 * tree-vectorizer.h (vec_lower_bound): New structure.
9636 (_loop_vec_info): Add check_nonzero and lower_bounds.
9637 (LOOP_VINFO_CHECK_NONZERO): New macro.
9638 (LOOP_VINFO_LOWER_BOUNDS): Likewise.
9639 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
9640 * tree-data-ref.h (dr_with_seg_len): Add access_size and align
9641 fields. Make seg_len the distance travelled, not including the
9642 access size.
9643 (dr_direction_indicator): Declare.
9644 (dr_zero_step_indicator): Likewise.
9645 (dr_known_forward_stride_p): Likewise.
9646 * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
9647 tree-ssanames.h.
9648 (runtime_alias_check_p): Allow runtime alias checks with
9649 variable strides.
9650 (operator ==): Compare access_size and align.
9651 (prune_runtime_alias_test_list): Rework for new distinction between
9652 the access_size and seg_len.
9653 (create_intersect_range_checks_index): Likewise. Cope with polynomial
9654 segment lengths.
9655 (get_segment_min_max): New function.
9656 (create_intersect_range_checks): Use it.
9657 (dr_step_indicator): New function.
9658 (dr_direction_indicator): Likewise.
9659 (dr_zero_step_indicator): Likewise.
9660 (dr_known_forward_stride_p): Likewise.
9661 * tree-loop-distribution.c (data_ref_segment_size): Return
9662 DR_STEP * (niters - 1).
9663 (compute_alias_check_pairs): Update call to the dr_with_seg_len
9664 constructor.
9665 * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
9666 (vect_preserves_scalar_order_p): New function, split out from...
9667 (vect_analyze_data_ref_dependence): ...here. Check for zero steps.
9668 (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
9669 (vect_vfa_access_size): New function.
9670 (vect_vfa_align): Likewise.
9671 (vect_compile_time_alias): Take access_size_a and access_b arguments.
9672 (dump_lower_bound): New function.
9673 (vect_check_lower_bound): Likewise.
9674 (vect_small_gap_p): Likewise.
9675 (vectorizable_with_step_bound_p): Likewise.
9676 (vect_prune_runtime_alias_test_list): Ignore cross-iteration
9677 depencies if the vectorization factor is 1. Convert the checks
9678 for nonzero steps into checks on the bounds of DR_STEP. Try using
9679 a bunds check for variable steps if the minimum required step is
9680 relatively small. Update calls to the dr_with_seg_len
9681 constructor and to vect_compile_time_alias.
9682 * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
9683 function.
9684 (vect_loop_versioning): Call it.
9685 * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
9686 when retrying.
9687 (vect_estimate_min_profitable_iters): Account for any bounds checks.
9688
9689 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9690 Alan Hayward <alan.hayward@arm.com>
9691 David Sherwood <david.sherwood@arm.com>
9692
9693 * doc/sourcebuild.texi (vect_scatter_store): Document.
9694 * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
9695 optabs.
9696 * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
9697 Document.
9698 * genopinit.c (main): Add supports_vec_scatter_store and
9699 supports_vec_scatter_store_cached to target_optabs.
9700 * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
9701 IFN_MASK_SCATTER_STORE.
9702 * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
9703 functions.
9704 * internal-fn.h (internal_store_fn_p): Declare.
9705 (internal_fn_stored_value_index): Likewise.
9706 * internal-fn.c (scatter_store_direct): New macro.
9707 (expand_scatter_store_optab_fn): New function.
9708 (direct_scatter_store_optab_supported_p): New macro.
9709 (internal_store_fn_p): New function.
9710 (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
9711 IFN_MASK_SCATTER_STORE.
9712 (internal_fn_mask_index): Likewise.
9713 (internal_fn_stored_value_index): New function.
9714 (internal_gather_scatter_fn_supported_p): Adjust operand numbers
9715 for scatter stores.
9716 * optabs-query.h (supports_vec_scatter_store_p): Declare.
9717 * optabs-query.c (supports_vec_scatter_store_p): New function.
9718 * tree-vectorizer.h (vect_get_store_rhs): Declare.
9719 * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
9720 true for scatter stores.
9721 (vect_gather_scatter_fn_p): Handle scatter stores too.
9722 (vect_check_gather_scatter): Consider using scatter stores if
9723 supports_vec_scatter_store_p.
9724 * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
9725 scatter stores too.
9726 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9727 internal_fn_stored_value_index.
9728 (check_load_store_masking): Handle scatter stores too.
9729 (vect_get_store_rhs): Make public.
9730 (vectorizable_call): Use internal_store_fn_p.
9731 (vectorizable_store): Handle scatter store internal functions.
9732 (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
9733 when deciding whether the end of the group has been reached.
9734 * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
9735 * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
9736 (mask_scatter_store<mode>): New insns.
9737
9738 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9739 Alan Hayward <alan.hayward@arm.com>
9740 David Sherwood <david.sherwood@arm.com>
9741
9742 * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
9743 * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
9744 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
9745 function.
9746 (vect_use_strided_gather_scatters_p): Take a masked_p argument.
9747 Use vect_truncate_gather_scatter_offset if we can't treat the
9748 operation as a normal gather load or scatter store.
9749 (get_group_load_store_type): Take the gather_scatter_info
9750 as argument. Try using a gather load or scatter store for
9751 single-element groups.
9752 (get_load_store_type): Update calls to get_group_load_store_type
9753 and vect_use_strided_gather_scatters_p.
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 * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
9760 optional tree argument.
9761 * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
9762 null target hooks.
9763 (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
9764 but continue to use the current value as a fallback.
9765 (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
9766 to compare the updates.
9767 * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
9768 (get_load_store_type): Use it when handling a strided access.
9769 (vect_get_strided_load_store_ops): New function.
9770 (vect_get_data_ptr_increment): Likewise.
9771 (vectorizable_load): Handle strided gather loads. Always pass
9772 a step to vect_create_data_ref_ptr and bump_vector_ptr.
9773
9774 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9775 Alan Hayward <alan.hayward@arm.com>
9776 David Sherwood <david.sherwood@arm.com>
9777
9778 * doc/md.texi (gather_load@var{m}): Document.
9779 (mask_gather_load@var{m}): Likewise.
9780 * genopinit.c (main): Add supports_vec_gather_load and
9781 supports_vec_gather_load_cached to target_optabs.
9782 * optabs-tree.c (init_tree_optimization_optabs): Use
9783 ggc_cleared_alloc to allocate target_optabs.
9784 * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
9785 * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
9786 functions.
9787 * internal-fn.h (internal_load_fn_p): Declare.
9788 (internal_gather_scatter_fn_p): Likewise.
9789 (internal_fn_mask_index): Likewise.
9790 (internal_gather_scatter_fn_supported_p): Likewise.
9791 * internal-fn.c (gather_load_direct): New macro.
9792 (expand_gather_load_optab_fn): New function.
9793 (direct_gather_load_optab_supported_p): New macro.
9794 (direct_internal_fn_optab): New function.
9795 (internal_load_fn_p): Likewise.
9796 (internal_gather_scatter_fn_p): Likewise.
9797 (internal_fn_mask_index): Likewise.
9798 (internal_gather_scatter_fn_supported_p): Likewise.
9799 * optabs-query.c (supports_at_least_one_mode_p): New function.
9800 (supports_vec_gather_load_p): Likewise.
9801 * optabs-query.h (supports_vec_gather_load_p): Declare.
9802 * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
9803 and memory_type field.
9804 (NUM_PATTERNS): Bump to 15.
9805 * tree-vect-data-refs.c: Include internal-fn.h.
9806 (vect_gather_scatter_fn_p): New function.
9807 (vect_describe_gather_scatter_call): Likewise.
9808 (vect_check_gather_scatter): Try using internal functions for
9809 gather loads. Recognize existing calls to a gather load function.
9810 (vect_analyze_data_refs): Consider using gather loads if
9811 supports_vec_gather_load_p.
9812 * tree-vect-patterns.c (vect_get_load_store_mask): New function.
9813 (vect_get_gather_scatter_offset_type): Likewise.
9814 (vect_convert_mask_for_vectype): Likewise.
9815 (vect_add_conversion_to_patterm): Likewise.
9816 (vect_try_gather_scatter_pattern): Likewise.
9817 (vect_recog_gather_scatter_pattern): New pattern recognizer.
9818 (vect_vect_recog_func_ptrs): Add it.
9819 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9820 internal_fn_mask_index and internal_gather_scatter_fn_p.
9821 (check_load_store_masking): Take the gather_scatter_info as an
9822 argument and handle gather loads.
9823 (vect_get_gather_scatter_ops): New function.
9824 (vectorizable_call): Check internal_load_fn_p.
9825 (vectorizable_load): Likewise. Handle gather load internal
9826 functions.
9827 (vectorizable_store): Update call to check_load_store_masking.
9828 * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
9829 * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
9830 * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
9831 (aarch64_gather_scale_operand_d): New predicates.
9832 * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
9833 (mask_gather_load<mode>): New insns.
9834
9835 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9836 Alan Hayward <alan.hayward@arm.com>
9837 David Sherwood <david.sherwood@arm.com>
9838
9839 * optabs.def (fold_left_plus_optab): New optab.
9840 * doc/md.texi (fold_left_plus_@var{m}): Document.
9841 * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
9842 * internal-fn.c (fold_left_direct): Define.
9843 (expand_fold_left_optab_fn): Likewise.
9844 (direct_fold_left_optab_supported_p): Likewise.
9845 * fold-const-call.c (fold_const_fold_left): New function.
9846 (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
9847 * tree-parloops.c (valid_reduction_p): New function.
9848 (gather_scalar_reductions): Use it.
9849 * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
9850 (vect_finish_replace_stmt): Declare.
9851 * tree-vect-loop.c (fold_left_reduction_fn): New function.
9852 (needs_fold_left_reduction_p): New function, split out from...
9853 (vect_is_simple_reduction): ...here. Accept reductions that
9854 forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
9855 (vect_force_simple_reduction): Also store the reduction type in
9856 the assignment's STMT_VINFO_REDUC_TYPE.
9857 (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
9858 (merge_with_identity): New function.
9859 (vect_expand_fold_left): Likewise.
9860 (vectorize_fold_left_reduction): Likewise.
9861 (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION. Leave the
9862 scalar phi in place for it. Check for target support and reject
9863 cases that would reassociate the operation. Defer the transform
9864 phase to vectorize_fold_left_reduction.
9865 * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
9866 * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
9867 (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
9868
9869 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9870
9871 * tree-if-conv.c (predicate_mem_writes): Remove redundant
9872 call to ifc_temp_var.
9873
9874 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9875 Alan Hayward <alan.hayward@arm.com>
9876 David Sherwood <david.sherwood@arm.com>
9877
9878 * target.def (legitimize_address_displacement): Take the original
9879 offset as a poly_int.
9880 * targhooks.h (default_legitimize_address_displacement): Update
9881 accordingly.
9882 * targhooks.c (default_legitimize_address_displacement): Likewise.
9883 * doc/tm.texi: Regenerate.
9884 * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
9885 as an argument, moving assert of ad->disp == ad->disp_term to...
9886 (process_address_1): ...here. Update calls to base_plus_disp_to_reg.
9887 Try calling targetm.legitimize_address_displacement before expanding
9888 the address rather than afterwards, and adjust for the new interface.
9889 * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
9890 Match the new hook interface. Handle SVE addresses.
9891 * config/sh/sh.c (sh_legitimize_address_displacement): Make the
9892 new hook interface.
9893
9894 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9895
9896 * Makefile.in (OBJS): Add early-remat.o.
9897 * target.def (select_early_remat_modes): New hook.
9898 * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
9899 * doc/tm.texi: Regenerate.
9900 * targhooks.h (default_select_early_remat_modes): Declare.
9901 * targhooks.c (default_select_early_remat_modes): New function.
9902 * timevar.def (TV_EARLY_REMAT): New timevar.
9903 * passes.def (pass_early_remat): New pass.
9904 * tree-pass.h (make_pass_early_remat): Declare.
9905 * early-remat.c: New file.
9906 * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
9907 function.
9908 (TARGET_SELECT_EARLY_REMAT_MODES): Define.
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 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
9915 vfm1 with a bound_epilog parameter.
9916 (vect_do_peeling): Update calls accordingly, and move the prologue
9917 call earlier in the function. Treat the base bound_epilog as 0 for
9918 fully-masked loops and retain vf - 1 for other loops. Add 1 to
9919 this base when peeling for gaps.
9920 * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
9921 with fully-masked loops.
9922 (vect_estimate_min_profitable_iters): Handle the single peeled
9923 iteration in that case.
9924
9925 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9926 Alan Hayward <alan.hayward@arm.com>
9927 David Sherwood <david.sherwood@arm.com>
9928
9929 * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
9930 single-element interleaving even if the size is not a power of 2.
9931 * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
9932 accesses for single-element interleaving if the group size is
9933 not a power of 2.
9934
9935 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9936 Alan Hayward <alan.hayward@arm.com>
9937 David Sherwood <david.sherwood@arm.com>
9938
9939 * doc/md.texi (fold_extract_last_@var{m}): Document.
9940 * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
9941 * optabs.def (fold_extract_last_optab): New optab.
9942 * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
9943 * internal-fn.c (fold_extract_direct): New macro.
9944 (expand_fold_extract_optab_fn): Likewise.
9945 (direct_fold_extract_optab_supported_p): Likewise.
9946 * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
9947 * tree-vect-loop.c (vect_model_reduction_cost): Handle
9948 EXTRACT_LAST_REDUCTION.
9949 (get_initial_def_for_reduction): Do not create an initial vector
9950 for EXTRACT_LAST_REDUCTION reductions.
9951 (vectorizable_reduction): Leave the scalar phi in place for
9952 EXTRACT_LAST_REDUCTIONs. Try using EXTRACT_LAST_REDUCTION
9953 ahead of INTEGER_INDUC_COND_REDUCTION. Do not check for an
9954 epilogue code for EXTRACT_LAST_REDUCTION and defer the
9955 transform phase to vectorizable_condition.
9956 * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
9957 split out from...
9958 (vect_finish_stmt_generation): ...here.
9959 (vect_finish_replace_stmt): New function.
9960 (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
9961 * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
9962 pattern.
9963 * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
9964
9965 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9966 Alan Hayward <alan.hayward@arm.com>
9967 David Sherwood <david.sherwood@arm.com>
9968
9969 * doc/md.texi (extract_last_@var{m}): Document.
9970 * optabs.def (extract_last_optab): New optab.
9971 * internal-fn.def (EXTRACT_LAST): New internal function.
9972 * internal-fn.c (cond_unary_direct): New macro.
9973 (expand_cond_unary_optab_fn): Likewise.
9974 (direct_cond_unary_optab_supported_p): Likewise.
9975 * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
9976 loops using EXTRACT_LAST.
9977 * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
9978 (extract_last_<mode>): ...this optab.
9979 (vec_extract<mode><Vel>): Update accordingly.
9980
9981 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9982 Alan Hayward <alan.hayward@arm.com>
9983 David Sherwood <david.sherwood@arm.com>
9984
9985 * target.def (empty_mask_is_expensive): New hook.
9986 * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
9987 * doc/tm.texi: Regenerate.
9988 * targhooks.h (default_empty_mask_is_expensive): Declare.
9989 * targhooks.c (default_empty_mask_is_expensive): New function.
9990 * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
9991 if the target says that empty masks are expensive.
9992 * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
9993 New function.
9994 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
9995
9996 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9997 Alan Hayward <alan.hayward@arm.com>
9998 David Sherwood <david.sherwood@arm.com>
9999
10000 * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
10001 (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
10002 (vect_use_loop_mask_for_alignment_p): New function.
10003 (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
10004 * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
10005 niters_skip argument. Make sure that the first niters_skip elements
10006 of the first iteration are inactive.
10007 (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
10008 Update call to vect_set_loop_masks_directly.
10009 (get_misalign_in_elems): New function, split out from...
10010 (vect_gen_prolog_loop_niters): ...here.
10011 (vect_update_init_of_dr): Take a code argument that specifies whether
10012 the adjustment should be added or subtracted.
10013 (vect_update_init_of_drs): Likewise.
10014 (vect_prepare_for_masked_peels): New function.
10015 (vect_do_peeling): Skip prologue peeling if we're using a mask
10016 instead. Update call to vect_update_inits_of_drs.
10017 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10018 mask_skip_niters.
10019 (vect_analyze_loop_2): Allow fully-masked loops with peeling for
10020 alignment. Do not include the number of peeled iterations in
10021 the minimum threshold in that case.
10022 (vectorizable_induction): Adjust the start value down by
10023 LOOP_VINFO_MASK_SKIP_NITERS iterations.
10024 (vect_transform_loop): Call vect_prepare_for_masked_peels.
10025 Take the number of skipped iterations into account when calculating
10026 the loop bounds.
10027 * tree-vect-stmts.c (vect_gen_while_not): New function.
10028
10029 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10030 Alan Hayward <alan.hayward@arm.com>
10031 David Sherwood <david.sherwood@arm.com>
10032
10033 * doc/sourcebuild.texi (vect_fully_masked): Document.
10034 * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
10035 default value to 0.
10036 * tree-vect-loop.c (vect_analyze_loop_costing): New function,
10037 split out from...
10038 (vect_analyze_loop_2): ...here. Don't check the vectorization
10039 factor against the number of loop iterations if the loop is
10040 fully-masked.
10041
10042 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10043 Alan Hayward <alan.hayward@arm.com>
10044 David Sherwood <david.sherwood@arm.com>
10045
10046 * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
10047 (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
10048 (dump_groups): Update accordingly.
10049 (iv_use::mem_type): New member variable.
10050 (address_p): New function.
10051 (record_use): Add a mem_type argument and initialize the new
10052 mem_type field.
10053 (record_group_use): Add a mem_type argument. Use address_p.
10054 Remove obsolete null checks of base_object. Update call to record_use.
10055 (find_interesting_uses_op): Update call to record_group_use.
10056 (find_interesting_uses_cond): Likewise.
10057 (find_interesting_uses_address): Likewise.
10058 (get_mem_type_for_internal_fn): New function.
10059 (find_address_like_use): Likewise.
10060 (find_interesting_uses_stmt): Try find_address_like_use before
10061 calling find_interesting_uses_op.
10062 (addr_offset_valid_p): Use the iv mem_type field as the type
10063 of the addressed memory.
10064 (add_autoinc_candidates): Likewise.
10065 (get_address_cost): Likewise.
10066 (split_small_address_groups_p): Use address_p.
10067 (split_address_groups): Likewise.
10068 (add_iv_candidate_for_use): Likewise.
10069 (autoinc_possible_for_pair): Likewise.
10070 (rewrite_groups): Likewise.
10071 (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
10072 (determine_group_iv_cost): Update after split of USE_ADDRESS.
10073 (get_alias_ptr_type_for_ptr_address): New function.
10074 (rewrite_use_address): Rewrite address uses in calls that were
10075 identified by find_address_like_use.
10076
10077 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10078 Alan Hayward <alan.hayward@arm.com>
10079 David Sherwood <david.sherwood@arm.com>
10080
10081 * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
10082 TARGET_MEM_REFs.
10083 * gimple-expr.h (is_gimple_addressable: Likewise.
10084 * gimple-expr.c (is_gimple_address): Likewise.
10085 * internal-fn.c (expand_call_mem_ref): New function.
10086 (expand_mask_load_optab_fn): Use it.
10087 (expand_mask_store_optab_fn): Likewise.
10088
10089 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10090 Alan Hayward <alan.hayward@arm.com>
10091 David Sherwood <david.sherwood@arm.com>
10092
10093 * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
10094 (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
10095 (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
10096 (cond_umax@var{mode}): Document.
10097 * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
10098 (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
10099 (cond_umin_optab, cond_umax_optab): New optabs.
10100 * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
10101 (COND_IOR, COND_XOR): New internal functions.
10102 * internal-fn.h (get_conditional_internal_fn): Declare.
10103 * internal-fn.c (cond_binary_direct): New macro.
10104 (expand_cond_binary_optab_fn): Likewise.
10105 (direct_cond_binary_optab_supported_p): Likewise.
10106 (get_conditional_internal_fn): New function.
10107 * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
10108 Cope with reduction statements that are vectorized as calls rather
10109 than assignments.
10110 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
10111 * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
10112 (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
10113 (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
10114 (UNSPEC_COND_EOR): New unspecs.
10115 (optab): Add mappings for them.
10116 (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
10117 (sve_int_op, sve_fp_op): New int attributes.
10118
10119 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10120 Alan Hayward <alan.hayward@arm.com>
10121 David Sherwood <david.sherwood@arm.com>
10122
10123 * optabs.def (while_ult_optab): New optab.
10124 * doc/md.texi (while_ult@var{m}@var{n}): Document.
10125 * internal-fn.def (WHILE_ULT): New internal function.
10126 * internal-fn.h (direct_internal_fn_supported_p): New override
10127 that takes two types as argument.
10128 * internal-fn.c (while_direct): New macro.
10129 (expand_while_optab_fn): New function.
10130 (convert_optab_supported_p): Likewise.
10131 (direct_while_optab_supported_p): New macro.
10132 * wide-int.h (wi::udiv_ceil): New function.
10133 * tree-vectorizer.h (rgroup_masks): New structure.
10134 (vec_loop_masks): New typedef.
10135 (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
10136 and fully_masked_p.
10137 (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
10138 (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
10139 (vect_max_vf): New function.
10140 (slpeel_make_loop_iterate_ntimes): Delete.
10141 (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
10142 (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
10143 (vect_record_loop_mask, vect_get_loop_mask): Likewise.
10144 * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
10145 internal-fn.h, stor-layout.h and optabs-query.h.
10146 (vect_set_loop_mask): New function.
10147 (add_preheader_seq): Likewise.
10148 (add_header_seq): Likewise.
10149 (interleave_supported_p): Likewise.
10150 (vect_maybe_permute_loop_masks): Likewise.
10151 (vect_set_loop_masks_directly): Likewise.
10152 (vect_set_loop_condition_masked): Likewise.
10153 (vect_set_loop_condition_unmasked): New function, split out from
10154 slpeel_make_loop_iterate_ntimes.
10155 (slpeel_make_loop_iterate_ntimes): Rename to..
10156 (vect_set_loop_condition): ...this. Use vect_set_loop_condition_masked
10157 for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
10158 (vect_do_peeling): Update call accordingly.
10159 (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
10160 loops.
10161 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10162 mask_compare_type, can_fully_mask_p and fully_masked_p.
10163 (release_vec_loop_masks): New function.
10164 (_loop_vec_info): Use it to free the loop masks.
10165 (can_produce_all_loop_masks_p): New function.
10166 (vect_get_max_nscalars_per_iter): Likewise.
10167 (vect_verify_full_masking): Likewise.
10168 (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
10169 retries, and free the mask rgroups before retrying. Check loop-wide
10170 reasons for disallowing fully-masked loops. Make the final decision
10171 about whether use a fully-masked loop or not.
10172 (vect_estimate_min_profitable_iters): Do not assume that peeling
10173 for the number of iterations will be needed for fully-masked loops.
10174 (vectorizable_reduction): Disable fully-masked loops.
10175 (vectorizable_live_operation): Likewise.
10176 (vect_halve_mask_nunits): New function.
10177 (vect_double_mask_nunits): Likewise.
10178 (vect_record_loop_mask): Likewise.
10179 (vect_get_loop_mask): Likewise.
10180 (vect_transform_loop): Handle the case in which the final loop
10181 iteration might handle a partial vector. Call vect_set_loop_condition
10182 instead of slpeel_make_loop_iterate_ntimes.
10183 * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
10184 (check_load_store_masking): New function.
10185 (prepare_load_store_mask): Likewise.
10186 (vectorizable_store): Handle fully-masked loops.
10187 (vectorizable_load): Likewise.
10188 (supportable_widening_operation): Use vect_halve_mask_nunits for
10189 booleans.
10190 (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
10191 (vect_gen_while): New function.
10192 * config/aarch64/aarch64.md (umax<mode>3): New expander.
10193 (aarch64_uqdec<mode>): New insn.
10194
10195 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10196 Alan Hayward <alan.hayward@arm.com>
10197 David Sherwood <david.sherwood@arm.com>
10198
10199 * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
10200 (reduc_xor_scal_optab): New optabs.
10201 * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
10202 (reduc_xor_scal_@var{m}): Document.
10203 * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
10204 * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
10205 internal functions.
10206 * fold-const-call.c (fold_const_call): Handle them.
10207 * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
10208 internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
10209 * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
10210 (*reduc_<bit_reduc>_scal_<mode>): New patterns.
10211 * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
10212 (UNSPEC_XORV): New unspecs.
10213 (optab): Add entries for them.
10214 (BITWISEV): New int iterator.
10215 (bit_reduc_op): New int attributes.
10216
10217 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10218 Alan Hayward <alan.hayward@arm.com>
10219 David Sherwood <david.sherwood@arm.com>
10220
10221 * doc/md.texi (vec_shl_insert_@var{m}): New optab.
10222 * internal-fn.def (VEC_SHL_INSERT): New internal function.
10223 * optabs.def (vec_shl_insert_optab): New optab.
10224 * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
10225 (duplicate_and_interleave): Likewise.
10226 * tree-vect-loop.c: Include internal-fn.h.
10227 (neutral_op_for_slp_reduction): New function, split out from
10228 get_initial_defs_for_reduction.
10229 (get_initial_def_for_reduction): Handle option 2 for variable-length
10230 vectors by loading the neutral value into a vector and then shifting
10231 the initial value into element 0.
10232 (get_initial_defs_for_reduction): Replace the code argument with
10233 the neutral value calculated by neutral_op_for_slp_reduction.
10234 Use gimple_build_vector for constant-length vectors.
10235 Use IFN_VEC_SHL_INSERT for variable-length vectors if all
10236 but the first group_size elements have a neutral value.
10237 Use duplicate_and_interleave otherwise.
10238 (vect_create_epilog_for_reduction): Take a neutral_op parameter.
10239 Update call to get_initial_defs_for_reduction. Handle SLP
10240 reductions for variable-length vectors by creating one vector
10241 result for each scalar result, with the elements associated
10242 with other scalar results stubbed out with the neutral value.
10243 (vectorizable_reduction): Call neutral_op_for_slp_reduction.
10244 Require IFN_VEC_SHL_INSERT for double reductions on
10245 variable-length vectors, or SLP reductions that have
10246 a neutral value. Require can_duplicate_and_interleave_p
10247 support for variable-length unchained SLP reductions if there
10248 is no neutral value, such as for MIN/MAX reductions. Also require
10249 the number of vector elements to be a multiple of the number of
10250 SLP statements when doing variable-length unchained SLP reductions.
10251 Update call to vect_create_epilog_for_reduction.
10252 * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
10253 and remove initial values.
10254 (duplicate_and_interleave): Make public.
10255 * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
10256 * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
10257
10258 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10259 Alan Hayward <alan.hayward@arm.com>
10260 David Sherwood <david.sherwood@arm.com>
10261
10262 * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
10263 (can_duplicate_and_interleave_p): New function.
10264 (vect_get_and_check_slp_defs): Take the vector of statements
10265 rather than just the current one. Remove excess parentheses.
10266 Restriction rejectinon of vect_constant_def and vect_external_def
10267 for variable-length vectors to boolean types, or types for which
10268 can_duplicate_and_interleave_p is false.
10269 (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
10270 (duplicate_and_interleave): New function.
10271 (vect_get_constant_vectors): Use gimple_build_vector for
10272 constant-length vectors and suitable variable-length constant
10273 vectors. Use duplicate_and_interleave for other variable-length
10274 vectors. Don't defer the update when inserting new statements.
10275
10276 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10277 Alan Hayward <alan.hayward@arm.com>
10278 David Sherwood <david.sherwood@arm.com>
10279
10280 * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
10281 min_profitable_iters doesn't go negative.
10282
10283 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10284 Alan Hayward <alan.hayward@arm.com>
10285 David Sherwood <david.sherwood@arm.com>
10286
10287 * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
10288 (vec_mask_store_lanes@var{m}@var{n}): Likewise.
10289 * optabs.def (vec_mask_load_lanes_optab): New optab.
10290 (vec_mask_store_lanes_optab): Likewise.
10291 * internal-fn.def (MASK_LOAD_LANES): New internal function.
10292 (MASK_STORE_LANES): Likewise.
10293 * internal-fn.c (mask_load_lanes_direct): New macro.
10294 (mask_store_lanes_direct): Likewise.
10295 (expand_mask_load_optab_fn): Handle masked operations.
10296 (expand_mask_load_lanes_optab_fn): New macro.
10297 (expand_mask_store_optab_fn): Handle masked operations.
10298 (expand_mask_store_lanes_optab_fn): New macro.
10299 (direct_mask_load_lanes_optab_supported_p): Likewise.
10300 (direct_mask_store_lanes_optab_supported_p): Likewise.
10301 * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
10302 parameter.
10303 (vect_load_lanes_supported): Likewise.
10304 * tree-vect-data-refs.c (strip_conversion): New function.
10305 (can_group_stmts_p): Likewise.
10306 (vect_analyze_data_ref_accesses): Use it instead of checking
10307 for a pair of assignments.
10308 (vect_store_lanes_supported): Take a masked_p parameter.
10309 (vect_load_lanes_supported): Likewise.
10310 * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
10311 vect_store_lanes_supported and vect_load_lanes_supported.
10312 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
10313 * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
10314 parameter. Don't allow gaps for masked accesses.
10315 Use vect_get_store_rhs. Update calls to vect_store_lanes_supported
10316 and vect_load_lanes_supported.
10317 (get_load_store_type): Take a masked_p parameter and update
10318 call to get_group_load_store_type.
10319 (vectorizable_store): Update call to get_load_store_type.
10320 Handle IFN_MASK_STORE_LANES.
10321 (vectorizable_load): Update call to get_load_store_type.
10322 Handle IFN_MASK_LOAD_LANES.
10323
10324 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10325 Alan Hayward <alan.hayward@arm.com>
10326 David Sherwood <david.sherwood@arm.com>
10327
10328 * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
10329 modes for SVE.
10330 * config/aarch64/aarch64-protos.h
10331 (aarch64_sve_struct_memory_operand_p): Declare.
10332 * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
10333 (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
10334 (VPRED, vpred): Handle SVE structure modes.
10335 * config/aarch64/constraints.md (Utx): New constraint.
10336 * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
10337 (aarch64_sve_struct_nonimmediate_operand): New predicates.
10338 * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
10339 * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
10340 (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
10341 structure modes. Split into pieces after RA.
10342 (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
10343 (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
10344 New patterns.
10345 * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
10346 SVE structure modes.
10347 (aarch64_classify_address): Likewise.
10348 (sizetochar): Move earlier in file.
10349 (aarch64_print_operand): Handle SVE register lists.
10350 (aarch64_array_mode): New function.
10351 (aarch64_sve_struct_memory_operand_p): Likewise.
10352 (TARGET_ARRAY_MODE): Redefine.
10353
10354 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10355 Alan Hayward <alan.hayward@arm.com>
10356 David Sherwood <david.sherwood@arm.com>
10357
10358 * target.def (array_mode): New target hook.
10359 * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
10360 * doc/tm.texi: Regenerate.
10361 * hooks.h (hook_optmode_mode_uhwi_none): Declare.
10362 * hooks.c (hook_optmode_mode_uhwi_none): New function.
10363 * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
10364 targetm.array_mode.
10365 * stor-layout.c (mode_for_array): Likewise. Support polynomial
10366 type sizes.
10367
10368 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10369 Alan Hayward <alan.hayward@arm.com>
10370 David Sherwood <david.sherwood@arm.com>
10371
10372 * fold-const.c (fold_binary_loc): Check the argument types
10373 rather than the result type when testing for a vector operation.
10374
10375 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10376
10377 * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
10378 * doc/tm.texi: Regenerate.
10379
10380 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10381 Alan Hayward <alan.hayward@arm.com>
10382 David Sherwood <david.sherwood@arm.com>
10383
10384 * doc/invoke.texi (-msve-vector-bits=): Document new option.
10385 (sve): Document new AArch64 extension.
10386 * doc/md.texi (w): Extend the description of the AArch64
10387 constraint to include SVE vectors.
10388 (Upl, Upa): Document new AArch64 predicate constraints.
10389 * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
10390 enum.
10391 * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
10392 (msve-vector-bits=): New option.
10393 * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
10394 SVE when these are disabled.
10395 (sve): New extension.
10396 * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
10397 modes. Adjust their number of units based on aarch64_sve_vg.
10398 (MAX_BITSIZE_MODE_ANY_MODE): Define.
10399 * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
10400 aarch64_addr_query_type.
10401 (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
10402 (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
10403 (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
10404 (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
10405 (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
10406 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
10407 (aarch64_simd_imm_zero_p): Delete.
10408 (aarch64_check_zero_based_sve_index_immediate): Declare.
10409 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
10410 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
10411 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
10412 (aarch64_sve_float_mul_immediate_p): Likewise.
10413 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
10414 rather than an rtx.
10415 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
10416 (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
10417 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
10418 (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
10419 (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
10420 (aarch64_regmode_natural_size): Likewise.
10421 * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
10422 (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
10423 left one place.
10424 (AARCH64_ISA_SVE, TARGET_SVE): New macros.
10425 (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
10426 for VG and the SVE predicate registers.
10427 (V_ALIASES): Add a "z"-prefixed alias.
10428 (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
10429 (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
10430 (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
10431 (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
10432 (REG_CLASS_NAMES): Add entries for them.
10433 (REG_CLASS_CONTENTS): Likewise. Update ALL_REGS to include VG
10434 and the predicate registers.
10435 (aarch64_sve_vg): Declare.
10436 (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
10437 (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
10438 (REGMODE_NATURAL_SIZE): Define.
10439 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
10440 SVE macros.
10441 * config/aarch64/aarch64.c: Include cfgrtl.h.
10442 (simd_immediate_info): Add a constructor for series vectors,
10443 and an associated step field.
10444 (aarch64_sve_vg): New variable.
10445 (aarch64_dbx_register_number): Handle VG and the predicate registers.
10446 (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
10447 (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
10448 (VEC_ANY_DATA, VEC_STRUCT): New constants.
10449 (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
10450 (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
10451 (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
10452 (aarch64_get_mask_mode): New functions.
10453 (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
10454 and FP_LO_REGS. Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
10455 (aarch64_hard_regno_mode_ok): Handle VG. Also handle the SVE
10456 predicate modes and predicate registers. Explicitly restrict
10457 GPRs to modes of 16 bytes or smaller. Only allow FP registers
10458 to store a vector mode if it is recognized by
10459 aarch64_classify_vector_mode.
10460 (aarch64_regmode_natural_size): New function.
10461 (aarch64_hard_regno_caller_save_mode): Return the original mode
10462 for predicates.
10463 (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
10464 (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
10465 (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
10466 (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
10467 functions.
10468 (aarch64_add_offset): Add a temp2 parameter. Assert that temp1
10469 does not overlap dest if the function is frame-related. Handle
10470 SVE constants.
10471 (aarch64_split_add_offset): New function.
10472 (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
10473 them aarch64_add_offset.
10474 (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
10475 and update call to aarch64_sub_sp.
10476 (aarch64_add_cfa_expression): New function.
10477 (aarch64_expand_prologue): Pass extra temporary registers to the
10478 functions above. Handle the case in which we need to emit new
10479 DW_CFA_expressions for registers that were originally saved
10480 relative to the stack pointer, but now have to be expressed
10481 relative to the frame pointer.
10482 (aarch64_output_mi_thunk): Pass extra temporary registers to the
10483 functions above.
10484 (aarch64_expand_epilogue): Likewise. Prevent inheritance of
10485 IP0 and IP1 values for SVE frames.
10486 (aarch64_expand_vec_series): New function.
10487 (aarch64_expand_sve_widened_duplicate): Likewise.
10488 (aarch64_expand_sve_const_vector): Likewise.
10489 (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
10490 Handle SVE constants. Use emit_move_insn to move a force_const_mem
10491 into the register, rather than emitting a SET directly.
10492 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
10493 (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
10494 (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
10495 (offset_9bit_signed_scaled_p): New functions.
10496 (aarch64_replicate_bitmask_imm): New function.
10497 (aarch64_bitmask_imm): Use it.
10498 (aarch64_cannot_force_const_mem): Reject expressions involving
10499 a CONST_POLY_INT. Update call to aarch64_classify_symbol.
10500 (aarch64_classify_index): Handle SVE indices, by requiring
10501 a plain register index with a scale that matches the element size.
10502 (aarch64_classify_address): Handle SVE addresses. Assert that
10503 the mode of the address is VOIDmode or an integer mode.
10504 Update call to aarch64_classify_symbol.
10505 (aarch64_classify_symbolic_expression): Update call to
10506 aarch64_classify_symbol.
10507 (aarch64_const_vec_all_in_range_p): New function.
10508 (aarch64_print_vector_float_operand): Likewise.
10509 (aarch64_print_operand): Handle 'N' and 'C'. Use "zN" rather than
10510 "vN" for FP registers with SVE modes. Handle (const ...) vectors
10511 and the FP immediates 1.0 and 0.5.
10512 (aarch64_print_address_internal): Handle SVE addresses.
10513 (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
10514 (aarch64_regno_regclass): Handle predicate registers.
10515 (aarch64_secondary_reload): Handle big-endian reloads of SVE
10516 data modes.
10517 (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
10518 (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
10519 (aarch64_convert_sve_vector_bits): New function.
10520 (aarch64_override_options): Use it to handle -msve-vector-bits=.
10521 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
10522 rather than an rtx.
10523 (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
10524 Handle SVE vector and predicate modes. Accept VL-based constants
10525 that need only one temporary register, and VL offsets that require
10526 no temporary registers.
10527 (aarch64_conditional_register_usage): Mark the predicate registers
10528 as fixed if SVE isn't available.
10529 (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
10530 Return true for SVE vector and predicate modes.
10531 (aarch64_simd_container_mode): Take the number of bits as a poly_int64
10532 rather than an unsigned int. Handle SVE modes.
10533 (aarch64_preferred_simd_mode): Update call accordingly. Handle
10534 SVE modes.
10535 (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
10536 if SVE is enabled.
10537 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
10538 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
10539 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
10540 (aarch64_sve_float_mul_immediate_p): New functions.
10541 (aarch64_sve_valid_immediate): New function.
10542 (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
10543 Explicitly reject structure modes. Check for INDEX constants.
10544 Handle PTRUE and PFALSE constants.
10545 (aarch64_check_zero_based_sve_index_immediate): New function.
10546 (aarch64_simd_imm_zero_p): Delete.
10547 (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
10548 vector modes. Accept constants in the range of CNT[BHWD].
10549 (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
10550 ask for an Advanced SIMD mode.
10551 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
10552 (aarch64_simd_vector_alignment): Handle SVE predicates.
10553 (aarch64_vectorize_preferred_vector_alignment): New function.
10554 (aarch64_simd_vector_alignment_reachable): Use it instead of
10555 the vector size.
10556 (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
10557 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
10558 functions.
10559 (MAX_VECT_LEN): Delete.
10560 (expand_vec_perm_d): Add a vec_flags field.
10561 (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
10562 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
10563 (aarch64_evpc_ext): Don't apply a big-endian lane correction
10564 for SVE modes.
10565 (aarch64_evpc_rev): Rename to...
10566 (aarch64_evpc_rev_local): ...this. Use a predicated operation for SVE.
10567 (aarch64_evpc_rev_global): New function.
10568 (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
10569 (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
10570 MAX_VECT_LEN.
10571 (aarch64_evpc_sve_tbl): New function.
10572 (aarch64_expand_vec_perm_const_1): Update after rename of
10573 aarch64_evpc_rev. Handle SVE permutes too, trying
10574 aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
10575 than aarch64_evpc_tbl.
10576 (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
10577 (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
10578 (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
10579 (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
10580 (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
10581 (aarch64_expand_sve_vcond): New functions.
10582 (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
10583 of aarch64_vector_mode_p.
10584 (aarch64_dwarf_poly_indeterminate_value): New function.
10585 (aarch64_compute_pressure_classes): Likewise.
10586 (aarch64_can_change_mode_class): Likewise.
10587 (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
10588 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
10589 (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
10590 (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
10591 (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
10592 (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
10593 * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
10594 (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
10595 constraints.
10596 (Dn, Dl, Dr): Accept const as well as const_vector.
10597 (Dz): Likewise. Compare against CONST0_RTX.
10598 * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
10599 of "vector" where appropriate.
10600 (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
10601 (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
10602 (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
10603 (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
10604 (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
10605 (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
10606 (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
10607 (v_int_equiv): Extend to SVE modes.
10608 (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
10609 mode attributes.
10610 (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
10611 (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
10612 (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
10613 (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
10614 (SVE_COND_FP_CMP): New int iterators.
10615 (perm_hilo): Handle the new unpack unspecs.
10616 (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
10617 attributes.
10618 * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
10619 (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
10620 (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
10621 (aarch64_equality_operator, aarch64_constant_vector_operand)
10622 (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
10623 (aarch64_sve_nonimmediate_operand): Likewise.
10624 (aarch64_sve_general_operand): Likewise.
10625 (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
10626 (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
10627 (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
10628 (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
10629 (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
10630 (aarch64_sve_float_arith_immediate): Likewise.
10631 (aarch64_sve_float_arith_with_sub_immediate): Likewise.
10632 (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
10633 (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
10634 (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
10635 (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
10636 (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
10637 (aarch64_sve_float_arith_operand): Likewise.
10638 (aarch64_sve_float_arith_with_sub_operand): Likewise.
10639 (aarch64_sve_float_mul_operand): Likewise.
10640 (aarch64_sve_vec_perm_operand): Likewise.
10641 (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
10642 (aarch64_mov_operand): Accept const_poly_int and const_vector.
10643 (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
10644 as well as const_vector.
10645 (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
10646 in file. Use CONST0_RTX and CONSTM1_RTX.
10647 (aarch64_simd_or_scalar_imm_zero): Likewise. Add match_codes.
10648 (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
10649 Use aarch64_simd_imm_zero.
10650 * config/aarch64/aarch64-sve.md: New file.
10651 * config/aarch64/aarch64.md: Include it.
10652 (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
10653 (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
10654 (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
10655 (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
10656 (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
10657 (sve): New attribute.
10658 (enabled): Disable instructions with the sve attribute unless
10659 TARGET_SVE.
10660 (movqi, movhi): Pass CONST_POLY_INT operaneds through
10661 aarch64_expand_mov_immediate.
10662 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
10663 CNT[BHSD] immediates.
10664 (movti): Split CONST_POLY_INT moves into two halves.
10665 (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
10666 Split additions that need a temporary here if the destination
10667 is the stack pointer.
10668 (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
10669 (*add<mode>3_poly_1): New instruction.
10670 (set_clobber_cc): New expander.
10671
10672 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10673
10674 * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
10675 parameter and use it instead of GET_MODE_SIZE (innermode). Use
10676 inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
10677 Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
10678 GET_MODE_NUNITS (innermode). Also add a first_elem parameter.
10679 Change innermode from fixed_mode_size to machine_mode.
10680 (simplify_subreg): Update call accordingly. Handle a constant-sized
10681 subreg of a variable-length CONST_VECTOR.
10682
10683 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10684 Alan Hayward <alan.hayward@arm.com>
10685 David Sherwood <david.sherwood@arm.com>
10686
10687 * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
10688 (add_offset_to_base): New function, split out from...
10689 (create_mem_ref): ...here. When handling a scale other than 1,
10690 check first whether the address is valid without the offset.
10691 Add it into the base if so, leaving the index and scale as-is.
10692
10693 2018-01-12 Jakub Jelinek <jakub@redhat.com>
10694
10695 PR c++/83778
10696 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
10697 fold_for_warn before checking if arg2 is INTEGER_CST.
10698
10699 2018-01-12 Segher Boessenkool <segher@kernel.crashing.org>
10700
10701 * config/rs6000/predicates.md (load_multiple_operation): Delete.
10702 (store_multiple_operation): Delete.
10703 * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
10704 * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
10705 * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
10706 guarded by TARGET_STRING.
10707 (rs6000_output_load_multiple): Delete.
10708 * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
10709 OPTION_MASK_STRING / TARGET_STRING handling.
10710 (print_operand) <'N', 'O'>: Add comment that these are unused now.
10711 (const rs6000_opt_masks) <"string">: Change mask to 0.
10712 * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
10713 (MASK_STRING): Delete.
10714 * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
10715 parts. Simplify.
10716 (load_multiple): Delete.
10717 (*ldmsi8): Delete.
10718 (*ldmsi7): Delete.
10719 (*ldmsi6): Delete.
10720 (*ldmsi5): Delete.
10721 (*ldmsi4): Delete.
10722 (*ldmsi3): Delete.
10723 (store_multiple): Delete.
10724 (*stmsi8): Delete.
10725 (*stmsi7): Delete.
10726 (*stmsi6): Delete.
10727 (*stmsi5): Delete.
10728 (*stmsi4): Delete.
10729 (*stmsi3): Delete.
10730 (movmemsi_8reg): Delete.
10731 (corresponding unnamed define_insn): Delete.
10732 (movmemsi_6reg): Delete.
10733 (corresponding unnamed define_insn): Delete.
10734 (movmemsi_4reg): Delete.
10735 (corresponding unnamed define_insn): Delete.
10736 (movmemsi_2reg): Delete.
10737 (corresponding unnamed define_insn): Delete.
10738 (movmemsi_1reg): Delete.
10739 (corresponding unnamed define_insn): Delete.
10740 * config/rs6000/rs6000.opt (mno-string): New.
10741 (mstring): Replace by deprecation warning stub.
10742 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
10743
10744 2018-01-12 Jakub Jelinek <jakub@redhat.com>
10745
10746 * regrename.c (regrename_do_replace): If replacing the same
10747 reg multiple times, try to reuse last created gen_raw_REG.
10748
10749 PR debug/81155
10750 * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
10751 main to workaround a bug in GDB.
10752
10753 2018-01-12 Tom de Vries <tom@codesourcery.com>
10754
10755 PR target/83737
10756 * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
10757
10758 2018-01-12 Vladimir Makarov <vmakarov@redhat.com>
10759
10760 PR rtl-optimization/80481
10761 * ira-color.c (get_cap_member): New function.
10762 (allocnos_conflict_by_live_ranges_p): Use it.
10763 (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
10764 (setup_slot_coalesced_allocno_live_ranges): Ditto.
10765
10766 2018-01-12 Uros Bizjak <ubizjak@gmail.com>
10767
10768 PR target/83628
10769 * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
10770 (*saddl_se_1): Ditto.
10771 (*ssubsi_1): Ditto.
10772 (*ssubl_se_1): Ditto.
10773
10774 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
10775
10776 * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
10777 rather than wi::to_widest for DR_INITs.
10778 * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
10779 wi::to_poly_offset rather than wi::to_offset for DR_INIT.
10780 (vect_analyze_data_ref_accesses): Require both DR_INITs to be
10781 INTEGER_CSTs.
10782 (vect_analyze_group_access_1): Note that here.
10783
10784 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
10785
10786 * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
10787 polynomial type sizes.
10788
10789 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
10790
10791 * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
10792 poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
10793 (gimple_add_tmp_var): Likewise.
10794
10795 2018-01-12 Martin Liska <mliska@suse.cz>
10796
10797 * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
10798 (gimple_alloc_sizes): Likewise.
10799 (dump_gimple_statistics): Use PRIu64 in printf format.
10800 * gimple.h: Change uint64_t to int.
10801
10802 2018-01-12 Martin Liska <mliska@suse.cz>
10803
10804 * tree-core.h: Use uint64_t instead of int.
10805 * tree.c (tree_node_counts): Likewise.
10806 (tree_node_sizes): Likewise.
10807 (dump_tree_statistics): Use PRIu64 in printf format.
10808
10809 2018-01-12 Martin Liska <mliska@suse.cz>
10810
10811 * Makefile.in: As qsort_chk is implemented in vec.c, add
10812 vec.o to linkage of gencfn-macros.
10813 * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
10814 passing the info to record_node_allocation_statistics.
10815 (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
10816 and pass the info.
10817 * ggc-common.c (struct ggc_usage): Add operator== and use
10818 it in operator< and compare function.
10819 * mem-stats.h (struct mem_usage): Likewise.
10820 * vec.c (struct vec_usage): Remove operator< and compare
10821 function. Can be simply inherited.
10822
10823 2018-01-12 Martin Jambor <mjambor@suse.cz>
10824
10825 PR target/81616
10826 * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
10827 * tree-ssa-math-opts.c: Include domwalk.h.
10828 (convert_mult_to_fma_1): New function.
10829 (fma_transformation_info): New type.
10830 (fma_deferring_state): Likewise.
10831 (cancel_fma_deferring): New function.
10832 (result_of_phi): Likewise.
10833 (last_fma_candidate_feeds_initial_phi): Likewise.
10834 (convert_mult_to_fma): Added deferring logic, split actual
10835 transformation to convert_mult_to_fma_1.
10836 (math_opts_dom_walker): New type.
10837 (math_opts_dom_walker::after_dom_children): New method, body moved
10838 here from pass_optimize_widening_mul::execute, added deferring logic
10839 bits.
10840 (pass_optimize_widening_mul::execute): Moved most of code to
10841 math_opts_dom_walker::after_dom_children.
10842 * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
10843 * config/i386/i386.c (ix86_option_override_internal): Added
10844 maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
10845
10846 2018-01-12 Richard Biener <rguenther@suse.de>
10847
10848 PR debug/83157
10849 * dwarf2out.c (gen_variable_die): Do not reset old_die for
10850 inline instance vars.
10851
10852 2018-01-12 Oleg Endo <olegendo@gcc.gnu.org>
10853
10854 PR target/81819
10855 * config/rx/rx.c (rx_is_restricted_memory_address):
10856 Handle SUBREG case.
10857
10858 2018-01-12 Richard Biener <rguenther@suse.de>
10859
10860 PR tree-optimization/80846
10861 * target.def (split_reduction): New target hook.
10862 * targhooks.c (default_split_reduction): New function.
10863 * targhooks.h (default_split_reduction): Declare.
10864 * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
10865 target requests first reduce vectors by combining low and high
10866 parts.
10867 * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
10868 (get_vectype_for_scalar_type_and_size): Export.
10869 * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
10870 * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
10871 * doc/tm.texi: Regenerate.
10872 * config/i386/i386.c (ix86_split_reduction): Implement
10873 TARGET_VECTORIZE_SPLIT_REDUCTION.
10874
10875 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
10876
10877 PR target/83368
10878 * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
10879 in PIC mode except for TARGET_VXWORKS_RTP.
10880 * config/sparc/sparc.c: Include cfgrtl.h.
10881 (TARGET_INIT_PIC_REG): Define.
10882 (TARGET_USE_PSEUDO_PIC_REG): Likewise.
10883 (sparc_pic_register_p): New predicate.
10884 (sparc_legitimate_address_p): Use it.
10885 (sparc_legitimize_pic_address): Likewise.
10886 (sparc_delegitimize_address): Likewise.
10887 (sparc_mode_dependent_address_p): Likewise.
10888 (gen_load_pcrel_sym): Remove 4th parameter.
10889 (load_got_register): Adjust call to above. Remove obsolete stuff.
10890 (sparc_expand_prologue): Do not call load_got_register here.
10891 (sparc_flat_expand_prologue): Likewise.
10892 (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
10893 (sparc_use_pseudo_pic_reg): New function.
10894 (sparc_init_pic_reg): Likewise.
10895 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
10896 (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
10897
10898 2018-01-12 Christophe Lyon <christophe.lyon@linaro.org>
10899
10900 * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
10901 Add item for branch_cost.
10902
10903 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
10904
10905 PR rtl-optimization/83565
10906 * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
10907 not extend the result to a larger mode for rotate operations.
10908 (num_sign_bit_copies1): Likewise.
10909
10910 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
10911
10912 PR target/40411
10913 * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
10914 -symbolic.
10915 Use values-Xc.o for -pedantic.
10916 Link with values-xpg4.o for C90, values-xpg6.o otherwise.
10917
10918 2018-01-12 Martin Liska <mliska@suse.cz>
10919
10920 PR ipa/83054
10921 * ipa-devirt.c (final_warning_record::grow_type_warnings):
10922 New function.
10923 (possible_polymorphic_call_targets): Use it.
10924 (ipa_devirt): Likewise.
10925
10926 2018-01-12 Martin Liska <mliska@suse.cz>
10927
10928 * profile-count.h (enum profile_quality): Use 0 as invalid
10929 enum value of profile_quality.
10930
10931 2018-01-12 Chung-Ju Wu <jasonwucj@gmail.com>
10932
10933 * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
10934 -mext-string options.
10935
10936 2018-01-12 Richard Biener <rguenther@suse.de>
10937
10938 * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
10939 DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
10940 * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
10941 Likewise.
10942 * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
10943
10944 2018-01-11 Michael Meissner <meissner@linux.vnet.ibm.com>
10945
10946 * configure.ac (--with-long-double-format): Add support for the
10947 configuration option to change the default long double format on
10948 PowerPC systems.
10949 * config.gcc (powerpc*-linux*-*): Likewise.
10950 * configure: Regenerate.
10951 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
10952 double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
10953 used without modification.
10954
10955 2018-01-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
10956
10957 * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
10958 (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
10959 * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
10960 MISC_BUILTIN_SPEC_BARRIER.
10961 (rs6000_init_builtins): Likewise.
10962 * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
10963 enum value.
10964 (speculation_barrier): New define_insn.
10965 * doc/extend.texi: Document __builtin_speculation_barrier.
10966
10967 2018-01-11 Jakub Jelinek <jakub@redhat.com>
10968
10969 PR target/83203
10970 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
10971 is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
10972 * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
10973 iterators.
10974 (ssescalarmodesuffix): Add 512-bit vectors. Use "d" or "q" for
10975 integral modes instead of "ss" and "sd".
10976 (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
10977 vectors with 32-bit and 64-bit elements.
10978 (vecdupssescalarmodesuffix): New mode attribute.
10979 (vec_dup<mode>): Use it.
10980
10981 2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
10982
10983 PR target/83330
10984 * config/i386/i386.c (ix86_compute_frame_layout): Align stack
10985 frame if argument is passed on stack.
10986
10987 2018-01-11 Jakub Jelinek <jakub@redhat.com>
10988
10989 PR target/82682
10990 * ree.c (combine_reaching_defs): Optimize also
10991 reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
10992 reg2=any_extend(exp); reg1=reg2;, formatting fix.
10993
10994 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
10995
10996 PR middle-end/83189
10997 * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
10998
10999 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
11000
11001 PR middle-end/83718
11002 * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
11003 after they are computed.
11004
11005 2018-01-11 Bin Cheng <bin.cheng@arm.com>
11006
11007 PR tree-optimization/83695
11008 * gimple-loop-linterchange.cc
11009 (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
11010 reset cached scev information after interchange.
11011 (pass_linterchange::execute): Remove call to scev_reset_htab.
11012
11013 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11014
11015 * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
11016 vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
11017 vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
11018 vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
11019 vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
11020 vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
11021 * config/arm/arm_neon_builtins.def (vfmal_lane_low,
11022 vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
11023 vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
11024 vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
11025 vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
11026 * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
11027 (V_lane_reg): Likewise.
11028 * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
11029 New define_expand.
11030 (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
11031 (vfmal_lane_low<mode>_intrinsic,
11032 vfmal_lane_low<vfmlsel2><mode>_intrinsic,
11033 vfmal_lane_high<vfmlsel2><mode>_intrinsic,
11034 vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
11035 vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
11036 vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
11037 vfmsl_lane_high<mode>_intrinsic): New define_insns.
11038
11039 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11040
11041 * config/arm/arm-cpus.in (fp16fml): New feature.
11042 (ALL_SIMD): Add fp16fml.
11043 (armv8.2-a): Add fp16fml as an option.
11044 (armv8.3-a): Likewise.
11045 (armv8.4-a): Add fp16fml as part of fp16.
11046 * config/arm/arm.h (TARGET_FP16FML): Define.
11047 * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
11048 when appropriate.
11049 * config/arm/arm-modes.def (V2HF): Define.
11050 * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
11051 vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
11052 vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
11053 * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
11054 vfmsl_low, vfmsl_high): New set of builtins.
11055 * config/arm/iterators.md (PLUSMINUS): New code iterator.
11056 (vfml_op): New code attribute.
11057 (VFMLHALVES): New int iterator.
11058 (VFML, VFMLSEL): New mode attributes.
11059 (V_reg): Define mapping for V2HF.
11060 (V_hi, V_lo): New mode attributes.
11061 (VF_constraint): Likewise.
11062 (vfml_half, vfml_half_selector): New int attributes.
11063 * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
11064 define_expand.
11065 (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
11066 vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
11067 New define_insn.
11068 * config/arm/t-arm-elf (v8_fps): Add fp16fml.
11069 * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
11070 * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
11071 * doc/invoke.texi (ARM Options): Document fp16fml. Update armv8.4-a
11072 documentation.
11073 * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
11074 Document new effective target and option set.
11075
11076 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11077
11078 * config/arm/arm-cpus.in (armv8_4): New feature.
11079 (ARMv8_4a): New fgroup.
11080 (armv8.4-a): New arch.
11081 * config/arm/arm-tables.opt: Regenerate.
11082 * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
11083 * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
11084 * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
11085 Add matching rules for -march=armv8.4-a and extensions.
11086 * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
11087
11088 2018-01-11 Oleg Endo <olegendo@gcc.gnu.org>
11089
11090 PR target/81821
11091 * config/rx/rx.md (BW): New mode attribute.
11092 (sync_lock_test_and_setsi): Add mode suffix to insn output.
11093
11094 2018-01-11 Richard Biener <rguenther@suse.de>
11095
11096 PR tree-optimization/83435
11097 * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
11098 * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
11099 * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
11100
11101 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11102 Alan Hayward <alan.hayward@arm.com>
11103 David Sherwood <david.sherwood@arm.com>
11104
11105 * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
11106 field.
11107 (aarch64_classify_address): Initialize it. Track polynomial offsets.
11108 (aarch64_print_address_internal): Use it to check for a zero offset.
11109
11110 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11111 Alan Hayward <alan.hayward@arm.com>
11112 David Sherwood <david.sherwood@arm.com>
11113
11114 * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
11115 * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
11116 Return a poly_int64 rather than a HOST_WIDE_INT.
11117 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
11118 rather than a HOST_WIDE_INT.
11119 * config/aarch64/aarch64.h (aarch64_frame): Protect with
11120 HAVE_POLY_INT_H rather than HOST_WIDE_INT. Change locals_offset,
11121 hard_fp_offset, frame_size, initial_adjust, callee_offset and
11122 final_offset from HOST_WIDE_INT to poly_int64.
11123 * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
11124 to_constant when getting the number of units in an Advanced SIMD
11125 mode.
11126 (aarch64_builtin_vectorized_function): Check for a constant number
11127 of units.
11128 * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
11129 GET_MODE_SIZE.
11130 (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
11131 attribute instead of GET_MODE_NUNITS.
11132 * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
11133 (aarch64_class_max_nregs): Use the constant_lowest_bound of the
11134 GET_MODE_SIZE for fixed-size registers.
11135 (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
11136 (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
11137 (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
11138 (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
11139 (aarch64_print_operand, aarch64_print_address_internal)
11140 (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
11141 (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
11142 (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
11143 Handle polynomial GET_MODE_SIZE.
11144 (aarch64_hard_regno_caller_save_mode): Likewise. Return modes
11145 wider than SImode without modification.
11146 (tls_symbolic_operand_type): Use strip_offset instead of split_const.
11147 (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
11148 (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
11149 passing and returning SVE modes.
11150 (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
11151 rather than GEN_INT.
11152 (aarch64_emit_probe_stack_range): Take the size as a poly_int64
11153 rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
11154 (aarch64_allocate_and_probe_stack_space): Likewise.
11155 (aarch64_layout_frame): Cope with polynomial offsets.
11156 (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
11157 start_offset as a poly_int64 rather than a HOST_WIDE_INT. Track
11158 polynomial offsets.
11159 (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
11160 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
11161 poly_int64 rather than a HOST_WIDE_INT.
11162 (aarch64_get_separate_components, aarch64_process_components)
11163 (aarch64_expand_prologue, aarch64_expand_epilogue)
11164 (aarch64_use_return_insn_p): Handle polynomial frame offsets.
11165 (aarch64_anchor_offset): New function, split out from...
11166 (aarch64_legitimize_address): ...here.
11167 (aarch64_builtin_vectorization_cost): Handle polynomial
11168 TYPE_VECTOR_SUBPARTS.
11169 (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
11170 GET_MODE_NUNITS.
11171 (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
11172 number of elements from the PARALLEL rather than the mode.
11173 (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
11174 rather than GET_MODE_BITSIZE.
11175 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
11176 (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
11177 (aarch64_expand_vec_perm_const_1): Handle polynomial
11178 d->perm.length () and d->perm elements.
11179 (aarch64_evpc_tbl): Likewise. Use nelt rather than GET_MODE_NUNITS.
11180 Apply to_constant to d->perm elements.
11181 (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
11182 polynomial CONST_VECTOR_NUNITS.
11183 (aarch64_move_pointer): Take amount as a poly_int64 rather
11184 than an int.
11185 (aarch64_progress_pointer): Avoid temporary variable.
11186 * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
11187 the mode attribute instead of GET_MODE.
11188
11189 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11190 Alan Hayward <alan.hayward@arm.com>
11191 David Sherwood <david.sherwood@arm.com>
11192
11193 * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
11194 x exists before using it.
11195 (aarch64_add_constant_internal): Rename to...
11196 (aarch64_add_offset_1): ...this. Replace regnum with separate
11197 src and dest rtxes. Handle the case in which they're different,
11198 including when the offset is zero. Replace scratchreg with an rtx.
11199 Use 2 additions if there is no spare register into which we can
11200 move a 16-bit constant.
11201 (aarch64_add_constant): Delete.
11202 (aarch64_add_offset): Replace reg with separate src and dest
11203 rtxes. Take a poly_int64 offset instead of a HOST_WIDE_INT.
11204 Use aarch64_add_offset_1.
11205 (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
11206 an rtx rather than an int. Take the delta as a poly_int64
11207 rather than a HOST_WIDE_INT. Use aarch64_add_offset.
11208 (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
11209 (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
11210 aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
11211 (aarch64_expand_epilogue): Update calls to aarch64_add_offset
11212 and aarch64_add_sp.
11213 (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
11214 aarch64_add_constant.
11215
11216 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11217
11218 * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
11219 Use scalar_float_mode.
11220
11221 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11222
11223 * config/aarch64/aarch64-simd.md
11224 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
11225 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
11226 (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
11227 (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
11228 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
11229 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
11230 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
11231 (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
11232 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
11233 (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
11234
11235 2018-01-11 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
11236
11237 PR target/83514
11238 * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
11239 targ_options->x_arm_arch_string is non NULL.
11240
11241 2018-01-11 Tamar Christina <tamar.christina@arm.com>
11242
11243 * config/aarch64/aarch64.h
11244 (AARCH64_FL_FOR_ARCH8_4): Add AARCH64_FL_DOTPROD.
11245
11246 2018-01-11 Sudakshina Das <sudi.das@arm.com>
11247
11248 PR target/82096
11249 * expmed.c (emit_store_flag_force): Swap if const op0
11250 and change VOIDmode to mode of op0.
11251
11252 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11253
11254 PR rtl-optimization/83761
11255 * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
11256 than bytes to mode_for_size.
11257
11258 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
11259
11260 PR middle-end/83189
11261 * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
11262 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
11263 profile.
11264
11265 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
11266
11267 PR middle-end/83575
11268 * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
11269 when in layout mode.
11270 (cfg_layout_finalize): Do not verify cfg before we are out of layout.
11271 * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
11272 partition fixup.
11273
11274 2018-01-10 Michael Collison <michael.collison@arm.com>
11275
11276 * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
11277 * config/aarch64/aarch64-option-extension.def: Add
11278 AARCH64_OPT_EXTENSION of 'fp16fml'.
11279 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11280 (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
11281 * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
11282 * config/aarch64/constraints.md (Ui7): New constraint.
11283 * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
11284 (VFMLA_SEL_W): Ditto.
11285 (f16quad): Ditto.
11286 (f16mac1): Ditto.
11287 (VFMLA16_LOW): New int iterator.
11288 (VFMLA16_HIGH): Ditto.
11289 (UNSPEC_FMLAL): New unspec.
11290 (UNSPEC_FMLSL): Ditto.
11291 (UNSPEC_FMLAL2): Ditto.
11292 (UNSPEC_FMLSL2): Ditto.
11293 (f16mac): New code attribute.
11294 * config/aarch64/aarch64-simd-builtins.def
11295 (aarch64_fmlal_lowv2sf): Ditto.
11296 (aarch64_fmlsl_lowv2sf): Ditto.
11297 (aarch64_fmlalq_lowv4sf): Ditto.
11298 (aarch64_fmlslq_lowv4sf): Ditto.
11299 (aarch64_fmlal_highv2sf): Ditto.
11300 (aarch64_fmlsl_highv2sf): Ditto.
11301 (aarch64_fmlalq_highv4sf): Ditto.
11302 (aarch64_fmlslq_highv4sf): Ditto.
11303 (aarch64_fmlal_lane_lowv2sf): Ditto.
11304 (aarch64_fmlsl_lane_lowv2sf): Ditto.
11305 (aarch64_fmlal_laneq_lowv2sf): Ditto.
11306 (aarch64_fmlsl_laneq_lowv2sf): Ditto.
11307 (aarch64_fmlalq_lane_lowv4sf): Ditto.
11308 (aarch64_fmlsl_lane_lowv4sf): Ditto.
11309 (aarch64_fmlalq_laneq_lowv4sf): Ditto.
11310 (aarch64_fmlsl_laneq_lowv4sf): Ditto.
11311 (aarch64_fmlal_lane_highv2sf): Ditto.
11312 (aarch64_fmlsl_lane_highv2sf): Ditto.
11313 (aarch64_fmlal_laneq_highv2sf): Ditto.
11314 (aarch64_fmlsl_laneq_highv2sf): Ditto.
11315 (aarch64_fmlalq_lane_highv4sf): Ditto.
11316 (aarch64_fmlsl_lane_highv4sf): Ditto.
11317 (aarch64_fmlalq_laneq_highv4sf): Ditto.
11318 (aarch64_fmlsl_laneq_highv4sf): Ditto.
11319 * config/aarch64/aarch64-simd.md:
11320 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
11321 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
11322 (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
11323 (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
11324 (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
11325 (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
11326 (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
11327 (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
11328 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
11329 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
11330 (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
11331 (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
11332 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
11333 (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
11334 (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
11335 (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
11336 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
11337 (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
11338 (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
11339 (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
11340 * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
11341 (vfmlsl_low_u32): Ditto.
11342 (vfmlalq_low_u32): Ditto.
11343 (vfmlslq_low_u32): Ditto.
11344 (vfmlal_high_u32): Ditto.
11345 (vfmlsl_high_u32): Ditto.
11346 (vfmlalq_high_u32): Ditto.
11347 (vfmlslq_high_u32): Ditto.
11348 (vfmlal_lane_low_u32): Ditto.
11349 (vfmlsl_lane_low_u32): Ditto.
11350 (vfmlal_laneq_low_u32): Ditto.
11351 (vfmlsl_laneq_low_u32): Ditto.
11352 (vfmlalq_lane_low_u32): Ditto.
11353 (vfmlslq_lane_low_u32): Ditto.
11354 (vfmlalq_laneq_low_u32): Ditto.
11355 (vfmlslq_laneq_low_u32): Ditto.
11356 (vfmlal_lane_high_u32): Ditto.
11357 (vfmlsl_lane_high_u32): Ditto.
11358 (vfmlal_laneq_high_u32): Ditto.
11359 (vfmlsl_laneq_high_u32): Ditto.
11360 (vfmlalq_lane_high_u32): Ditto.
11361 (vfmlslq_lane_high_u32): Ditto.
11362 (vfmlalq_laneq_high_u32): Ditto.
11363 (vfmlslq_laneq_high_u32): Ditto.
11364 * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
11365 (AARCH64_FL_FOR_ARCH8_4): New.
11366 (AARCH64_ISA_F16FML): New ISA flag.
11367 (TARGET_F16FML): New feature flag for fp16fml.
11368 (doc/invoke.texi): Document new fp16fml option.
11369
11370 2018-01-10 Michael Collison <michael.collison@arm.com>
11371
11372 * config/aarch64/aarch64-builtins.c:
11373 (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
11374 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11375 (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
11376 * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
11377 (AARCH64_ISA_SHA3): New ISA flag.
11378 (TARGET_SHA3): New feature flag for sha3.
11379 * config/aarch64/iterators.md (sha512_op): New int attribute.
11380 (CRYPTO_SHA512): New int iterator.
11381 (UNSPEC_SHA512H): New unspec.
11382 (UNSPEC_SHA512H2): Ditto.
11383 (UNSPEC_SHA512SU0): Ditto.
11384 (UNSPEC_SHA512SU1): Ditto.
11385 * config/aarch64/aarch64-simd-builtins.def
11386 (aarch64_crypto_sha512hqv2di): New builtin.
11387 (aarch64_crypto_sha512h2qv2di): Ditto.
11388 (aarch64_crypto_sha512su0qv2di): Ditto.
11389 (aarch64_crypto_sha512su1qv2di): Ditto.
11390 (aarch64_eor3qv8hi): Ditto.
11391 (aarch64_rax1qv2di): Ditto.
11392 (aarch64_xarqv2di): Ditto.
11393 (aarch64_bcaxqv8hi): Ditto.
11394 * config/aarch64/aarch64-simd.md:
11395 (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
11396 (aarch64_crypto_sha512su0qv2di): Ditto.
11397 (aarch64_crypto_sha512su1qv2di): Ditto.
11398 (aarch64_eor3qv8hi): Ditto.
11399 (aarch64_rax1qv2di): Ditto.
11400 (aarch64_xarqv2di): Ditto.
11401 (aarch64_bcaxqv8hi): Ditto.
11402 * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
11403 (vsha512h2q_u64): Ditto.
11404 (vsha512su0q_u64): Ditto.
11405 (vsha512su1q_u64): Ditto.
11406 (veor3q_u16): Ditto.
11407 (vrax1q_u64): Ditto.
11408 (vxarq_u64): Ditto.
11409 (vbcaxq_u16): Ditto.
11410 * config/arm/types.md (crypto_sha512): New type attribute.
11411 (crypto_sha3): Ditto.
11412 (doc/invoke.texi): Document new sha3 option.
11413
11414 2018-01-10 Michael Collison <michael.collison@arm.com>
11415
11416 * config/aarch64/aarch64-builtins.c:
11417 (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
11418 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11419 (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
11420 (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
11421 * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
11422 (AARCH64_ISA_SM4): New ISA flag.
11423 (TARGET_SM4): New feature flag for sm4.
11424 * config/aarch64/aarch64-simd-builtins.def
11425 (aarch64_sm3ss1qv4si): Ditto.
11426 (aarch64_sm3tt1aq4si): Ditto.
11427 (aarch64_sm3tt1bq4si): Ditto.
11428 (aarch64_sm3tt2aq4si): Ditto.
11429 (aarch64_sm3tt2bq4si): Ditto.
11430 (aarch64_sm3partw1qv4si): Ditto.
11431 (aarch64_sm3partw2qv4si): Ditto.
11432 (aarch64_sm4eqv4si): Ditto.
11433 (aarch64_sm4ekeyqv4si): Ditto.
11434 * config/aarch64/aarch64-simd.md:
11435 (aarch64_sm3ss1qv4si): Ditto.
11436 (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
11437 (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
11438 (aarch64_sm4eqv4si): Ditto.
11439 (aarch64_sm4ekeyqv4si): Ditto.
11440 * config/aarch64/iterators.md (sm3tt_op): New int iterator.
11441 (sm3part_op): Ditto.
11442 (CRYPTO_SM3TT): Ditto.
11443 (CRYPTO_SM3PART): Ditto.
11444 (UNSPEC_SM3SS1): New unspec.
11445 (UNSPEC_SM3TT1A): Ditto.
11446 (UNSPEC_SM3TT1B): Ditto.
11447 (UNSPEC_SM3TT2A): Ditto.
11448 (UNSPEC_SM3TT2B): Ditto.
11449 (UNSPEC_SM3PARTW1): Ditto.
11450 (UNSPEC_SM3PARTW2): Ditto.
11451 (UNSPEC_SM4E): Ditto.
11452 (UNSPEC_SM4EKEY): Ditto.
11453 * config/aarch64/constraints.md (Ui2): New constraint.
11454 * config/aarch64/predicates.md (aarch64_imm2): New predicate.
11455 * config/arm/types.md (crypto_sm3): New type attribute.
11456 (crypto_sm4): Ditto.
11457 * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
11458 (vsm3tt1aq_u32): Ditto.
11459 (vsm3tt1bq_u32): Ditto.
11460 (vsm3tt2aq_u32): Ditto.
11461 (vsm3tt2bq_u32): Ditto.
11462 (vsm3partw1q_u32): Ditto.
11463 (vsm3partw2q_u32): Ditto.
11464 (vsm4eq_u32): Ditto.
11465 (vsm4ekeyq_u32): Ditto.
11466 (doc/invoke.texi): Document new sm4 option.
11467
11468 2018-01-10 Michael Collison <michael.collison@arm.com>
11469
11470 * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
11471 * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
11472 (AARCH64_FL_FOR_ARCH8_4): New.
11473 (AARCH64_FL_V8_4): New flag.
11474 (doc/invoke.texi): Document new armv8.4-a option.
11475
11476 2018-01-10 Michael Collison <michael.collison@arm.com>
11477
11478 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11479 (__ARM_FEATURE_AES): Define if TARGET_AES is true.
11480 (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
11481 * config/aarch64/aarch64-option-extension.def: Add
11482 AARCH64_OPT_EXTENSION of 'sha2'.
11483 (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
11484 (crypto): Disable sha2 and aes if crypto disabled.
11485 (crypto): Enable aes and sha2 if enabled.
11486 (simd): Disable sha2 and aes if simd disabled.
11487 * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
11488 New flags.
11489 (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
11490 (TARGET_SHA2): New feature flag for sha2.
11491 (TARGET_AES): New feature flag for aes.
11492 * config/aarch64/aarch64-simd.md:
11493 (aarch64_crypto_aes<aes_op>v16qi): Make pattern
11494 conditional on TARGET_AES.
11495 (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
11496 (aarch64_crypto_sha1hsi): Make pattern conditional
11497 on TARGET_SHA2.
11498 (aarch64_crypto_sha1hv4si): Ditto.
11499 (aarch64_be_crypto_sha1hv4si): Ditto.
11500 (aarch64_crypto_sha1su1v4si): Ditto.
11501 (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
11502 (aarch64_crypto_sha1su0v4si): Ditto.
11503 (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
11504 (aarch64_crypto_sha256su0v4si): Ditto.
11505 (aarch64_crypto_sha256su1v4si): Ditto.
11506 (doc/invoke.texi): Document new aes and sha2 options.
11507
11508 2018-01-10 Martin Sebor <msebor@redhat.com>
11509
11510 PR tree-optimization/83781
11511 * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
11512 as string arrays.
11513
11514 2018-01-11 Martin Sebor <msebor@gmail.com>
11515 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
11516
11517 PR tree-optimization/83501
11518 PR tree-optimization/81703
11519
11520 * tree-ssa-strlen.c (get_string_cst): Rename...
11521 (get_string_len): ...to this. Handle global constants.
11522 (handle_char_store): Adjust.
11523
11524 2018-01-10 Kito Cheng <kito.cheng@gmail.com>
11525 Jim Wilson <jimw@sifive.com>
11526
11527 * config/riscv/riscv-protos.h (riscv_output_return): New.
11528 * config/riscv/riscv.c (struct machine_function): New naked_p field.
11529 (riscv_attribute_table, riscv_output_return),
11530 (riscv_handle_fndecl_attribute, riscv_naked_function_p),
11531 (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
11532 (riscv_compute_frame_info): Only compute frame->mask if not a naked
11533 function.
11534 (riscv_expand_prologue): Add early return for naked function.
11535 (riscv_expand_epilogue): Likewise.
11536 (riscv_function_ok_for_sibcall): Return false for naked function.
11537 (riscv_set_current_function): New.
11538 (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
11539 (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
11540 * config/riscv/riscv.md (simple_return): Call riscv_output_return.
11541 * doc/extend.texi (RISC-V Function Attributes): New.
11542
11543 2018-01-10 Michael Meissner <meissner@linux.vnet.ibm.com>
11544
11545 * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
11546 check for 128-bit long double before checking TCmode.
11547 * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
11548 128-bit long doubles before checking TFmode or TCmode.
11549 (FLOAT128_IBM_P): Likewise.
11550
11551 2018-01-10 Martin Sebor <msebor@redhat.com>
11552
11553 PR tree-optimization/83671
11554 * builtins.c (c_strlen): Unconditionally return zero for the empty
11555 string.
11556 Use -Warray-bounds for warnings.
11557 * gimple-fold.c (get_range_strlen): Handle non-constant lengths
11558 for non-constant array indices with COMPONENT_REF, arrays of
11559 arrays, and pointers to arrays.
11560 (gimple_fold_builtin_strlen): Determine and set length range for
11561 non-constant character arrays.
11562
11563 2018-01-10 Aldy Hernandez <aldyh@redhat.com>
11564
11565 PR middle-end/81897
11566 * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
11567 empty blocks.
11568
11569 2018-01-10 Eric Botcazou <ebotcazou@adacore.com>
11570
11571 * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
11572
11573 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
11574
11575 PR target/83399
11576 * config/rs6000/rs6000.c (print_operand) <'y'>: Use
11577 VECTOR_MEM_ALTIVEC_OR_VSX_P.
11578 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
11579 indexed_or_indirect_operand predicate.
11580 (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
11581 (*vsx_le_perm_load_v8hi): Likewise.
11582 (*vsx_le_perm_load_v16qi): Likewise.
11583 (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
11584 (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
11585 (*vsx_le_perm_store_v8hi): Likewise.
11586 (*vsx_le_perm_store_v16qi): Likewise.
11587 (eight unnamed splitters): Likewise.
11588
11589 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
11590
11591 * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
11592 * config/rs6000/emmintrin.h: Likewise.
11593 * config/rs6000/mmintrin.h: Likewise.
11594 * config/rs6000/xmmintrin.h: Likewise.
11595
11596 2018-01-10 David Malcolm <dmalcolm@redhat.com>
11597
11598 PR c++/43486
11599 * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
11600 "public_flag".
11601 * tree.c (tree_nop_conversion): Return true for location wrapper
11602 nodes.
11603 (maybe_wrap_with_location): New function.
11604 (selftest::check_strip_nops): New function.
11605 (selftest::test_location_wrappers): New function.
11606 (selftest::tree_c_tests): Call it.
11607 * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
11608 (maybe_wrap_with_location): New decl.
11609 (EXPR_LOCATION_WRAPPER_P): New macro.
11610 (location_wrapper_p): New inline function.
11611 (tree_strip_any_location_wrapper): New inline function.
11612
11613 2018-01-10 H.J. Lu <hongjiu.lu@intel.com>
11614
11615 PR target/83735
11616 * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
11617 stack_realign_offset for the largest alignment of stack slot
11618 actually used.
11619 (ix86_find_max_used_stack_alignment): New function.
11620 (ix86_finalize_stack_frame_flags): Use it. Set
11621 max_used_stack_alignment if we don't realign stack.
11622 * config/i386/i386.h (machine_function): Add
11623 max_used_stack_alignment.
11624
11625 2018-01-10 Christophe Lyon <christophe.lyon@linaro.org>
11626
11627 * config/arm/arm.opt (-mbranch-cost): New option.
11628 * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
11629 account.
11630
11631 2018-01-10 Segher Boessenkool <segher@kernel.crashing.org>
11632
11633 PR target/83629
11634 * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
11635 load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
11636
11637 2018-01-10 Richard Biener <rguenther@suse.de>
11638
11639 PR debug/83765
11640 * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
11641 early out so it also covers the case where we have a non-NULL
11642 origin.
11643
11644 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
11645
11646 PR tree-optimization/83753
11647 * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
11648 for non-strided grouped accesses if the number of elements is 1.
11649
11650 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
11651
11652 PR target/81616
11653 * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
11654 * i386.h (TARGET_USE_GATHER): Define.
11655 * x86-tune.def (X86_TUNE_USE_GATHER): New.
11656
11657 2018-01-10 Martin Liska <mliska@suse.cz>
11658
11659 PR bootstrap/82831
11660 * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
11661 * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
11662 partitioning.
11663 * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
11664 CLEANUP_NO_PARTITIONING is not set.
11665
11666 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
11667
11668 * doc/rtl.texi: Remove documentation of (const ...) wrappers
11669 for vectors, as a partial revert of r254296.
11670 * rtl.h (const_vec_p): Delete.
11671 (const_vec_duplicate_p): Don't test for vector CONSTs.
11672 (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
11673 * expmed.c (make_tree): Likewise.
11674
11675 Revert:
11676 * common.md (E, F): Use CONSTANT_P instead of checking for
11677 CONST_VECTOR.
11678 * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
11679 checking for CONST_VECTOR.
11680
11681 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
11682
11683 PR middle-end/83575
11684 * predict.c (force_edge_cold): Handle in more sane way edges
11685 with no prediction.
11686
11687 2018-01-09 Carl Love <cel@us.ibm.com>
11688
11689 * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
11690 V4SI, V4SF types.
11691 (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
11692 * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
11693 VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
11694 VMRGOW_V2DI, VMRGOW_V2DF. Remove definition for VMRGOW.
11695 * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
11696 P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW): Add definitions.
11697 * config/rs6000/rs6000-protos.h: Add extern defition for
11698 rs6000_generate_float2_double_code.
11699 * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
11700 function.
11701 * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
11702 (float2_v2df): Add define_expand.
11703
11704 2018-01-09 Uros Bizjak <ubizjak@gmail.com>
11705
11706 PR target/83628
11707 * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
11708 op_mode in the force_to_mode call.
11709
11710 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
11711
11712 * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
11713 instead of checking each element individually.
11714 (aarch64_evpc_uzp): Likewise.
11715 (aarch64_evpc_zip): Likewise.
11716 (aarch64_evpc_ext): Likewise.
11717 (aarch64_evpc_rev): Likewise.
11718 (aarch64_evpc_dup): Test the encoding for a single duplicated element,
11719 instead of checking each element individually. Return true without
11720 generating rtl if
11721 (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
11722 whether all selected elements come from the same input, instead of
11723 checking each element individually. Remove calls to gen_rtx_REG,
11724 start_sequence and end_sequence and instead assert that no rtl is
11725 generated.
11726
11727 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
11728
11729 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
11730 order of HIGH and CONST checks.
11731
11732 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
11733
11734 * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
11735 if the destination isn't an SSA_NAME.
11736
11737 2018-01-09 Richard Biener <rguenther@suse.de>
11738
11739 PR tree-optimization/83668
11740 * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
11741 move prologue...
11742 (canonicalize_loop_form): ... here, renamed from ...
11743 (canonicalize_loop_closed_ssa_form): ... this and amended to
11744 swap successor edges for loop exit blocks to make us use
11745 the RPO order we need for initial schedule generation.
11746
11747 2018-01-09 Joseph Myers <joseph@codesourcery.com>
11748
11749 PR tree-optimization/64811
11750 * match.pd: When optimizing comparisons with Inf, avoid
11751 introducing or losing exceptions from comparisons with NaN.
11752
11753 2018-01-09 Martin Liska <mliska@suse.cz>
11754
11755 PR sanitizer/82517
11756 * asan.c (shadow_mem_size): Add gcc_assert.
11757
11758 2018-01-09 Georg-Johann Lay <avr@gjlay.de>
11759
11760 Don't save registers in main().
11761
11762 PR target/83738
11763 * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
11764 * config/avr/avr.opt (-mmain-is-OS_task): New target option.
11765 * config/avr/avr.c (avr_set_current_function): Don't error if
11766 naked, OS_task or OS_main are specified at the same time.
11767 (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
11768 OS_main.
11769 (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
11770 attribute.
11771 * common/config/avr/avr-common.c (avr_option_optimization_table):
11772 Switch on -mmain-is-OS_task for optimizing compilations.
11773
11774 2018-01-09 Richard Biener <rguenther@suse.de>
11775
11776 PR tree-optimization/83572
11777 * graphite.c: Include cfganal.h.
11778 (graphite_transform_loops): Connect infinite loops to exit
11779 and remove fake edges at the end.
11780
11781 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
11782
11783 * ipa-inline.c (edge_badness): Revert accidental checkin.
11784
11785 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
11786
11787 PR ipa/80763
11788 * ipa-comdats.c (set_comdat_group): Only set comdat group of real
11789 symbols; not inline clones.
11790
11791 2018-01-09 Jakub Jelinek <jakub@redhat.com>
11792
11793 PR target/83507
11794 * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
11795 hard registers. Formatting fixes.
11796
11797 PR preprocessor/83722
11798 * gcc.c (try_generate_repro): Pass
11799 &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
11800 &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
11801 do_report_bug.
11802
11803 2018-01-08 Monk Chiang <sh.chiang04@gmail.com>
11804 Kito Cheng <kito.cheng@gmail.com>
11805
11806 * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
11807 (riscv_leaf_function_p): Delete.
11808 (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
11809
11810 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
11811
11812 * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
11813 function.
11814 (do_ifelse): New function.
11815 (do_isel): New function.
11816 (do_sub3): New function.
11817 (do_add3): New function.
11818 (do_load_mask_compare): New function.
11819 (do_overlap_load_compare): New function.
11820 (expand_compare_loop): New function.
11821 (expand_block_compare): Call expand_compare_loop() when appropriate.
11822 * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
11823 option description.
11824 (-mblock-compare-inline-loop-limit): New option.
11825
11826 2018-01-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
11827
11828 PR target/83677
11829 * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
11830 Reverse order of second and third operands in first alternative.
11831 * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
11832 of first and second elements in UNSPEC_VPERMR vector.
11833 (altivec_expand_vec_perm_le): Likewise.
11834
11835 2018-01-08 Jeff Law <law@redhat.com>
11836
11837 PR rtl-optimizatin/81308
11838 * tree-switch-conversion.c (cfg_altered): New file scoped static.
11839 (process_switch): If group_case_labels makes a change, then set
11840 cfg_altered.
11841 (pass_convert_switch::execute): If a switch is converted, then
11842 set cfg_altered. Return TODO_cfg_cleanup if cfg_altered is true.
11843
11844 PR rtl-optimization/81308
11845 * recog.c (split_all_insns): Conditionally cleanup the CFG after
11846 splitting insns.
11847
11848 2018-01-08 Vidya Praveen <vidyapraveen@arm.com>
11849
11850 PR target/83663 - Revert r255946
11851 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
11852 generation for cases where splatting a value is not useful.
11853 * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
11854 across a vec_duplicate and a paradoxical subreg forming a vector
11855 mode to a vec_concat.
11856
11857 2018-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11858
11859 * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
11860 -march=armv8.3-a variants.
11861 * config/arm/t-multilib: Likewise.
11862 * config/arm/t-arm-elf: Likewise. Handle dotprod extension.
11863
11864 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
11865
11866 * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
11867 to generate rtl.
11868 (cceq_ior_compare_complement): Give it a name so I can use it, and
11869 change boolean_or_operator predicate to boolean_operator so it can
11870 be used to generate a crand.
11871 (eqne): New code iterator.
11872 (bd/bd_neg): New code_attrs.
11873 (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
11874 a single define_insn.
11875 (<bd>tf_<mode>): A new insn pattern for the conditional form branch
11876 decrement (bdnzt/bdnzf/bdzt/bdzf).
11877 * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
11878 with the new names of the branch decrement patterns, and added the
11879 names of the branch decrement conditional patterns.
11880
11881 2018-01-08 Richard Biener <rguenther@suse.de>
11882
11883 PR tree-optimization/83563
11884 * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
11885 cache.
11886
11887 2018-01-08 Richard Biener <rguenther@suse.de>
11888
11889 PR middle-end/83713
11890 * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
11891
11892 2018-01-08 Richard Biener <rguenther@suse.de>
11893
11894 PR tree-optimization/83685
11895 * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
11896 references to abnormals.
11897
11898 2018-01-08 Richard Biener <rguenther@suse.de>
11899
11900 PR lto/83719
11901 * dwarf2out.c (output_indirect_strings): Handle empty
11902 skeleton_debug_str_hash.
11903 (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
11904
11905 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
11906
11907 * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
11908 (emit_store_direct): Likewise.
11909 (arc_trampoline_adjust_address): Likewise.
11910 (arc_asm_trampoline_template): New function.
11911 (arc_initialize_trampoline): Use asm_trampoline_template.
11912 (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
11913 * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
11914 * config/arc/arc.md (flush_icache): Delete pattern.
11915
11916 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
11917
11918 * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
11919 * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
11920 munaligned-access.
11921
11922 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
11923
11924 PR target/83681
11925 * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
11926 by not USED_FOR_TARGET.
11927 (make_pass_resolve_sw_modes): Likewise.
11928
11929 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
11930
11931 * config/nios2/nios2.h (nios2_section_threshold): Guard by not
11932 USED_FOR_TARGET.
11933
11934 2018-01-08 Richard Biener <rguenther@suse.de>
11935
11936 PR middle-end/83580
11937 * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
11938
11939 2018-01-08 Richard Biener <rguenther@suse.de>
11940
11941 PR middle-end/83517
11942 * match.pd ((t * 2) / 2) -> t): Add missing :c.
11943
11944 2018-01-06 Aldy Hernandez <aldyh@redhat.com>
11945
11946 PR middle-end/81897
11947 * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
11948 basic blocks with a small number of successors.
11949 (convert_control_dep_chain_into_preds): Improve handling of
11950 forwarder blocks.
11951 (dump_predicates): Split apart into...
11952 (dump_pred_chain): ...here...
11953 (dump_pred_info): ...and here.
11954 (can_one_predicate_be_invalidated_p): Add debugging printfs.
11955 (can_chain_union_be_invalidated_p): Improve check for invalidation
11956 of paths.
11957 (uninit_uses_cannot_happen): Avoid unnecessary if
11958 convert_control_dep_chain_into_preds yielded nothing.
11959
11960 2018-01-06 Martin Sebor <msebor@redhat.com>
11961
11962 PR tree-optimization/83640
11963 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
11964 subtracting negative offset from size.
11965 (builtin_access::overlap): Adjust offset bounds of the access to fall
11966 within the size of the object if possible.
11967
11968 2018-01-06 Richard Sandiford <richard.sandiford@linaro.org>
11969
11970 PR rtl-optimization/83699
11971 * expmed.c (extract_bit_field_1): Restrict the vector usage of
11972 extract_bit_field_as_subreg to cases in which the extracted
11973 value is also a vector.
11974
11975 * lra-constraints.c (process_alt_operands): Test for the equivalence
11976 substitutions when detecting a possible reload cycle.
11977
11978 2018-01-06 Jakub Jelinek <jakub@redhat.com>
11979
11980 PR debug/83480
11981 * toplev.c (process_options): Don't enable debug_nonbind_markers_p
11982 by default if flag_selective_schedling{,2}. Formatting fixes.
11983
11984 PR rtl-optimization/83682
11985 * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
11986 if it has non-VECTOR_MODE element mode.
11987 (vec_duplicate_p): Likewise.
11988
11989 PR middle-end/83694
11990 * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
11991 and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
11992
11993 2018-01-05 Jakub Jelinek <jakub@redhat.com>
11994
11995 PR target/83604
11996 * config/i386/i386-builtin.def
11997 (__builtin_ia32_vgf2p8affineinvqb_v64qi,
11998 __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
11999 Require also OPTION_MASK_ISA_AVX512F in addition to
12000 OPTION_MASK_ISA_GFNI.
12001 (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
12002 __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
12003 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
12004 to OPTION_MASK_ISA_GFNI.
12005 (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
12006 OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
12007 OPTION_MASK_ISA_AVX512BW.
12008 (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
12009 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
12010 addition to OPTION_MASK_ISA_GFNI.
12011 (__builtin_ia32_vgf2p8affineinvqb_v16qi,
12012 __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
12013 Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
12014 to OPTION_MASK_ISA_GFNI.
12015 * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
12016 a requirement for all ISAs rather than any of them with a few
12017 exceptions.
12018 (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
12019 processing.
12020 (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
12021 bitmasks to be enabled with 3 exceptions, instead of requiring any
12022 enabled ISA with lots of exceptions.
12023 * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
12024 vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
12025 Change avx512bw in isa attribute to avx512f.
12026 * config/i386/sgxintrin.h: Add license boilerplate.
12027 * config/i386/vaesintrin.h: Likewise. Fix macro spelling __AVX512F
12028 to __AVX512F__ and __AVX512VL to __AVX512VL__.
12029 (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
12030 _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
12031 defined.
12032 * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
12033 _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
12034 temporarily sse2 rather than sse if not enabled already.
12035
12036 PR target/83604
12037 * config/i386/sse.md (VI248_VLBW): Rename to ...
12038 (VI248_AVX512VL): ... this. Don't guard V32HI with TARGET_AVX512BW.
12039 (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
12040 vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
12041 vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
12042 vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
12043 mode iterator instead of VI248_VLBW.
12044
12045 2018-01-05 Jan Hubicka <hubicka@ucw.cz>
12046
12047 * ipa-fnsummary.c (record_modified_bb_info): Add OP.
12048 (record_modified): Skip clobbers; add debug output.
12049 (param_change_prob): Use sreal frequencies.
12050
12051 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
12052
12053 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
12054 punt for user-aligned variables.
12055
12056 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
12057
12058 * tree-chrec.c (chrec_contains_symbols): Return true for
12059 POLY_INT_CST.
12060
12061 2018-01-05 Sudakshina Das <sudi.das@arm.com>
12062
12063 PR target/82439
12064 * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
12065 of (x|y) == x for BICS pattern.
12066
12067 2018-01-05 Jakub Jelinek <jakub@redhat.com>
12068
12069 PR tree-optimization/83605
12070 * gimple-ssa-strength-reduction.c: Include tree-eh.h.
12071 (find_candidates_dom_walker::before_dom_children): Ignore stmts that
12072 can throw.
12073
12074 2018-01-05 Sebastian Huber <sebastian.huber@embedded-brains.de>
12075
12076 * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
12077 * config/epiphany/rtems.h: New file.
12078
12079 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12080 Uros Bizjak <ubizjak@gmail.com>
12081
12082 PR target/83554
12083 * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
12084 QIreg_operand instead of register_operand predicate.
12085 * config/i386/i386.c (ix86_rop_should_change_byte_p,
12086 set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
12087 comments instead of -fmitigate[-_]rop.
12088
12089 2018-01-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
12090
12091 PR bootstrap/81926
12092 * cgraphunit.c (symbol_table::compile): Switch to text_section
12093 before calling assembly_start debug hook.
12094 * run-rtl-passes.c (run_rtl_passes): Likewise.
12095 Include output.h.
12096
12097 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12098
12099 * tree-vrp.c (extract_range_from_binary_expr_1): Check
12100 range_int_cst_p rather than !symbolic_range_p before calling
12101 extract_range_from_multiplicative_op_1.
12102
12103 2018-01-04 Jeff Law <law@redhat.com>
12104
12105 * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
12106 redundant test in assertion.
12107
12108 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12109
12110 * doc/rtl.texi: Document machine_mode wrapper classes.
12111
12112 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12113
12114 * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
12115 using tree_to_uhwi.
12116
12117 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12118
12119 * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
12120 the VEC_PERM_EXPR fold to fail.
12121
12122 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12123
12124 PR debug/83585
12125 * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
12126 to switched_sections.
12127
12128 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12129
12130 PR target/83680
12131 * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
12132 test for d.testing.
12133
12134 2018-01-04 Peter Bergner <bergner@vnet.ibm.com>
12135
12136 PR target/83387
12137 * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
12138 allow arguments in FP registers if TARGET_HARD_FLOAT is false.
12139
12140 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12141
12142 PR debug/83666
12143 * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
12144 is BLKmode and bitpos not zero or mode change is needed.
12145
12146 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12147
12148 PR target/83675
12149 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
12150 TARGET_VIS2.
12151
12152 2018-01-04 Uros Bizjak <ubizjak@gmail.com>
12153
12154 PR target/83628
12155 * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
12156 instead of MULT rtx. Update all corresponding splitters.
12157 (*saddl_se): Ditto.
12158 (*ssub<modesuffix>): Ditto.
12159 (*ssubl_se): Ditto.
12160 (*cmp_sadd_di): Update split patterns.
12161 (*cmp_sadd_si): Ditto.
12162 (*cmp_sadd_sidi): Ditto.
12163 (*cmp_ssub_di): Ditto.
12164 (*cmp_ssub_si): Ditto.
12165 (*cmp_ssub_sidi): Ditto.
12166 * config/alpha/predicates.md (const23_operand): New predicate.
12167 * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
12168 Look for ASHIFT, not MULT inner operand.
12169 (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
12170
12171 2018-01-04 Martin Liska <mliska@suse.cz>
12172
12173 PR gcov-profile/83669
12174 * gcov.c (output_intermediate_file): Add version to intermediate
12175 gcov file.
12176 * doc/gcov.texi: Document new field 'version' in intermediate
12177 file format. Fix location of '-k' option of gcov command.
12178
12179 2018-01-04 Martin Liska <mliska@suse.cz>
12180
12181 PR ipa/82352
12182 * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
12183
12184 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12185
12186 * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
12187
12188 2018-01-03 Martin Sebor <msebor@redhat.com>
12189
12190 PR tree-optimization/83655
12191 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
12192 checking calls with invalid arguments.
12193
12194 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12195
12196 * tree-vect-stmts.c (vect_get_store_rhs): New function.
12197 (vectorizable_mask_load_store): Delete.
12198 (vectorizable_call): Return false for masked loads and stores.
12199 (vectorizable_store): Handle IFN_MASK_STORE. Use vect_get_store_rhs
12200 instead of gimple_assign_rhs1.
12201 (vectorizable_load): Handle IFN_MASK_LOAD.
12202 (vect_transform_stmt): Don't set is_store for call_vec_info_type.
12203
12204 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12205
12206 * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
12207 split out from..,
12208 (vectorizable_mask_load_store): ...here.
12209 (vectorizable_load): ...and here.
12210
12211 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12212
12213 * tree-vect-stmts.c (vect_build_all_ones_mask)
12214 (vect_build_zero_merge_argument): New functions, split out from...
12215 (vectorizable_load): ...here.
12216
12217 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12218
12219 * tree-vect-stmts.c (vect_check_store_rhs): New function,
12220 split out from...
12221 (vectorizable_mask_load_store): ...here.
12222 (vectorizable_store): ...and here.
12223
12224 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12225
12226 * tree-vect-stmts.c (vect_check_load_store_mask): New function,
12227 split out from...
12228 (vectorizable_mask_load_store): ...here.
12229
12230 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12231
12232 * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
12233 (vect_model_store_cost): Take a vec_load_store_type instead of a
12234 vect_def_type.
12235 * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
12236 (vect_model_store_cost): Take a vec_load_store_type instead of a
12237 vect_def_type.
12238 (vectorizable_mask_load_store): Update accordingly.
12239 (vectorizable_store): Likewise.
12240 * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
12241
12242 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12243
12244 * tree-vect-loop.c (vect_transform_loop): Stub out scalar
12245 IFN_MASK_LOAD calls here rather than...
12246 * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
12247
12248 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12249 Alan Hayward <alan.hayward@arm.com>
12250 David Sherwood <david.sherwood@arm.com>
12251
12252 * expmed.c (extract_bit_field_1): For vector extracts,
12253 fall back to extract_bit_field_as_subreg if vec_extract
12254 isn't available.
12255
12256 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12257 Alan Hayward <alan.hayward@arm.com>
12258 David Sherwood <david.sherwood@arm.com>
12259
12260 * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
12261 they are variable or constant sized.
12262 (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
12263 slots for constant-sized data.
12264
12265 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12266 Alan Hayward <alan.hayward@arm.com>
12267 David Sherwood <david.sherwood@arm.com>
12268
12269 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
12270 handling COND_EXPRs with boolean comparisons, try to find a better
12271 basis for the mask type than the boolean itself.
12272
12273 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12274
12275 * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
12276 is calculated and how it can be overridden.
12277 * genmodes.c (max_bitsize_mode_any_mode): New variable.
12278 (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
12279 if defined.
12280 (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
12281 if nonzero.
12282
12283 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12284 Alan Hayward <alan.hayward@arm.com>
12285 David Sherwood <david.sherwood@arm.com>
12286
12287 * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
12288 Remove the mode argument.
12289 (aarch64_simd_valid_immediate): Remove the mode and inverse
12290 arguments.
12291 * config/aarch64/iterators.md (bitsize): New iterator.
12292 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
12293 (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
12294 * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
12295 aarch64_simd_valid_immediate.
12296 * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
12297 (aarch64_reg_or_bic_imm): Likewise.
12298 * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
12299 with an insn_type enum and msl with a modifier_type enum.
12300 Replace element_width with a scalar_mode. Change the shift
12301 to unsigned int. Add constructors for scalar_float_mode and
12302 scalar_int_mode elements.
12303 (aarch64_vect_float_const_representable_p): Delete.
12304 (aarch64_can_const_movi_rtx_p)
12305 (aarch64_simd_scalar_immediate_valid_for_move)
12306 (aarch64_simd_make_constant): Update call to
12307 aarch64_simd_valid_immediate.
12308 (aarch64_advsimd_valid_immediate_hs): New function.
12309 (aarch64_advsimd_valid_immediate): Likewise.
12310 (aarch64_simd_valid_immediate): Remove mode and inverse
12311 arguments. Rewrite to use the above. Use const_vec_duplicate_p
12312 to detect duplicated constants and use aarch64_float_const_zero_rtx_p
12313 and aarch64_float_const_representable_p on the result.
12314 (aarch64_output_simd_mov_immediate): Remove mode argument.
12315 Update call to aarch64_simd_valid_immediate and use of
12316 simd_immediate_info.
12317 (aarch64_output_scalar_simd_mov_immediate): Update call
12318 accordingly.
12319
12320 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12321 Alan Hayward <alan.hayward@arm.com>
12322 David Sherwood <david.sherwood@arm.com>
12323
12324 * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
12325 (mode_nunits): Likewise CONST_MODE_NUNITS.
12326 * machmode.def (ADJUST_NUNITS): Document.
12327 * genmodes.c (mode_data::need_nunits_adj): New field.
12328 (blank_mode): Update accordingly.
12329 (adj_nunits): New variable.
12330 (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
12331 parameter.
12332 (emit_mode_size_inline): Set need_bytesize_adj for all modes
12333 listed in adj_nunits.
12334 (emit_mode_nunits_inline): Set need_nunits_adj for all modes
12335 listed in adj_nunits. Don't emit case statements for such modes.
12336 (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
12337 and CONST_MODE_PRECISION. Make CONST_MODE_SIZE expand to
12338 nothing if adj_nunits is nonnull.
12339 (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
12340 (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
12341 (emit_mode_fbit): Update use of print_maybe_const_decl.
12342 (emit_move_size): Likewise. Treat the array as non-const
12343 if adj_nunits.
12344 (emit_mode_adjustments): Handle adj_nunits.
12345
12346 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12347
12348 * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
12349 * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
12350 (VECTOR_MODES): Use it.
12351 (make_vector_modes): Take the prefix as an argument.
12352
12353 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12354 Alan Hayward <alan.hayward@arm.com>
12355 David Sherwood <david.sherwood@arm.com>
12356
12357 * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
12358 * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
12359 for MODE_VECTOR_BOOL.
12360 * machmode.def (VECTOR_BOOL_MODE): Document.
12361 * genmodes.c (VECTOR_BOOL_MODE): New macro.
12362 (make_vector_bool_mode): New function.
12363 (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
12364 MODE_VECTOR_BOOL.
12365 * lto-streamer-in.c (lto_input_mode_table): Likewise.
12366 * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
12367 Likewise.
12368 * stor-layout.c (int_mode_for_mode): Likewise.
12369 * tree.c (build_vector_type_for_mode): Likewise.
12370 * varasm.c (output_constant_pool_2): Likewise.
12371 * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
12372 CONSTM1_RTX (BImode) are the same thing. Initialize const_tiny_rtx
12373 for MODE_VECTOR_BOOL.
12374 * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
12375 of mode class checks.
12376 * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
12377 instead of a list of mode class checks.
12378 (expand_vector_scalar_condition): Likewise.
12379 (type_for_widest_vector_mode): Handle BImode as an inner mode.
12380
12381 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12382 Alan Hayward <alan.hayward@arm.com>
12383 David Sherwood <david.sherwood@arm.com>
12384
12385 * machmode.h (mode_size): Change from unsigned short to
12386 poly_uint16_pod.
12387 (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
12388 (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
12389 or if measurement_type is not polynomial.
12390 (fixed_size_mode::includes_p): Check for constant-sized modes.
12391 * genmodes.c (emit_mode_size_inline): Make mode_size_inline
12392 return a poly_uint16 rather than an unsigned short.
12393 (emit_mode_size): Change the type of mode_size from unsigned short
12394 to poly_uint16_pod. Use ZERO_COEFFS for the initializer.
12395 (emit_mode_adjustments): Cope with polynomial vector sizes.
12396 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12397 for GET_MODE_SIZE.
12398 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12399 for GET_MODE_SIZE.
12400 * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
12401 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
12402 * caller-save.c (setup_save_areas): Likewise.
12403 (replace_reg_with_saved_mem): Likewise.
12404 * calls.c (emit_library_call_value_1): Likewise.
12405 * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
12406 * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
12407 (gen_lowpart_for_combine): Likewise.
12408 * convert.c (convert_to_integer_1): Likewise.
12409 * cse.c (equiv_constant, cse_insn): Likewise.
12410 * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
12411 (cselib_subst_to_values): Likewise.
12412 * dce.c (word_dce_process_block): Likewise.
12413 * df-problems.c (df_word_lr_mark_ref): Likewise.
12414 * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
12415 * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
12416 (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
12417 (rtl_for_decl_location): Likewise.
12418 * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
12419 * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
12420 * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
12421 (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
12422 (expand_expr_real_1): Likewise.
12423 * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
12424 (pad_below): Likewise.
12425 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
12426 * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
12427 * ira.c (get_subreg_tracking_sizes): Likewise.
12428 * ira-build.c (ira_create_allocno_objects): Likewise.
12429 * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
12430 (ira_sort_regnos_for_alter_reg): Likewise.
12431 * ira-costs.c (record_operand_costs): Likewise.
12432 * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
12433 (resolve_simple_move): Likewise.
12434 * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
12435 (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
12436 (lra_constraints): Likewise.
12437 (CONST_POOL_OK_P): Reject variable-sized modes.
12438 * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
12439 (add_pseudo_to_slot, lra_spill): Likewise.
12440 * omp-low.c (omp_clause_aligned_alignment): Likewise.
12441 * optabs-query.c (get_best_extraction_insn): Likewise.
12442 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
12443 * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
12444 (expand_mult_highpart, valid_multiword_target_p): Likewise.
12445 * recog.c (offsettable_address_addr_space_p): Likewise.
12446 * regcprop.c (maybe_mode_change): Likewise.
12447 * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
12448 * regrename.c (build_def_use): Likewise.
12449 * regstat.c (dump_reg_info): Likewise.
12450 * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
12451 (find_reloads, find_reloads_subreg_address): Likewise.
12452 * reload1.c (eliminate_regs_1): Likewise.
12453 * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
12454 * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
12455 (simplify_binary_operation_1, simplify_subreg): Likewise.
12456 * targhooks.c (default_function_arg_padding): Likewise.
12457 (default_hard_regno_nregs, default_class_max_nregs): Likewise.
12458 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
12459 (verify_gimple_assign_ternary): Likewise.
12460 * tree-inline.c (estimate_move_cost): Likewise.
12461 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12462 * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
12463 (get_address_cost_ainc): Likewise.
12464 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
12465 (vect_supportable_dr_alignment): Likewise.
12466 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
12467 (vectorizable_reduction): Likewise.
12468 * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
12469 (vectorizable_operation, vectorizable_load): Likewise.
12470 * tree.c (build_same_sized_truth_vector_type): Likewise.
12471 * valtrack.c (cleanup_auto_inc_dec): Likewise.
12472 * var-tracking.c (emit_note_insn_var_location): Likewise.
12473 * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
12474 (ADDR_VEC_ALIGN): Likewise.
12475
12476 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12477 Alan Hayward <alan.hayward@arm.com>
12478 David Sherwood <david.sherwood@arm.com>
12479
12480 * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
12481 unsigned short.
12482 (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
12483 or if measurement_type is polynomial.
12484 * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
12485 * combine.c (make_extraction): Likewise.
12486 * dse.c (find_shift_sequence): Likewise.
12487 * dwarf2out.c (mem_loc_descriptor): Likewise.
12488 * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
12489 (extract_bit_field, extract_low_bits): Likewise.
12490 * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
12491 (optimize_bitfield_assignment_op, expand_assignment): Likewise.
12492 (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
12493 * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
12494 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
12495 * reload.c (find_reloads): Likewise.
12496 * reload1.c (alter_reg): Likewise.
12497 * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
12498 * targhooks.c (default_secondary_memory_needed_mode): Likewise.
12499 * tree-if-conv.c (predicate_mem_writes): Likewise.
12500 * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
12501 * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
12502 * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
12503 * valtrack.c (dead_debug_insert_temp): Likewise.
12504 * varasm.c (mergeable_constant_section): Likewise.
12505 * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
12506
12507 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12508 Alan Hayward <alan.hayward@arm.com>
12509 David Sherwood <david.sherwood@arm.com>
12510
12511 * expr.c (expand_assignment): Cope with polynomial mode sizes
12512 when assigning to a CONCAT.
12513
12514 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12515 Alan Hayward <alan.hayward@arm.com>
12516 David Sherwood <david.sherwood@arm.com>
12517
12518 * machmode.h (mode_precision): Change from unsigned short to
12519 poly_uint16_pod.
12520 (mode_to_precision): Return a poly_uint16 rather than an unsigned
12521 short.
12522 (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
12523 or if measurement_type is not polynomial.
12524 (HWI_COMPUTABLE_MODE_P): Turn into a function. Optimize the case
12525 in which the mode is already known to be a scalar_int_mode.
12526 * genmodes.c (emit_mode_precision): Change the type of mode_precision
12527 from unsigned short to poly_uint16_pod. Use ZERO_COEFFS for the
12528 initializer.
12529 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12530 for GET_MODE_PRECISION.
12531 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12532 for GET_MODE_PRECISION.
12533 * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
12534 as polynomial.
12535 (try_combine, find_split_point, combine_simplify_rtx): Likewise.
12536 (expand_field_assignment, make_extraction): Likewise.
12537 (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
12538 (get_last_value): Likewise.
12539 * convert.c (convert_to_integer_1): Likewise.
12540 * cse.c (cse_insn): Likewise.
12541 * expr.c (expand_expr_real_1): Likewise.
12542 * lra-constraints.c (simplify_operand_subreg): Likewise.
12543 * optabs-query.c (can_atomic_load_p): Likewise.
12544 * optabs.c (expand_atomic_load): Likewise.
12545 (expand_atomic_store): Likewise.
12546 * ree.c (combine_reaching_defs): Likewise.
12547 * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
12548 * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
12549 * tree.h (type_has_mode_precision_p): Likewise.
12550 * ubsan.c (instrument_si_overflow): Likewise.
12551
12552 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12553 Alan Hayward <alan.hayward@arm.com>
12554 David Sherwood <david.sherwood@arm.com>
12555
12556 * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
12557 polynomial numbers of units.
12558 (SET_TYPE_VECTOR_SUBPARTS): Likewise.
12559 (valid_vector_subparts_p): New function.
12560 (build_vector_type): Remove temporary shim and take the number
12561 of units as a poly_uint64 rather than an int.
12562 (build_opaque_vector_type): Take the number of units as a
12563 poly_uint64 rather than an int.
12564 * tree.c (build_vector_from_ctor): Handle polynomial
12565 TYPE_VECTOR_SUBPARTS.
12566 (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
12567 (uniform_vector_p, vector_type_mode, build_vector): Likewise.
12568 (build_vector_from_val): If the number of units is variable,
12569 use build_vec_duplicate_cst for constant operands and
12570 VEC_DUPLICATE_EXPR otherwise.
12571 (make_vector_type): Remove temporary is_constant ().
12572 (build_vector_type, build_opaque_vector_type): Take the number of
12573 units as a poly_uint64 rather than an int.
12574 (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
12575 VECTOR_CST_NELTS.
12576 * cfgexpand.c (expand_debug_expr): Likewise.
12577 * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
12578 (store_constructor, expand_expr_real_1): Likewise.
12579 (const_scalar_mask_from_tree): Likewise.
12580 * fold-const-call.c (fold_const_reduction): Likewise.
12581 * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
12582 (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
12583 (native_encode_vector, vec_cst_ctor_to_array): Likewise.
12584 (fold_relational_const): Likewise.
12585 (native_interpret_vector): Likewise. Change the size from an
12586 int to an unsigned int.
12587 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
12588 TYPE_VECTOR_SUBPARTS.
12589 (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
12590 (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
12591 duplicating a non-constant operand into a variable-length vector.
12592 * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
12593 TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
12594 * ipa-icf.c (sem_variable::equals): Likewise.
12595 * match.pd: Likewise.
12596 * omp-simd-clone.c (simd_clone_subparts): Likewise.
12597 * print-tree.c (print_node): Likewise.
12598 * stor-layout.c (layout_type): Likewise.
12599 * targhooks.c (default_builtin_vectorization_cost): Likewise.
12600 * tree-cfg.c (verify_gimple_comparison): Likewise.
12601 (verify_gimple_assign_binary): Likewise.
12602 (verify_gimple_assign_ternary): Likewise.
12603 (verify_gimple_assign_single): Likewise.
12604 * tree-pretty-print.c (dump_generic_node): Likewise.
12605 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12606 (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
12607 * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
12608 (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
12609 (vect_shift_permute_load_chain): Likewise.
12610 * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
12611 (expand_vector_condition, optimize_vector_constructor): Likewise.
12612 (lower_vec_perm, get_compute_type): Likewise.
12613 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
12614 (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
12615 * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
12616 (vect_recog_mask_conversion_pattern): Likewise.
12617 * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
12618 (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
12619 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
12620 (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
12621 (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
12622 (vectorizable_shift, vectorizable_operation, vectorizable_store)
12623 (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
12624 (supportable_widening_operation): Likewise.
12625 (supportable_narrowing_operation): Likewise.
12626 * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
12627 Likewise.
12628 * varasm.c (output_constant): Likewise.
12629
12630 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12631 Alan Hayward <alan.hayward@arm.com>
12632 David Sherwood <david.sherwood@arm.com>
12633
12634 * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
12635 so that both the length == 3 and length != 3 cases set up their
12636 own permute vectors. Add comments explaining why we know the
12637 number of elements is constant.
12638 (vect_permute_load_chain): Likewise.
12639
12640 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12641 Alan Hayward <alan.hayward@arm.com>
12642 David Sherwood <david.sherwood@arm.com>
12643
12644 * machmode.h (mode_nunits): Change from unsigned char to
12645 poly_uint16_pod.
12646 (ONLY_FIXED_SIZE_MODES): New macro.
12647 (pod_mode::measurement_type, scalar_int_mode::measurement_type)
12648 (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
12649 (complex_mode::measurement_type, fixed_size_mode::measurement_type):
12650 New typedefs.
12651 (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
12652 (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
12653 or if measurement_type is not polynomial.
12654 * genmodes.c (ZERO_COEFFS): New macro.
12655 (emit_mode_nunits_inline): Make mode_nunits_inline return a
12656 poly_uint16.
12657 (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
12658 Use ZERO_COEFFS when emitting initializers.
12659 * data-streamer.h (bp_pack_poly_value): New function.
12660 (bp_unpack_poly_value): Likewise.
12661 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12662 for GET_MODE_NUNITS.
12663 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12664 for GET_MODE_NUNITS.
12665 * tree.c (make_vector_type): Remove temporary shim and make
12666 the real function take the number of units as a poly_uint64
12667 rather than an int.
12668 (build_vector_type_for_mode): Handle polynomial nunits.
12669 * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
12670 * emit-rtl.c (const_vec_series_p_1): Likewise.
12671 (gen_rtx_CONST_VECTOR): Likewise.
12672 * fold-const.c (test_vec_duplicate_folding): Likewise.
12673 * genrecog.c (validate_pattern): Likewise.
12674 * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
12675 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
12676 * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
12677 (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
12678 (expand_vec_cond_expr, expand_mult_highpart): Likewise.
12679 * rtlanal.c (subreg_get_info): Likewise.
12680 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
12681 (vect_grouped_load_supported): Likewise.
12682 * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
12683 * tree-vect-loop.c (have_whole_vector_shift): Likewise.
12684 * simplify-rtx.c (simplify_unary_operation_1): Likewise.
12685 (simplify_const_unary_operation, simplify_binary_operation_1)
12686 (simplify_const_binary_operation, simplify_ternary_operation)
12687 (test_vector_ops_duplicate, test_vector_ops): Likewise.
12688 (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
12689 instead of CONST_VECTOR_NUNITS.
12690 * varasm.c (output_constant_pool_2): Likewise.
12691 * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
12692 explicit-encoded elements in the XVEC for variable-length vectors.
12693
12694 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12695
12696 * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
12697
12698 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12699 Alan Hayward <alan.hayward@arm.com>
12700 David Sherwood <david.sherwood@arm.com>
12701
12702 * coretypes.h (fixed_size_mode): Declare.
12703 (fixed_size_mode_pod): New typedef.
12704 * builtins.h (target_builtins::x_apply_args_mode)
12705 (target_builtins::x_apply_result_mode): Change type to
12706 fixed_size_mode_pod.
12707 * builtins.c (apply_args_size, apply_result_size, result_vector)
12708 (expand_builtin_apply_args_1, expand_builtin_apply)
12709 (expand_builtin_return): Update accordingly.
12710
12711 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12712
12713 * cse.c (hash_rtx_cb): Hash only the encoded elements.
12714 * cselib.c (cselib_hash_rtx): Likewise.
12715 * expmed.c (make_tree): Build VECTOR_CSTs directly from the
12716 CONST_VECTOR encoding.
12717
12718 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12719 Jeff Law <law@redhat.com>
12720
12721 PR target/83641
12722 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
12723 noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
12724 only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
12725 and add REG_CFA_ADJUST_CFA notes in that case to both insns.
12726
12727 PR target/83641
12728 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
12729 explicitly probe *sp in a noreturn function if there were any callee
12730 register saves or frame pointer is needed.
12731
12732 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12733
12734 PR debug/83621
12735 * cfgexpand.c (expand_debug_expr): Return NULL if mode is
12736 BLKmode for ternary, binary or unary expressions.
12737
12738 PR debug/83645
12739 * var-tracking.c (delete_vta_debug_insn): New inline function.
12740 (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
12741 insns from get_insns () to NULL instead of each bb separately.
12742 Use delete_vta_debug_insn. No longer static.
12743 (vt_debug_insns_local, variable_tracking_main_1): Adjust
12744 delete_vta_debug_insns callers.
12745 * rtl.h (delete_vta_debug_insns): Declare.
12746 * final.c (rest_of_handle_final): Call delete_vta_debug_insns
12747 instead of variable_tracking_main.
12748
12749 2018-01-03 Martin Sebor <msebor@redhat.com>
12750
12751 PR tree-optimization/83603
12752 * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
12753 arguments past the endof the argument list in functions declared
12754 without a prototype.
12755 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
12756 Avoid checking when arguments are null.
12757
12758 2018-01-03 Martin Sebor <msebor@redhat.com>
12759
12760 PR c/83559
12761 * doc/extend.texi (attribute const): Fix a typo.
12762 * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
12763 issuing -Wsuggest-attribute for void functions.
12764
12765 2018-01-03 Martin Sebor <msebor@redhat.com>
12766
12767 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
12768 offset_int::from instead of wide_int::to_shwi.
12769 (maybe_diag_overlap): Remove assertion.
12770 Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
12771 * gimple-ssa-sprintf.c (format_directive): Same.
12772 (parse_directive): Same.
12773 (sprintf_dom_walker::compute_format_length): Same.
12774 (try_substitute_return_value): Same.
12775
12776 2018-01-03 Jeff Law <law@redhat.com>
12777
12778 PR middle-end/83654
12779 * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
12780 non-constant residual for zero at runtime and avoid probing in
12781 that case. Reorganize code for trailing problem to mirror handling
12782 of the residual.
12783
12784 2018-01-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12785
12786 PR tree-optimization/83501
12787 * tree-ssa-strlen.c (get_string_cst): New.
12788 (handle_char_store): Call get_string_cst.
12789
12790 2018-01-03 Martin Liska <mliska@suse.cz>
12791
12792 PR tree-optimization/83593
12793 * tree-ssa-strlen.c: Include tree-cfg.h.
12794 (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
12795 (strlen_dom_walker): Add new member variable m_cleanup_cfg.
12796 (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
12797 to false.
12798 (strlen_dom_walker::before_dom_children): Call
12799 gimple_purge_dead_eh_edges. Dump tranformation with details
12800 dump flags.
12801 (strlen_dom_walker::before_dom_children): Update call by adding
12802 new argument cleanup_eh.
12803 (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
12804
12805 2018-01-03 Martin Liska <mliska@suse.cz>
12806
12807 PR ipa/83549
12808 * cif-code.def (VARIADIC_THUNK): New enum value.
12809 * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
12810 thunks.
12811
12812 2018-01-03 Jan Beulich <jbeulich@suse.com>
12813
12814 * sse.md (mov<mode>_internal): Tighten condition for when to use
12815 vmovdqu<ssescalarsize> for TI and OI modes.
12816
12817 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12818
12819 Update copyright years.
12820
12821 2018-01-03 Martin Liska <mliska@suse.cz>
12822
12823 PR ipa/83594
12824 * ipa-visibility.c (function_and_variable_visibility): Skip
12825 functions with noipa attribure.
12826
12827 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12828
12829 * gcc.c (process_command): Update copyright notice dates.
12830 * gcov-dump.c (print_version): Ditto.
12831 * gcov.c (print_version): Ditto.
12832 * gcov-tool.c (print_version): Ditto.
12833 * gengtype.c (create_file): Ditto.
12834 * doc/cpp.texi: Bump @copying's copyright year.
12835 * doc/cppinternals.texi: Ditto.
12836 * doc/gcc.texi: Ditto.
12837 * doc/gccint.texi: Ditto.
12838 * doc/gcov.texi: Ditto.
12839 * doc/install.texi: Ditto.
12840 * doc/invoke.texi: Ditto.
12841
12842 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12843
12844 * vector-builder.h (vector_builder::m_full_nelts): Change from
12845 unsigned int to poly_uint64.
12846 (vector_builder::full_nelts): Update prototype accordingly.
12847 (vector_builder::new_vector): Likewise.
12848 (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
12849 (vector_builder::operator ==): Likewise.
12850 (vector_builder::finalize): Likewise.
12851 * int-vector-builder.h (int_vector_builder::int_vector_builder):
12852 Take the number of elements as a poly_uint64 rather than an
12853 unsigned int.
12854 * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
12855 from unsigned int to poly_uint64.
12856 (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
12857 (vec_perm_indices::new_vector): Likewise.
12858 (vec_perm_indices::length): Likewise.
12859 (vec_perm_indices::nelts_per_input): Likewise.
12860 (vec_perm_indices::input_nelts): Likewise.
12861 * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
12862 number of elements per input as a poly_uint64 rather than an
12863 unsigned int. Use the original encoding for variable-length
12864 vectors, rather than clamping each individual element.
12865 For the second and subsequent elements in each pattern,
12866 clamp the step and base before clamping their sum.
12867 (vec_perm_indices::series_p): Handle polynomial element counts.
12868 (vec_perm_indices::all_in_range_p): Likewise.
12869 (vec_perm_indices_to_tree): Likewise.
12870 (vec_perm_indices_to_rtx): Likewise.
12871 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
12872 * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
12873 (tree_vector_builder::new_binary_operation): Handle polynomial
12874 element counts. Return false if we need to know the number
12875 of elements at compile time.
12876 * fold-const.c (fold_vec_perm): Punt if the number of elements
12877 isn't known at compile time.
12878
12879 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12880
12881 * vec-perm-indices.h (vec_perm_builder): Change element type
12882 from HOST_WIDE_INT to poly_int64.
12883 (vec_perm_indices::element_type): Update accordingly.
12884 (vec_perm_indices::clamp): Handle polynomial element_types.
12885 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
12886 (vec_perm_indices::all_in_range_p): Likewise.
12887 (tree_to_vec_perm_builder): Check for poly_int64 trees rather
12888 than shwi trees.
12889 * vector-builder.h (vector_builder::stepped_sequence_p): Handle
12890 polynomial vec_perm_indices element types.
12891 * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
12892 * fold-const.c (fold_vec_perm): Likewise.
12893 * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
12894 * tree-vect-generic.c (lower_vec_perm): Likewise.
12895 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
12896 * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
12897 element type to HOST_WIDE_INT.
12898
12899 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12900 Alan Hayward <alan.hayward@arm.com>
12901 David Sherwood <david.sherwood@arm.com>
12902
12903 * alias.c (addr_side_effect_eval): Take the size as a poly_int64
12904 rather than an int. Use plus_constant.
12905 (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
12906 Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
12907
12908 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12909 Alan Hayward <alan.hayward@arm.com>
12910 David Sherwood <david.sherwood@arm.com>
12911
12912 * calls.c (emit_call_1, expand_call): Change struct_value_size from
12913 a HOST_WIDE_INT to a poly_int64.
12914
12915 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12916 Alan Hayward <alan.hayward@arm.com>
12917 David Sherwood <david.sherwood@arm.com>
12918
12919 * calls.c (load_register_parameters): Cope with polynomial
12920 mode sizes. Require a constant size for BLKmode parameters
12921 that aren't described by a PARALLEL. If BLOCK_REG_PADDING
12922 forces a parameter to be padded at the lsb end in order to
12923 fill a complete number of words, require the parameter size
12924 to be ordered wrt UNITS_PER_WORD.
12925
12926 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12927 Alan Hayward <alan.hayward@arm.com>
12928 David Sherwood <david.sherwood@arm.com>
12929
12930 * reload1.c (spill_stack_slot_width): Change element type
12931 from unsigned int to poly_uint64_pod.
12932 (alter_reg): Treat mode sizes as polynomial.
12933
12934 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12935 Alan Hayward <alan.hayward@arm.com>
12936 David Sherwood <david.sherwood@arm.com>
12937
12938 * reload.c (complex_word_subreg_p): New function.
12939 (reload_inner_reg_of_subreg, push_reload): Use it.
12940
12941 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12942 Alan Hayward <alan.hayward@arm.com>
12943 David Sherwood <david.sherwood@arm.com>
12944
12945 * lra-constraints.c (process_alt_operands): Reject matched
12946 operands whose sizes aren't ordered.
12947 (match_reload): Refer to this check here.
12948
12949 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12950 Alan Hayward <alan.hayward@arm.com>
12951 David Sherwood <david.sherwood@arm.com>
12952
12953 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
12954 that the mode size is in the set {1, 2, 4, 8, 16}.
12955
12956 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12957 Alan Hayward <alan.hayward@arm.com>
12958 David Sherwood <david.sherwood@arm.com>
12959
12960 * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
12961 Use plus_constant instead of gen_rtx_PLUS.
12962
12963 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12964 Alan Hayward <alan.hayward@arm.com>
12965 David Sherwood <david.sherwood@arm.com>
12966
12967 * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
12968 * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
12969 * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
12970 * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
12971 * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
12972 * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
12973 * config/i386/i386-protos.h (ix86_push_rounding): Declare.
12974 * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
12975 * config/i386/i386.c (ix86_push_rounding): ...this new function.
12976 * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
12977 a poly_int64.
12978 * config/m32c/m32c.c (m32c_push_rounding): Likewise.
12979 * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
12980 * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
12981 * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
12982 * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
12983 * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
12984 * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
12985 * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
12986 * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
12987 * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
12988 function.
12989 * expr.c (emit_move_resolve_push): Treat the input and result
12990 of PUSH_ROUNDING as a poly_int64.
12991 (emit_move_complex_push, emit_single_push_insn_1): Likewise.
12992 (emit_push_insn): Likewise.
12993 * lra-eliminations.c (mark_not_eliminable): Likewise.
12994 * recog.c (push_operand): Likewise.
12995 * reload1.c (elimination_effects): Likewise.
12996 * rtlanal.c (nonzero_bits1): Likewise.
12997 * calls.c (store_one_arg): Likewise. Require the padding to be
12998 known at compile time.
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 * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
13005 Use plus_constant instead of gen_rtx_PLUS.
13006
13007 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13008 Alan Hayward <alan.hayward@arm.com>
13009 David Sherwood <david.sherwood@arm.com>
13010
13011 * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
13012 rather than an int.
13013
13014 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13015 Alan Hayward <alan.hayward@arm.com>
13016 David Sherwood <david.sherwood@arm.com>
13017
13018 * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
13019 instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
13020 via stack temporaries. Treat the mode size as polynomial too.
13021
13022 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13023 Alan Hayward <alan.hayward@arm.com>
13024 David Sherwood <david.sherwood@arm.com>
13025
13026 * expr.c (expand_expr_real_2): When handling conversions involving
13027 unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
13028 multiplying int_size_in_bytes by BITS_PER_UNIT. Treat GET_MODE_BISIZE
13029 as a poly_uint64 too.
13030
13031 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13032 Alan Hayward <alan.hayward@arm.com>
13033 David Sherwood <david.sherwood@arm.com>
13034
13035 * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
13036
13037 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13038 Alan Hayward <alan.hayward@arm.com>
13039 David Sherwood <david.sherwood@arm.com>
13040
13041 * combine.c (can_change_dest_mode): Handle polynomial
13042 REGMODE_NATURAL_SIZE.
13043 * expmed.c (store_bit_field_1): Likewise.
13044 * expr.c (store_constructor): Likewise.
13045 * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
13046 and polynomial REGMODE_NATURAL_SIZE.
13047 (gen_lowpart_common): Likewise.
13048 * reginfo.c (record_subregs_of_mode): Likewise.
13049 * rtlanal.c (read_modify_subreg_p): Likewise.
13050
13051 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13052 Alan Hayward <alan.hayward@arm.com>
13053 David Sherwood <david.sherwood@arm.com>
13054
13055 * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
13056 numbers of elements.
13057
13058 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13059 Alan Hayward <alan.hayward@arm.com>
13060 David Sherwood <david.sherwood@arm.com>
13061
13062 * match.pd: Cope with polynomial numbers of vector elements.
13063
13064 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13065 Alan Hayward <alan.hayward@arm.com>
13066 David Sherwood <david.sherwood@arm.com>
13067
13068 * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
13069 in a POINTER_PLUS_EXPR.
13070
13071 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13072 Alan Hayward <alan.hayward@arm.com>
13073 David Sherwood <david.sherwood@arm.com>
13074
13075 * omp-simd-clone.c (simd_clone_subparts): New function.
13076 (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
13077 (ipa_simd_modify_function_body): Likewise.
13078
13079 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13080 Alan Hayward <alan.hayward@arm.com>
13081 David Sherwood <david.sherwood@arm.com>
13082
13083 * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
13084 (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
13085 (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
13086 (expand_vector_condition, vector_element): Likewise.
13087 (subparts_gt): New function.
13088 (get_compute_type): Use subparts_gt.
13089 (count_type_subparts): Delete.
13090 (expand_vector_operations_1): Use subparts_gt instead of
13091 count_type_subparts.
13092
13093 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13094 Alan Hayward <alan.hayward@arm.com>
13095 David Sherwood <david.sherwood@arm.com>
13096
13097 * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
13098 (vect_compile_time_alias): ...this new function. Do the calculation
13099 on poly_ints rather than trees.
13100 (vect_prune_runtime_alias_test_list): Update call accordingly.
13101
13102 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13103 Alan Hayward <alan.hayward@arm.com>
13104 David Sherwood <david.sherwood@arm.com>
13105
13106 * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
13107 numbers of units.
13108 (vect_schedule_slp_instance): Likewise.
13109
13110 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13111 Alan Hayward <alan.hayward@arm.com>
13112 David Sherwood <david.sherwood@arm.com>
13113
13114 * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
13115 constant and extern definitions for variable-length vectors.
13116 (vect_get_constant_vectors): Note that the number of units
13117 is known to be constant.
13118
13119 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13120 Alan Hayward <alan.hayward@arm.com>
13121 David Sherwood <david.sherwood@arm.com>
13122
13123 * tree-vect-stmts.c (vectorizable_conversion): Treat the number
13124 of units as polynomial. Choose between WIDE and NARROW based
13125 on multiple_p.
13126
13127 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13128 Alan Hayward <alan.hayward@arm.com>
13129 David Sherwood <david.sherwood@arm.com>
13130
13131 * tree-vect-stmts.c (simd_clone_subparts): New function.
13132 (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
13133
13134 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13135 Alan Hayward <alan.hayward@arm.com>
13136 David Sherwood <david.sherwood@arm.com>
13137
13138 * tree-vect-stmts.c (vectorizable_call): Treat the number of
13139 vectors as polynomial. Use build_index_vector for
13140 IFN_GOMP_SIMD_LANE.
13141
13142 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13143 Alan Hayward <alan.hayward@arm.com>
13144 David Sherwood <david.sherwood@arm.com>
13145
13146 * tree-vect-stmts.c (get_load_store_type): Treat the number of
13147 units as polynomial. Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
13148 for variable-length vectors.
13149 (vectorizable_mask_load_store): Treat the number of units as
13150 polynomial, asserting that it is constant if the condition has
13151 already been enforced.
13152 (vectorizable_store, vectorizable_load): Likewise.
13153
13154 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13155 Alan Hayward <alan.hayward@arm.com>
13156 David Sherwood <david.sherwood@arm.com>
13157
13158 * tree-vect-loop.c (vectorizable_live_operation): Treat the number
13159 of units as polynomial. Punt if we can't tell at compile time
13160 which vector contains the final result.
13161
13162 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13163 Alan Hayward <alan.hayward@arm.com>
13164 David Sherwood <david.sherwood@arm.com>
13165
13166 * tree-vect-loop.c (vectorizable_induction): Treat the number
13167 of units as polynomial. Punt on SLP inductions. Use an integer
13168 VEC_SERIES_EXPR for variable-length integer reductions. Use a
13169 cast of such a series for variable-length floating-point
13170 reductions.
13171
13172 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13173 Alan Hayward <alan.hayward@arm.com>
13174 David Sherwood <david.sherwood@arm.com>
13175
13176 * tree.h (build_index_vector): Declare.
13177 * tree.c (build_index_vector): New function.
13178 * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
13179 of units as polynomial, forcibly converting it to a constant if
13180 vectorizable_reduction has already enforced the condition.
13181 (vect_create_epilog_for_reduction): Likewise. Use build_index_vector
13182 to create a {1,2,3,...} vector.
13183 (vectorizable_reduction): Treat the number of units as polynomial.
13184 Choose vectype_in based on the largest scalar element size rather
13185 than the smallest number of units. Enforce the restrictions
13186 relied on above.
13187
13188 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13189 Alan Hayward <alan.hayward@arm.com>
13190 David Sherwood <david.sherwood@arm.com>
13191
13192 * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
13193 number of units as polynomial.
13194
13195 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13196 Alan Hayward <alan.hayward@arm.com>
13197 David Sherwood <david.sherwood@arm.com>
13198
13199 * target.h (vector_sizes, auto_vector_sizes): New typedefs.
13200 * target.def (autovectorize_vector_sizes): Return the vector sizes
13201 by pointer, using vector_sizes rather than a bitmask.
13202 * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
13203 * targhooks.c (default_autovectorize_vector_sizes): Likewise.
13204 * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
13205 Likewise.
13206 * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
13207 * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
13208 * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
13209 * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
13210 * omp-general.c (omp_max_vf): Likewise.
13211 * omp-low.c (omp_clause_aligned_alignment): Likewise.
13212 * optabs-query.c (can_vec_mask_load_store_p): Likewise.
13213 * tree-vect-loop.c (vect_analyze_loop): Likewise.
13214 * tree-vect-slp.c (vect_slp_bb): Likewise.
13215 * doc/tm.texi: Regenerate.
13216 * tree-vectorizer.h (current_vector_size): Change from an unsigned int
13217 to a poly_uint64.
13218 * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
13219 the vector size as a poly_uint64 rather than an unsigned int.
13220 (current_vector_size): Change from an unsigned int to a poly_uint64.
13221 (get_vectype_for_scalar_type): Update accordingly.
13222 * tree.h (build_truth_vector_type): Take the size and number of
13223 units as a poly_uint64 rather than an unsigned int.
13224 (build_vector_type): Add a temporary overload that takes
13225 the number of units as a poly_uint64 rather than an unsigned int.
13226 * tree.c (make_vector_type): Likewise.
13227 (build_truth_vector_type): Take the number of units as a poly_uint64
13228 rather than an unsigned int.
13229
13230 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13231 Alan Hayward <alan.hayward@arm.com>
13232 David Sherwood <david.sherwood@arm.com>
13233
13234 * target.def (get_mask_mode): Take the number of units and length
13235 as poly_uint64s rather than unsigned ints.
13236 * targhooks.h (default_get_mask_mode): Update accordingly.
13237 * targhooks.c (default_get_mask_mode): Likewise.
13238 * config/i386/i386.c (ix86_get_mask_mode): Likewise.
13239 * doc/tm.texi: Regenerate.
13240
13241 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13242 Alan Hayward <alan.hayward@arm.com>
13243 David Sherwood <david.sherwood@arm.com>
13244
13245 * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
13246 * omp-general.c (omp_max_vf): Likewise.
13247 * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
13248 (expand_omp_simd): Handle polynomial safelen.
13249 * omp-low.c (omplow_simd_context): Add a default constructor.
13250 (omplow_simd_context::max_vf): Change from int to poly_uint64.
13251 (lower_rec_simd_input_clauses): Update accordingly.
13252 (lower_rec_input_clauses): Likewise.
13253
13254 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13255 Alan Hayward <alan.hayward@arm.com>
13256 David Sherwood <david.sherwood@arm.com>
13257
13258 * tree-vectorizer.h (vect_nunits_for_cost): New function.
13259 * tree-vect-loop.c (vect_model_reduction_cost): Use it.
13260 * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
13261 (vect_analyze_slp_cost): Likewise.
13262 * tree-vect-stmts.c (vect_model_store_cost): Likewise.
13263 (vect_model_load_cost): Likewise.
13264
13265 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13266 Alan Hayward <alan.hayward@arm.com>
13267 David Sherwood <david.sherwood@arm.com>
13268
13269 * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
13270 (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
13271 from an unsigned int * to a poly_uint64_pod *.
13272 (calculate_unrolling_factor): New function.
13273 (vect_analyze_slp_instance): Use it. Track polynomial max_nunits.
13274
13275 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13276 Alan Hayward <alan.hayward@arm.com>
13277 David Sherwood <david.sherwood@arm.com>
13278
13279 * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
13280 from an unsigned int to a poly_uint64.
13281 (_loop_vec_info::slp_unrolling_factor): Likewise.
13282 (_loop_vec_info::vectorization_factor): Change from an int
13283 to a poly_uint64.
13284 (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
13285 (vect_get_num_vectors): New function.
13286 (vect_update_max_nunits, vect_vf_for_cost): Likewise.
13287 (vect_get_num_copies): Use vect_get_num_vectors.
13288 (vect_analyze_data_ref_dependences): Change max_vf from an int *
13289 to an unsigned int *.
13290 (vect_analyze_data_refs): Change min_vf from an int * to a
13291 poly_uint64 *.
13292 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
13293 than an unsigned HOST_WIDE_INT.
13294 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
13295 (vect_analyze_data_ref_dependence): Change max_vf from an int *
13296 to an unsigned int *.
13297 (vect_analyze_data_ref_dependences): Likewise.
13298 (vect_compute_data_ref_alignment): Handle polynomial vf.
13299 (vect_enhance_data_refs_alignment): Likewise.
13300 (vect_prune_runtime_alias_test_list): Likewise.
13301 (vect_shift_permute_load_chain): Likewise.
13302 (vect_supportable_dr_alignment): Likewise.
13303 (dependence_distance_ge_vf): Take the vectorization factor as a
13304 poly_uint64 rather than an unsigned HOST_WIDE_INT.
13305 (vect_analyze_data_refs): Change min_vf from an int * to a
13306 poly_uint64 *.
13307 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
13308 vfm1 as a poly_uint64 rather than an int. Make the same change
13309 for the returned bound_scalar.
13310 (vect_gen_vector_loop_niters): Handle polynomial vf.
13311 (vect_do_peeling): Likewise. Update call to
13312 vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
13313 (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
13314 be constant.
13315 * tree-vect-loop.c (vect_determine_vectorization_factor)
13316 (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
13317 (vect_get_known_peeling_cost): Likewise.
13318 (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
13319 (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
13320 (vect_transform_loop): Likewise. Use the lowest possible VF when
13321 updating the upper bounds of the loop.
13322 (vect_min_worthwhile_factor): Make static. Return an unsigned int
13323 rather than an int.
13324 * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
13325 polynomial unroll factors.
13326 (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
13327 (vect_make_slp_decision): Likewise.
13328 (vect_supported_load_permutation_p): Likewise, and polynomial
13329 vf too.
13330 (vect_analyze_slp_cost): Handle polynomial vf.
13331 (vect_slp_analyze_node_operations): Likewise.
13332 (vect_slp_analyze_bb_1): Likewise.
13333 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
13334 than an unsigned HOST_WIDE_INT.
13335 * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
13336 (vectorizable_load): Handle polynomial vf.
13337 * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
13338 a poly_uint64.
13339 (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
13340
13341 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13342 Alan Hayward <alan.hayward@arm.com>
13343 David Sherwood <david.sherwood@arm.com>
13344
13345 * match.pd: Handle bit operations involving three constants
13346 and try to fold one pair.
13347
13348 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13349
13350 * tree-vect-loop-manip.c: Include gimple-fold.h.
13351 (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
13352 niters_maybe_zero parameters. Handle other cases besides a step of 1.
13353 (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
13354 Add a path that uses a step of VF instead of 1, but disable it
13355 for now.
13356 (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
13357 and niters_no_overflow parameters. Update calls to
13358 slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
13359 Create a new SSA name if the latter choses to use a ste other
13360 than zero, and return it via niters_vector_mult_vf_var.
13361 * tree-vect-loop.c (vect_transform_loop): Update calls to
13362 vect_do_peeling, vect_gen_vector_loop_niters and
13363 slpeel_make_loop_iterate_ntimes.
13364 * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
13365 (vect_gen_vector_loop_niters): Update declarations after above changes.
13366
13367 2018-01-02 Michael Meissner <meissner@linux.vnet.ibm.com>
13368
13369 * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
13370 128-bit round to integer instructions.
13371 (ceil<mode>2): Likewise.
13372 (btrunc<mode>2): Likewise.
13373 (round<mode>2): Likewise.
13374
13375 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
13376
13377 * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
13378 unaligned VSX load/store on P8/P9.
13379 (expand_block_clear): Allow the use of unaligned VSX
13380 load/store on P8/P9.
13381
13382 2018-01-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
13383
13384 * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
13385 New function.
13386 (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
13387 swap associated with both a load and a store.
13388
13389 2018-01-02 Andrew Waterman <andrew@sifive.com>
13390
13391 * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
13392 * config/riscv/riscv.md (clear_cache): Use it.
13393
13394 2018-01-02 Artyom Skrobov <tyomitch@gmail.com>
13395
13396 * web.c: Remove out-of-date comment.
13397
13398 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13399
13400 * expr.c (fixup_args_size_notes): Check that any existing
13401 REG_ARGS_SIZE notes are correct, and don't try to re-add them.
13402 (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
13403 (emit_single_push_insn): ...here.
13404
13405 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13406
13407 * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
13408 (const_vector_encoded_nelts): New function.
13409 (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
13410 (const_vector_int_elt, const_vector_elt): Declare.
13411 * emit-rtl.c (const_vector_int_elt_1): New function.
13412 (const_vector_elt): Likewise.
13413 * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
13414 of CONST_VECTOR_ELT.
13415
13416 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13417
13418 * expr.c: Include rtx-vector-builder.h.
13419 (const_vector_mask_from_tree): Use rtx_vector_builder and operate
13420 directly on the tree encoding.
13421 (const_vector_from_tree): Likewise.
13422 * optabs.c: Include rtx-vector-builder.h.
13423 (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
13424 sequence of "u" values.
13425 * vec-perm-indices.c: Include rtx-vector-builder.h.
13426 (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
13427 directly on the vec_perm_indices encoding.
13428
13429 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13430
13431 * doc/rtl.texi (const_vector): Describe new encoding scheme.
13432 * Makefile.in (OBJS): Add rtx-vector-builder.o.
13433 * rtx-vector-builder.h: New file.
13434 * rtx-vector-builder.c: Likewise.
13435 * rtl.h (rtx_def::u2): Add a const_vector field.
13436 (CONST_VECTOR_NPATTERNS): New macro.
13437 (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
13438 (CONST_VECTOR_DUPLICATE_P): Likewise.
13439 (CONST_VECTOR_STEPPED_P): Likewise.
13440 (CONST_VECTOR_ENCODED_ELT): Likewise.
13441 (const_vec_duplicate_p): Check for a duplicated vector encoding.
13442 (unwrap_const_vec_duplicate): Likewise.
13443 (const_vec_series_p): Check for a non-duplicated vector encoding.
13444 Say that the function only returns true for integer vectors.
13445 * emit-rtl.c: Include rtx-vector-builder.h.
13446 (gen_const_vec_duplicate_1): Delete.
13447 (gen_const_vector): Call gen_const_vec_duplicate instead of
13448 gen_const_vec_duplicate_1.
13449 (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
13450 (gen_const_vec_duplicate): Use rtx_vector_builder.
13451 (gen_const_vec_series): Likewise.
13452 (gen_rtx_CONST_VECTOR): Likewise.
13453 * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
13454 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
13455 Build a new vector rather than modifying a CONST_VECTOR in-place.
13456 (handle_special_swappables): Update call accordingly.
13457 * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
13458 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
13459 Build a new vector rather than modifying a CONST_VECTOR in-place.
13460 (handle_special_swappables): Update call accordingly.
13461
13462 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13463
13464 * simplify-rtx.c (simplify_const_binary_operation): Use
13465 CONST_VECTOR_ELT instead of XVECEXP.
13466
13467 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13468
13469 * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
13470 the selector elements to be different from the data elements
13471 if the selector is a VECTOR_CST.
13472 * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
13473 ssizetype for the selector.
13474
13475 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13476
13477 * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
13478 before testing each element individually.
13479 * tree-vect-generic.c (lower_vec_perm): Likewise.
13480
13481 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13482
13483 * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
13484 * selftest-run-tests.c (selftest::run_tests): Call it.
13485 * vector-builder.h (vector_builder::operator ==): New function.
13486 (vector_builder::operator !=): Likewise.
13487 * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
13488 (vec_perm_indices::all_from_input_p): New function.
13489 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
13490 (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
13491 * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
13492 instead of reading the VECTOR_CST directly. Detect whether both
13493 vector inputs are the same before constructing the vec_perm_indices,
13494 and update the number of inputs argument accordingly. Use the
13495 utility functions added above. Only construct sel2 if we need to.
13496
13497 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13498
13499 * optabs.c (expand_vec_perm_var): Use an explicit encoding for
13500 the broadcast of the low byte.
13501 (expand_mult_highpart): Use an explicit encoding for the permutes.
13502 * optabs-query.c (can_mult_highpart_p): Likewise.
13503 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
13504 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13505 (vectorizable_bswap): Likewise.
13506 * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
13507 explicit encoding for the power-of-2 permutes.
13508 (vect_permute_store_chain): Likewise.
13509 (vect_grouped_load_supported): Likewise.
13510 (vect_permute_load_chain): Likewise.
13511
13512 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13513
13514 * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
13515 * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
13516 * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
13517 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
13518 * tree-vect-stmts.c (vectorizable_bswap): Likewise.
13519 (vect_gen_perm_mask_any): Likewise.
13520
13521 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13522
13523 * int-vector-builder.h: New file.
13524 * vec-perm-indices.h: Include int-vector-builder.h.
13525 (vec_perm_indices): Redefine as an int_vector_builder.
13526 (auto_vec_perm_indices): Delete.
13527 (vec_perm_builder): Redefine as a stand-alone class.
13528 (vec_perm_indices::vec_perm_indices): New function.
13529 (vec_perm_indices::clamp): Likewise.
13530 * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
13531 (vec_perm_indices::new_vector): New function.
13532 (vec_perm_indices::new_expanded_vector): Update for new
13533 vec_perm_indices class.
13534 (vec_perm_indices::rotate_inputs): New function.
13535 (vec_perm_indices::all_in_range_p): Operate directly on the
13536 encoded form, without computing elided elements.
13537 (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
13538 encoding. Update for new vec_perm_indices class.
13539 * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
13540 the given vec_perm_builder.
13541 (expand_vec_perm_var): Update vec_perm_builder constructor.
13542 (expand_mult_highpart): Use vec_perm_builder instead of
13543 auto_vec_perm_indices.
13544 * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
13545 vec_perm_indices instead of auto_vec_perm_indices. Use a single
13546 or double series encoding as appropriate.
13547 * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
13548 vec_perm_indices instead of auto_vec_perm_indices.
13549 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13550 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13551 (vect_permute_store_chain): Likewise.
13552 (vect_grouped_load_supported): Likewise.
13553 (vect_permute_load_chain): Likewise.
13554 (vect_shift_permute_load_chain): Likewise.
13555 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13556 (vect_transform_slp_perm_load): Likewise.
13557 (vect_schedule_slp_instance): Likewise.
13558 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13559 (vectorizable_mask_load_store): Likewise.
13560 (vectorizable_bswap): Likewise.
13561 (vectorizable_store): Likewise.
13562 (vectorizable_load): Likewise.
13563 * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
13564 vec_perm_indices instead of auto_vec_perm_indices. Use
13565 tree_to_vec_perm_builder to read the vector from a tree.
13566 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
13567 vec_perm_builder instead of a vec_perm_indices.
13568 (have_whole_vector_shift): Use vec_perm_builder and
13569 vec_perm_indices instead of auto_vec_perm_indices. Leave the
13570 truncation to calc_vec_perm_mask_for_shift.
13571 (vect_create_epilog_for_reduction): Likewise.
13572 * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
13573 from auto_vec_perm_indices to vec_perm_indices.
13574 (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
13575 instead of changing individual elements.
13576 (aarch64_vectorize_vec_perm_const): Use new_vector to install
13577 the vector in d.perm.
13578 * config/arm/arm.c (expand_vec_perm_d::perm): Change
13579 from auto_vec_perm_indices to vec_perm_indices.
13580 (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
13581 instead of changing individual elements.
13582 (arm_vectorize_vec_perm_const): Use new_vector to install
13583 the vector in d.perm.
13584 * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
13585 Update vec_perm_builder constructor.
13586 (rs6000_expand_interleave): Likewise.
13587 * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
13588 (rs6000_expand_interleave): Likewise.
13589
13590 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13591
13592 * optabs-query.c (can_vec_perm_var_p): Check whether lowering
13593 to qimode could truncate the indices.
13594 * optabs.c (expand_vec_perm_var): Likewise.
13595
13596 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13597
13598 * Makefile.in (OBJS): Add vec-perm-indices.o.
13599 * vec-perm-indices.h: New file.
13600 * vec-perm-indices.c: Likewise.
13601 * target.h (vec_perm_indices): Replace with a forward class
13602 declaration.
13603 (auto_vec_perm_indices): Move to vec-perm-indices.h.
13604 * optabs.h: Include vec-perm-indices.h.
13605 (expand_vec_perm): Delete.
13606 (selector_fits_mode_p, expand_vec_perm_var): Declare.
13607 (expand_vec_perm_const): Declare.
13608 * target.def (vec_perm_const_ok): Replace with...
13609 (vec_perm_const): ...this new hook.
13610 * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
13611 (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
13612 * doc/tm.texi: Regenerate.
13613 * optabs.def (vec_perm_const): Delete.
13614 * doc/md.texi (vec_perm_const): Likewise.
13615 (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
13616 * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
13617 expand_vec_perm for constant permutation vectors. Assert that
13618 the mode of variable permutation vectors is the integer equivalent
13619 of the mode that is being permuted.
13620 * optabs-query.h (selector_fits_mode_p): Declare.
13621 * optabs-query.c: Include vec-perm-indices.h.
13622 (selector_fits_mode_p): New function.
13623 (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
13624 is defined, instead of checking whether the vec_perm_const_optab
13625 exists. Use targetm.vectorize.vec_perm_const instead of
13626 targetm.vectorize.vec_perm_const_ok. Check whether the indices
13627 fit in the vector mode before using a variable permute.
13628 * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
13629 vec_perm_indices instead of an rtx.
13630 (expand_vec_perm): Replace with...
13631 (expand_vec_perm_const): ...this new function. Take the selector
13632 as a vec_perm_indices rather than an rtx. Also take the mode of
13633 the selector. Update call to shift_amt_for_vec_perm_mask.
13634 Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
13635 Use vec_perm_indices::new_expanded_vector to expand the original
13636 selector into bytes. Check whether the indices fit in the vector
13637 mode before using a variable permute.
13638 (expand_vec_perm_var): Make global.
13639 (expand_mult_highpart): Use expand_vec_perm_const.
13640 * fold-const.c: Includes vec-perm-indices.h.
13641 * tree-ssa-forwprop.c: Likewise.
13642 * tree-vect-data-refs.c: Likewise.
13643 * tree-vect-generic.c: Likewise.
13644 * tree-vect-loop.c: Likewise.
13645 * tree-vect-slp.c: Likewise.
13646 * tree-vect-stmts.c: Likewise.
13647 * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
13648 Delete.
13649 * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
13650 * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
13651 (aarch64_vectorize_vec_perm_const_ok): Fuse into...
13652 (aarch64_vectorize_vec_perm_const): ...this new function.
13653 (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13654 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13655 * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
13656 * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
13657 * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13658 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13659 (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
13660 into...
13661 (arm_vectorize_vec_perm_const): ...this new function. Explicitly
13662 check for NEON modes.
13663 * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
13664 * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
13665 * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
13666 (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
13667 into...
13668 (ix86_vectorize_vec_perm_const): ...this new function. Incorporate
13669 the old VEC_PERM_CONST conditions.
13670 * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
13671 * config/ia64/vect.md (vec_perm_const<mode>): Delete.
13672 * config/ia64/ia64.c (ia64_expand_vec_perm_const)
13673 (ia64_vectorize_vec_perm_const_ok): Merge into...
13674 (ia64_vectorize_vec_perm_const): ...this new function.
13675 * config/mips/loongson.md (vec_perm_const<mode>): Delete.
13676 * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
13677 * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
13678 * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
13679 * config/mips/mips.c (mips_expand_vec_perm_const)
13680 (mips_vectorize_vec_perm_const_ok): Merge into...
13681 (mips_vectorize_vec_perm_const): ...this new function.
13682 * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
13683 * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
13684 * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
13685 * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
13686 * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
13687 (rs6000_expand_vec_perm_const): Delete.
13688 * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
13689 Delete.
13690 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13691 (altivec_expand_vec_perm_const_le): Take each operand individually.
13692 Operate on constant selectors rather than rtxes.
13693 (altivec_expand_vec_perm_const): Likewise. Update call to
13694 altivec_expand_vec_perm_const_le.
13695 (rs6000_expand_vec_perm_const): Delete.
13696 (rs6000_vectorize_vec_perm_const_ok): Delete.
13697 (rs6000_vectorize_vec_perm_const): New function.
13698 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
13699 an element count and rtx array.
13700 (rs6000_expand_extract_even): Update call accordingly.
13701 (rs6000_expand_interleave): Likewise.
13702 * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
13703 * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
13704 * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
13705 * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
13706 (rs6000_expand_vec_perm_const): Delete.
13707 * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13708 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13709 (altivec_expand_vec_perm_const_le): Take each operand individually.
13710 Operate on constant selectors rather than rtxes.
13711 (altivec_expand_vec_perm_const): Likewise. Update call to
13712 altivec_expand_vec_perm_const_le.
13713 (rs6000_expand_vec_perm_const): Delete.
13714 (rs6000_vectorize_vec_perm_const_ok): Delete.
13715 (rs6000_vectorize_vec_perm_const): New function. Remove stray
13716 reference to the SPE evmerge intructions.
13717 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
13718 an element count and rtx array.
13719 (rs6000_expand_extract_even): Update call accordingly.
13720 (rs6000_expand_interleave): Likewise.
13721 * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
13722 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
13723 new function.
13724 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13725
13726 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13727
13728 * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
13729 vector mode and that that mode matches the mode of the data
13730 being permuted.
13731 (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
13732 out into expand_vec_perm_var. Do all CONST_VECTOR handling here,
13733 directly using expand_vec_perm_1 when forcing selectors into
13734 registers.
13735 (expand_vec_perm_var): New function, split out from expand_vec_perm.
13736
13737 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13738
13739 * optabs-query.h (can_vec_perm_p): Delete.
13740 (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
13741 * optabs-query.c (can_vec_perm_p): Split into...
13742 (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
13743 (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
13744 particular selector is valid.
13745 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13746 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13747 (vect_grouped_load_supported): Likewise.
13748 (vect_shift_permute_load_chain): Likewise.
13749 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13750 (vect_transform_slp_perm_load): Likewise.
13751 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13752 (vectorizable_bswap): Likewise.
13753 (vect_gen_perm_mask_checked): Likewise.
13754 * fold-const.c (fold_ternary_loc): Likewise. Don't take
13755 implementations of variable permutation vectors into account
13756 when deciding which selector to use.
13757 * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
13758 vec_perm_const_optab is supported; instead use can_vec_perm_const_p
13759 with a false third argument.
13760 * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
13761 to test whether the constant selector is valid and can_vec_perm_var_p
13762 to test whether a variable selector is valid.
13763
13764 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13765
13766 * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
13767 * optabs-query.c (can_vec_perm_p): Likewise.
13768 * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
13769 instead of vec_perm_indices.
13770 * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
13771 (vect_gen_perm_mask_checked): Likewise,
13772 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
13773 (vect_gen_perm_mask_checked): Likewise,
13774
13775 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13776
13777 * optabs-query.h (qimode_for_vec_perm): Declare.
13778 * optabs-query.c (can_vec_perm_p): Split out qimode search to...
13779 (qimode_for_vec_perm): ...this new function.
13780 * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
13781
13782 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
13783
13784 * rtlanal.c (canonicalize_condition): Return 0 if final rtx
13785 does not have a conditional at the top.
13786
13787 2018-01-02 Richard Biener <rguenther@suse.de>
13788
13789 * ipa-inline.c (big_speedup_p): Fix expression.
13790
13791 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
13792
13793 PR target/81616
13794 * config/i386/x86-tune-costs.h: Increase cost of integer load costs
13795 for generic 4->6.
13796
13797 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
13798
13799 PR target/81616
13800 Generic tuning.
13801 * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
13802 cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
13803 and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
13804 cond_taken_branch_cost 3->4.
13805
13806 2018-01-01 Jakub Jelinek <jakub@redhat.com>
13807
13808 PR tree-optimization/83581
13809 * tree-loop-distribution.c (pass_loop_distribution::execute): Return
13810 TODO_cleanup_cfg if any changes have been made.
13811
13812 PR middle-end/83608
13813 * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
13814 convert_modes if target mode has the right side, but different mode
13815 class.
13816
13817 PR middle-end/83609
13818 * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
13819 last argument when extracting from CONCAT. If either from_real or
13820 from_imag is NULL, use expansion through memory. If result is not
13821 a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
13822 the parts directly to inner mode, if even that fails, use expansion
13823 through memory.
13824
13825 PR middle-end/83623
13826 * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
13827 check for bswap in mode rather than HImode and use that in expand_unop
13828 too.
13829 \f
13830 Copyright (C) 2018 Free Software Foundation, Inc.
13831
13832 Copying and distribution of this file, with or without modification,
13833 are permitted in any medium without royalty provided the copyright
13834 notice and this notice are preserved.