gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add first_interp field.
[gcc.git] / gcc / ChangeLog
1 2018-05-23 Bill Schmidt <wschmidt@linux.ibm.com>
2
3 * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
4 first_interp field.
5 (alloc_cand_and_find_basis): Initialize first_interp field.
6 (slsr_process_mul): Modify first_interp field.
7 (slsr_process_add): Likewise.
8 (slsr_process_cast): Modify first_interp field for each new
9 interpretation.
10 (slsr_process_copy): Likewise.
11 (dump_candidate): Dump first_interp field.
12 (replace_mult_candidate): Process all interpretations, not just
13 subsequent ones.
14 (replace_rhs_if_not_dup): Likewise.
15 (replace_one_candidate): Likewise.
16
17 2018-05-23 Wilco Dijkstra <wdijkstr@arm.com>
18
19 * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
20 Add new boolean.
21 (aarch64_needs_frame_chain): New function.
22 (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
23
24 2018-05-23 Sudakshina Das <sudi.das@arm.com>
25
26 PR target/84882
27 * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
28 Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
29 * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
30 * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
31 as true for strict-align.
32 (aarch64_can_inline_p): Perform checks even when callee has no
33 attributes to check for strict alignment.
34 * doc/extend.texi (AArch64 Function Attributes): Document
35 no-strict-align.
36 * doc/invoke.texi: (AArch64 Options): Likewise.
37
38 2018-05-23 Richard Sandiford <richard.sandiford@linaro.org>
39
40 PR tree-optimization/85853
41 * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
42 the handling of the root of the node to...
43 (vect_slp_analyze_node_operations_1): ...this new function,
44 and run the whole thing with the child nodes' def types
45 set according to their SLP node's def type.
46
47 2018-05-23 Richard Biener <rguenther@suse.de>
48
49 PR middle-end/85874
50 * tree-data-ref.c (create_runtime_alias_checks): Defer
51 and ignore overflow warnings.
52
53 2018-05-23 Yury Gribov <tetra2005@gmail.com>
54
55 PR tree-optimization/85822
56 * tree-vrp.c (is_masked_range_test): Fix handling of negative
57 constants.
58
59 2018-05-23 Richard Biener <rguenther@suse.de>
60
61 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
62 memset constants via native_interpret_expr.
63
64 2018-05-22 H.J. Lu <hongjiu.lu@intel.com>
65
66 PR target/85345
67 * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
68 attribute.
69 (cgraph_node::create_alias): Likewise.
70 (cgraph_node::get_availability): Check ifunc_resolver instead
71 of looking up ifunc attribute.
72 * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
73 * varasm.c (do_assemble_alias): Likewise.
74 (assemble_alias): Likewise.
75 (default_binds_local_p_3): Likewise.
76 * cgraph.h (cgraph_node): Add ifunc_resolver.
77 (cgraph_node::only_called_directly_or_aliased_p): Return false
78 for IFUNC resolver.
79 * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
80 attribute.
81 * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
82 is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
83 (symtab_node::binds_to_current_def_p): Check ifunc_resolver
84 instead of looking up ifunc attribute.
85
86 2018-05-22 Luis Machado <luis.machado@linaro.org>
87
88 * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
89
90 2018-05-22 Martin Sebor <msebor@redhat.com>
91
92 PR middle-end/85359
93 * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
94 only when expasion succeeds.
95 (expand_builtin_strcmp): Same.
96 (expand_builtin_strncmp): Same.
97
98 2018-05-22 Martin Sebor <msebor@redhat.com>
99
100 * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
101
102 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
103 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
104
105 * config/aarch64/aarch64-ldpstp.md: Replace uses of
106 aarch64_mem_pair_operand with memory_operand and delete operand swapping
107 code.
108 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
109 Add check for legitimate_address.
110 (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
111 (aarch64_swap_ldrstr_operands): New.
112 * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
113 Define prototype.
114
115 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
116 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
117
118 * config/aarch64/aarch64.md: New patterns to generate stp
119 and ldp.
120 (store_pair_sw, store_pair_dw): New patterns to generate stp for
121 single words and double words.
122 (load_pair_sw, load_pair_dw): Likewise.
123 (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
124 Delete.
125 (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
126 Delete.
127 * config/aarch64/aarch64-ldpstp.md: Modify peephole
128 for different mode ldpstp and add peephole for merged zero stores.
129 Likewise for loads.
130 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
131 Add size check.
132 (aarch64_gen_store_pair): Rename calls to match new patterns.
133 (aarch64_gen_load_pair): Rename calls to match new patterns.
134 * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
135 (load_pair<DREG:mode><DREG2:mode>): ... This.
136 (store_pair<mode>): Rename to...
137 (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
138 * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
139 New mode iterators.
140 (V_INT_EQUIV): Handle SImode.
141 * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
142 New predicate.
143
144 2018-05-22 Martin Sebor <msebor@redhat.com>
145
146 PR c/85623
147 * calls.c (maybe_warn_nonstring_arg): Use string length to set
148 or ajust the presumed bound on an operation to avoid unnecessary
149 warnings.
150
151 2018-05-22 Martin Sebor <msebor@redhat.com>
152
153 PR tree-optimization/85826
154 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
155 assuming that a DECL necesarily has a constant size.
156
157 2018-05-22 Richard Sandiford <richard.sandiford@linaro.org>
158
159 PR middle-end/85862
160 * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
161
162 2018-05-22 Richard Biener <rguenther@suse.de>
163
164 PR tree-optimization/85834
165 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
166 non-constant and non-zero memset arguments.
167
168 2018-05-22 Martin Liska <mliska@suse.cz>
169
170 PR ipa/85607
171 * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
172
173 2018-05-22 Richard Biener <rguenther@suse.de>
174
175 PR tree-optimization/85863
176 * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
177 comparisons when vectype is specified.
178 (vectorizable_condition): Do not specify vectype for
179 vect_is_simple_cond when SLP vectorizing.
180
181 2018-05-21 Michael Meissner <meissner@linux.ibm.com>
182
183 PR target/85657
184 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
185 define __ibm128 as long double.
186 * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
187 as a distinct type when IEEE 128-bit support is enabled.
188 (init_float128_ieee): Fix up conversions between IFmode and IEEE
189 128-bit types to use the correct functions.
190 (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
191 convert between 128-bit floating point types that have different
192 modes but the same representation, instead of using gen_lowpart to
193 makean alias.
194 * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
195 KFmode.
196 (IFKF_reg): New attributes to give the register constraints for
197 IFmode and KFmode.
198 (extend<mode>tf2_internal): New insns to mark an explicit
199 conversion between 128-bit floating point types that have a
200 different mode but share the same representation.
201
202 2018-05-21 Richard Sandiford <richard.sandiford@linaro.org>
203
204 PR tree-optimization/85814
205 * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
206 a null return from get_strinfo when unsharing the next
207 strinfo in the chain.
208
209 2018-05-21 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
210
211 PR gcc/84923
212 * varasm.c (weak_finish): Clean up weak_decls.
213
214 2018-05-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
215
216 * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
217 UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
218 UNSPEC_UADALP values.
219 * config/aarch64/iterators.md (ABAL): New int iterator.
220 (ABDL2): Likewise.
221 (ADALP): Likewise.
222 (sur): Add mappings for the above.
223 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
224 New define_insn.
225 (aarch64_<sur>abal<mode>_4): Likewise.
226 (aarch64_<sur>adalp<mode>_3): Likewise.
227 (<sur>sadv16qi): New define_expand.
228
229 2018-05-21 Alexander Nesterovskiy <alexander.nesterovskiy@intel.com>
230
231 * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
232 (*movdf_internal): Ditto.
233 (*rcpsf2_sse): Ditto.
234 (*rsqrtsf2_sse): Ditto.
235 (*sqrt<mode>2_sse): Ditto.
236
237 2018-05-21 Tamar Christina <tamar.christina@arm.com>
238
239 * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
240 eor3q<mode>4.
241 (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
242 * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
243 veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
244 vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
245 vbcaxq_s64): New.
246 * config/aarch64/arm_neon.h: Likewise.
247 * config/aarch64/iterators.md (VQ_I): New.
248
249 2018-05-21 Alexey Brodkin <abrodkin@synopsys.com>
250
251 * config.gcc: Add arc/t-multilib-linux to tmake_file for
252 arc*-*-linux*.
253 * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
254 MULTILIB_DIRNAMES
255
256 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
257
258 * config/nds32/constraints.md (S): New constraint.
259 * config/nds32/nds32.md (call_internal): Use constraint S.
260 (call_value_internal): Likewise.
261 (sibcall_internal): Likewise.
262 (sibcall_value_internal): Likewise.
263
264 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
265 Chung-Ju Wu <jasonwucj@gmail.com>
266
267 * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
268 into consideration.
269
270 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
271 Chung-Ju Wu <jasonwucj@gmail.com>
272
273 * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
274 (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
275 (nds32_rtx_costs_impl): Simplify.
276 (nds32_address_cost_impl): Simplify.
277 (nds32_init_rtx_costs): New function.
278 (nds32_rtx_costs_speed_prefer): Likewise.
279 (nds32_rtx_costs_size_prefer): Likewise.
280 (nds32_address_cost_speed_prefer): Likewise.
281 (nds32_address_cost_speed_fwprop): Likewise.
282 (nds32_address_cost_size_prefer): Likewise.
283 * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
284 * config/nds32/nds32.c (nds32_option_override): Use
285 nds32_init_rtx_costs function.
286
287 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
288
289 * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
290 * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
291 (TARGET_PIPELINE_N8): Likewise.
292 (TARGET_PIPELINE_N10): Likewise.
293 (TARGET_PIPELINE_N13): Likewise.
294 (TARGET_PIPELINE_GRAYWOLF): Likewise.
295
296 2018-05-19 Monk Chiang <sh.chiang04@gmail.com>
297
298 * config/nds32/nds32-fpu.md: Update copyright year.
299
300 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
301
302 * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
303
304 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
305
306 * config/nds32/nds32.c
307 (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
308 * config/nds32/nds32.opt (minline-asm-r15): New option.
309
310 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
311
312 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
313 MASK_HW_ABS.
314 * config/nds32/nds32.md (abssi2): New pattern.
315
316 2018-05-19 Uros Bizjak <ubizjak@gmail.com>
317
318 * config/i386/i386.md (rex64namesuffix): New mode attribute.
319 * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
320 Merge insn pattern from sse_cvtsi2ss<round_name> and
321 sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
322 (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
323 from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
324 using SWI48 mode iterator.
325 (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
326 sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
327 (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
328 pattern from sse_cvttss2si<round_saeonly_name>
329 and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
330 (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
331 from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
332 using SWI48 mode iterator.
333 (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
334 insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
335 avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
336 (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
337 from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
338 using SWI48 mode iterator.
339 (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
340 insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
341 avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
342 (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
343 sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
344 SWI48 mode iterator.
345 (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
346 sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
347 (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
348 pattern from sse_cvttsd2si<round_saeonly_name>
349 and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
350
351 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
352
353 * config/nds32/nds32-md-auxiliary.c
354 (nds32_valid_smw_lwm_base_p): Refine.
355 (nds32_output_smw_single_word): Refine.
356 (nds32_output_smw_double_word): New.
357 * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
358
359 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
360
361 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
362 (nds32_output_stack_pop): Refine.
363 (nds32_expand_unaligned_load): Refine.
364 (nds32_expand_unaligned_store): Refine.
365
366 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
367 Chung-Ju Wu <jasonwucj@gmail.com>
368
369 * config/nds32/constants.md: Add TP_REGNUM constant.
370 (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
371 UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
372 UNSPEC_ADD32.
373 * config/nds32/nds32-doubleword.md: Consider flag_pic.
374 * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
375 * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
376 * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
377 and PIC code generation.
378 * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
379 code generation.
380 * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
381 optimization.
382 * config/nds32/nds32.md: Support TLS and PIC.
383 * config/nds32/nds32.c: Support TLS and PIC.
384 * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
385 * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
386 predicate.
387
388 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
389
390 * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
391 mode with E_ prefix.
392
393 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
394 Chung-Ju Wu <jasonwucj@gmail.com>
395
396 * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
397 * config/nds32/nds32-md-auxiliary.c
398 (symbolic_reference_mentioned_p): New.
399 (nds32_legitimize_ict_address): New.
400 (nds32_expand_ict_move): New.
401 (nds32_indirect_call_referenced_p): New.
402 (nds32_symbol_binds_local_p): Delete.
403 (nds32_long_call_p): Modify.
404 * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
405 * config/nds32/nds32-protos.h
406 (symbolic_reference_mentioned_p): Declare.
407 (nds32_legitimize_ict_address): Declare.
408 (nds32_expand_ict_move): Declare.
409 (nds32_indirect_call_referenced_p): Declare.
410 * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
411 (nds32_relax_group): Use nds32_ict_const_p as condition.
412 * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
413 (nds32_asm_file_start): Output ict_model directive in asm code.
414 (nds32_legitimate_address_p): Consider indirect call.
415 (nds32_print_operand): Consider indirect call.
416 (nds32_print_operand_address): Consider indirect call.
417 (nds32_insert_attributes): Handle "indirect_call" attribute.
418 (TARGET_LEGITIMATE_ADDRESS_P): Define.
419 (TARGET_LEGITIMATE_CONSTANT_P): Define.
420 (TARGET_CANNOT_FORCE_CONST_MEM): Define.
421 (TARGET_DELEGITIMIZE_ADDRESS): Define.
422 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
423 * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
424 (TARGET_ICT_MODEL_SMALL): Define.
425 (TARGET_ICT_MODEL_LARGE): Define.
426 * config/nds32/nds32.md (movsi): Consider ict model.
427 (call, call_value): Consider ict model.
428 (sibcall, sibcall_value): Consider ict model.
429 * config/nds32/nds32.opt (mict-model): New option.
430 * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
431 model.
432
433 2018-05-18 Kito Cheng <kito.cheng@gmail.com>
434 Monk Chiang <sh.chiang04@gmail.com>
435 Jim Wilson <jimw@sifive.com>
436
437 * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
438 Add support to parse rv32e*. Clear MASK_RVE for rv32i and rv64i.
439 * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
440 * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
441 __riscv_32e when TARGET_RVE. Handle ABI_ILP32E as soft-float ABI.
442 * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
443 * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
444 compute save_libcall_adjustment properly.
445 (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
446 (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
447 * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
448 (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
449 (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
450 (ABI_SPEC): Handle mabi=ilp32e.
451 * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
452 (RVE): Add RVE mask.
453 * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
454 <-march>: Add rv32e as an example.
455
456 2018-05-18 Marc Glisse <marc.glisse@inria.fr>
457
458 PR c++/82899
459 * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
460 (intra_create_variable_infos): Handle C++ constructors.
461
462 2018-05-18 Martin Liska <mliska@suse.cz>
463
464 * passes.def: Remove a redundant pass.
465
466 2018-05-18 Eric Botcazou <ebotcazou@adacore.com>
467
468 PR bootstrap/85838
469 * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
470
471 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
472
473 * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
474 (ARMv4): Update.
475 (ARMv2, ARMv3, ARMv3m): Delete fgroups.
476 (ARMv6m): Update.
477 (armv2, armv2a, armv3, armv3m): Delete architectures.
478 (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
479 arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
480 arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
481 Delete cpus.
482 * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
483 (*mulsidi3adddi): Likewise.
484 (mulsidi3): Likewise.
485 (*mulsidi3_nov6): Likewise.
486 (umulsidi3): Likewise.
487 (umulsidi3_nov6): Likewise.
488 (umaddsidi4): Likewise.
489 (*umulsidi3adddi): Likewise.
490 (smulsi3_highpart): Likewise.
491 (*smulsi3_highpart_nov6): Likewise.
492 (umulsi3_highpart): Likewise.
493 (*umulsi3_highpart_nov6): Likewise.
494 * config/arm/arm.h (arm_arch3m): Delete.
495 * config/arm/arm.c (arm_arch3m): Delete.
496 (arm_option_override_internal): Update armv3-related comment.
497 (arm_configure_build_target): Delete use of isa_bit_mode32.
498 (arm_option_reconfigure_globals): Delete set of arm_ach3m.
499 (arm_rtx_costs_internal): Delete check of arm_arch3m.
500 * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
501 (mulsa3): Likewise.
502 (mulusa3): Likewise.
503 * config/arm/arm-protos.h (arm_arch3m): Delete.
504 * config/arm/arm-tables.opt: Regenerate.
505 * config/arm/arm-tune.md: Likewise.
506 * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
507 deleted architectures.
508
509 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
510
511 * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
512 (armv5t, armv5te): New features.
513 (ARMv5, ARMv5e): Delete fgroups.
514 (ARMv5t, ARMv5te): Adjust for above changes.
515 (ARMv6m): Likewise.
516 (armv5, armv5e): Delete arches.
517 * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
518 arm_arch5.
519 (*call_reg_arm): Likewise.
520 (*call_value_reg_armv5): Likewise.
521 (*call_value_reg_arm): Likewise.
522 (*call_symbol): Likewise.
523 (*call_value_symbol): Likewise.
524 (*sibcall_insn): Likewise.
525 (*sibcall_value_insn): Likewise.
526 (clzsi2): Likewise.
527 (prefetch): Likewise.
528 (define_split and define_peephole2 dependent on arm_arch5):
529 Likewise.
530 * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
531 arm_arch5e.
532 (TARGET_ARM_QBIT): Likewise.
533 (TARGET_DSP_MULTIPLY): Likewise.
534 (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
535 (arm_arch5, arm_arch5e): Delete.
536 (arm_arch5t, arm_arch5te): Declare.
537 * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
538 (arm_arch5t): Declare.
539 (arm_option_reconfigure_globals): Update for the above.
540 (arm_options_perform_arch_sanity_checks): Update comment, replace
541 use of arm_arch5 with arm_arch5t.
542 (use_return_insn): Likewise.
543 (arm_emit_call_insn): Likewise.
544 (output_return_instruction): Likewise.
545 (arm_final_prescan_insn): Likewise.
546 (arm_coproc_builtin_available): Likewise.
547 * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
548 arm_arch5e with arm_arch5t and arm_arch5te.
549 * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
550 (arm_arch5t, arm_arch5te): Declare.
551 * config/arm/arm-tables.opt: Regenerate.
552 * config/arm/t-arm-elf: Remove references to armv5, armv5e.
553 * config/arm/t-multilib: Likewise.
554 * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
555 instead of arm_arch5.
556 (*call_reg_thumb1): Likewise.
557 (*call_value_reg_thumb1_v5): Likewise.
558 (*call_value_reg_thumb1): Likewise.
559 * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
560 unreachable path.
561 * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
562
563 2018-05-18 Martin Liska <mliska@suse.cz>
564
565 PR gcov-profile/84846
566 * doc/gcov.texi: Document -t option of gcov tool.
567
568 2018-05-18 Martin Liska <mliska@suse.cz>
569
570 PR gcov-profile/84846
571 * gcov.c (print_usage): Add new -t option.
572 (process_args): Handle the option.
573 (generate_results): Use stdout as output when requested by
574 the option.
575
576 2018-05-18 Martin Liska <mliska@suse.cz>
577
578 PR gcov-profile/84846
579 * coverage.c (coverage_init): Write PWD to .gcno file.
580 * doc/gcov.texi: Document how working directory is printed.
581 * gcov-dump.c (dump_gcov_file): Print PWD.
582 * gcov.c (output_intermediate_file): Likewise.
583 (read_graph_file): Read PWD string.
584 (output_lines): Print PWD.
585
586 2018-05-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
587
588 PR middle-end/85817
589 * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
590 for retval and return false if all args to phi are zero.
591
592 2018-05-18 Richard Biener <rguenther@suse.de>
593
594 * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
595 method.
596 (evrp_dom_walker::before_dom_children): Call it.
597
598 2018-05-18 Richard Biener <rguenther@suse.de>
599
600 * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
601 results when processing array refs with variable index.
602
603 2018-05-18 Toon Moene <toon@moene.org>
604
605 * doc/invoke.texi: Move -floop-unroll-and-jam documentation
606 directly after that of -floop-interchange. Indicate that both
607 options are enabled by default when specifying -O3.
608
609 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
610
611 * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
612 iterator. Delete separate integer-mode vec_set<mode> expander.
613 (aarch64_simd_vec_setv2di): Delete.
614 (vec_setv2di): Delete.
615 (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
616 Use VALL_F16 mode iterator. Add LD1 alternative and use vwcore for
617 the "w, r" alternative.
618
619 2018-05-18 Martin Liska <mliska@suse.cz>
620
621 * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
622 * tree-pass.h (make_pass_lower_switch_O0): New function.
623 * tree-switch-conversion.c (node_has_low_bound): Remove.
624 (node_has_high_bound): Likewise.
625 (node_is_bounded): Likewise.
626 (class pass_lower_switch): Make it a template type and create
627 two instances.
628 (pass_lower_switch::execute): Add template argument.
629 (make_pass_lower_switch): New function.
630 (make_pass_lower_switch_O0): New function.
631 (do_jump_if_equal): Remove.
632 (emit_case_nodes): Simplify to just handle all 3 cases and leave
633 all the hard work to tree optimization passes.
634
635 2018-05-18 Martin Liska <mliska@suse.cz>
636
637 * dbgcnt.c (limit_low): Renamed from limit.
638 (limit_high): New variable.
639 (dbg_cnt_is_enabled): Check for upper limit.
640 (dbg_cnt): Adjust dumping.
641 (dbg_cnt_set_limit_by_index): Add new argument for high
642 value.
643 (dbg_cnt_set_limit_by_name): Likewise.
644 (dbg_cnt_process_single_pair): Parse new format.
645 (dbg_cnt_process_opt): Use strtok.
646 (dbg_cnt_list_all_counters): Remove 'value' and add
647 'limit_high'.
648 * doc/invoke.texi: Document changes.
649
650 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
651
652 * doc/sourcebuild.texi (scalar_all_fma): Document.
653 * tree.def (FMA_EXPR): Delete.
654 * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
655 * internal-fn.c (ternary_direct): New macro.
656 (expand_ternary_optab_fn): Likewise.
657 (direct_ternary_optab_supported_p): Likewise.
658 * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
659 * builtins.c (fold_builtin_fma): Delete.
660 (fold_builtin_3): Don't call it.
661 * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
662 * expr.c (expand_expr_real_2): Likewise.
663 * fold-const.c (operand_equal_p): Likewise.
664 (fold_ternary_loc): Likewise.
665 * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
666 * gimple.c (DEFTREECODE): Likewise.
667 * gimplify.c (gimplify_expr): Likewise.
668 * optabs-tree.c (optab_for_tree_code): Likewise.
669 * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
670 * tree-eh.c (operation_could_trap_p): Likewise.
671 (stmt_could_throw_1_p): Likewise.
672 * tree-inline.c (estimate_operator_cost): Likewise.
673 * tree-pretty-print.c (dump_generic_node): Likewise.
674 (op_code_prio): Likewise.
675 * tree-ssa-loop-im.c (stmt_cost): Likewise.
676 * tree-ssa-operands.c (get_expr_operands): Likewise.
677 * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
678 * fold-const-call.h (fold_fma): Delete.
679 * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
680 CFN_FNMA and CFN_FNMS.
681 (fold_fma): Delete.
682 * genmatch.c (combined_fn): New enum.
683 (commutative_ternary_tree_code): Remove FMA_EXPR handling.
684 (commutative_op): New function.
685 (commutate): Use it. Handle more than 2 operands.
686 (dt_operand::gen_gimple_expr): Use commutative_op.
687 (parser::parse_expr): Allow :c to be used with non-binary
688 operators if the commutative operand is known.
689 * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
690 CFN_FMS, CFN_FNMA and CFN_FNMS.
691 (backprop::process_assign_use): Remove FMA_EXPR handling.
692 * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
693 (gen_hsa_fma): New function.
694 (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
695 IFN_FNMA and IFN_FNMS.
696 * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
697 * gimple-fold.h (follow_all_ssa_edges): Declare.
698 * gimple-fold.c (follow_all_ssa_edges): New function.
699 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
700 gimple_build interface and use follow_all_ssa_edges to fold the result.
701 (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
702 instead of checking for optabs directly.
703 * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
704 rather than FMA_EXPRs.
705 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
706 call to IFN_FMA instead of an FMA_EXPR.
707
708 2018-05-17 Jim Wilson <jimw@sifive.com>
709
710 * expr.c (do_tablejump): When converting index to Pmode, if we have a
711 sign extended promoted subreg, and the range does not have the sign bit
712 set, then do a sign extend.
713
714 * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
715 test, check for sign extended subreg and/or constant operands, and
716 do a sign extend in that case.
717
718 2018-05-17 Steve Ellcey <sellcey@cavium.com>
719
720 * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
721 (thunderx2t99_multiple): Delete psuedo-units from used cpus.
722 Add untyped.
723 (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
724 Change logics_shift_reg to logics_shift_imm.
725 (thunderx2t99_fp_loadpair_basic): Delete.
726 (thunderx2t99_fp_storepair_basic): Delete.
727 (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
728 (thunderx2t99_asimd_polynomial): Delete.
729 (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
730 and neon_fp_mul_d_scalar_q.
731 (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
732 (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
733 (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
734 (thunderx2t99_asimd_lut): Add missing tbl types.
735 (thunderx2t99_asimd_ext): Delete.
736 (thunderx2t99_asimd_load1_1_mult): Delete.
737 (thunderx2t99_asimd_load1_2_mult): Delete.
738 (thunderx2t99_asimd_load1_ldp): New.
739 (thunderx2t99_asimd_load1): New.
740 (thunderx2t99_asimd_load2): Add missing *load2* types.
741 (thunderx2t99_asimd_load3): New.
742 (thunderx2t99_asimd_load4): New.
743 (thunderx2t99_asimd_store1_1_mult): Delete.
744 (thunderx2t99_asimd_store1_2_mult): Delete.
745 (thunderx2t99_asimd_store2_mult): Delete.
746 (thunderx2t99_asimd_store2_onelane): Delete.
747 (thunderx2t99_asimd_store_stp): New.
748 (thunderx2t99_asimd_store1): New.
749 (thunderx2t99_asimd_store2): New.
750 (thunderx2t99_asimd_store3): New.
751 (thunderx2t99_asimd_store4): New.
752
753 2018-05-17 Jerome Lambourg <lambourg@adacore.com>
754
755 * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
756 #include <stdint.h>. Replace intptr_t with __INTPTR_TYPE__.
757
758 2018-05-17 Pat Haugen <pthaugen@us.ibm.com>
759 Segher Boessenkool <segher@kernel.crashing.org>
760
761 PR target/85698
762 * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
763 operand.
764
765 2018-05-17 Richard Biener <rguenther@suse.de>
766
767 * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
768 for pruning loop and prune defs feeding only already visited PHIs.
769
770 2018-05-17 Richard Biener <rguenther@suse.de>
771
772 * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
773
774 2018-05-17 Bin Cheng <bin.cheng@arm.com>
775 Richard Biener <rguenther@suse.de>
776
777 PR tree-optimization/85793
778 * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
779 for VMAT_ELEMENTWISE.
780
781 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
782
783 * internal-fn.h (lookup_internal_fn): Declare
784 * internal-fn.c (lookup_internal_fn): New function.
785 * gimple.c (gimple_build_call_from_tree): Handle calls to
786 internal functions.
787 * gimple-pretty-print.c (dump_gimple_call): Print "." before
788 internal function names.
789 * tree-pretty-print.c (dump_generic_node): Likewise.
790 * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
791
792 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
793
794 * gimple-fold.h (gimple_build): Make the function forms take
795 combined_fn rather than built_in_function.
796 (gimple_simplify): Likewise.
797 * gimple-match-head.c (gimple_simplify): Likewise.
798 * gimple-fold.c (gimple_build): Likewise.
799 * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
800 rather than gimple_build_call_internal.
801 (get_initial_defs_for_reduction): Likewise.
802 (vect_create_epilog_for_reduction): Likewise.
803 (vectorizable_live_operation): Likewise.
804
805 2018-05-17 Martin Liska <mliska@suse.cz>
806
807 * gimple-ssa-sprintf.c (format_directive): Do not use
808 space in between 'G_' and '('.
809
810 2018-05-17 Jakub Jelinek <jakub@redhat.com>
811
812 PR target/85323
813 * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
814 even if the mask is not all ones.
815
816 PR target/85323
817 * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
818 vector.
819 (ix86_gimple_fold_builtin): Likewise.
820
821 PR target/85323
822 * config/i386/i386.c: Include tree-vector-builder.h.
823 (ix86_vector_shift_count): New function.
824 (ix86_fold_builtin): Fold shift builtins by scalar count.
825 (ix86_gimple_fold_builtin): Likewise.
826
827 * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
828 _mm512_setzero): New intrinsics.
829
830 2018-05-17 James Greenhalgh <james.greenhalgh@arm.com>
831 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
832
833 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
834 code generation for cases where splatting a value is not useful.
835 * simplify-rtx.c (simplify_ternary_operation): Simplify
836 vec_merge across a vec_duplicate and a paradoxical subreg forming a vector
837 mode to a vec_concat.
838
839 2018-05-17 Olga Makhotina <olga.makhotina@intel.com>
840
841 * config.gcc: Support "goldmont-plus".
842 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
843 "goldmont-plus".
844 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
845 PROCESSOR_GOLDMONT_PLUS.
846 * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
847 (processor_target_table): Add "goldmont-plus".
848 (PTA_GOLDMONT_PLUS): Define.
849 (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
850 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
851 (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
852 (fold_builtin_cpu): Add "goldmont-plus".
853 (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
854 (ix86_option_override_internal): Add "goldmont-plus".
855 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
856 (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
857 * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
858 * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
859
860 2018-05-17 Richard Biener <rguenther@suse.de>
861
862 PR tree-optimization/85757
863 * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
864 remove defs that only feed that PHI from further processing.
865
866 2018-05-16 Jim Wilson <jimw@sifive.com>
867
868 * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
869 asterisk to name.
870 (<optab>di3_mask, <optab>di3_mask_1): Likewise.
871
872 2018-05-16 Mark Wielaard <mark@klomp.org>
873
874 * dwarf2out.c (count_index_strings): New function.
875 (output_indirect_strings): Call count_index_strings and generate
876 header for dwarf_version >= 5.
877
878 2018-05-16 Mark Wielaard <mark@klomp.org>
879
880 * dwarf2out.c (dwarf_FORM): New function.
881 (set_indirect_string): Use dwarf_FORM.
882 (reset_indirect_string): Likewise.
883 (size_of_die): Likewise.
884 (value_format): Likewise.
885 (output_die): Likewise.
886 (add_skeleton_AT_string): Likewise.
887 (output_macinfo_op): Likewise.
888 (index_string): Likewise.
889 (output_index_string_offset): Likewise.
890 (output_index_string): Likewise.
891 (count_index_strings): Likewise.
892
893 2018-05-16 Carl Love <cel@us.ibm.com>
894
895 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
896 dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
897
898 2018-05-16 Martin Jambor <mjambor@suse.cz>
899
900 * ipa-prop.c (ipa_free_all_edge_args): Remove.
901 * ipa-prop.h (ipa_free_all_edge_args): Likewise.
902
903 2018-05-16 Wilco Dijkstra <wdijkstr@arm.com>
904
905 * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
906 (fnma<mode>4): Likewise.
907 (fms<mode>4): Likewise.
908 (fnms<mode>4): Likewise.
909 (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
910 (aarch64_fnma<mode>4): Likewise.
911 (aarch64_fms<mode>4): Likewise.
912 (aarch64_fnms<mode>4): Likewise.
913 (aarch64_fnmadd<mode>4): Likewise.
914
915 2018-05-16 Jason Merrill <jason@redhat.com>
916
917 * tree.c (warn_deprecated_use): Return bool. Simplify logic.
918
919 2018-05-16 Richard Biener <rguenther@suse.de>
920
921 * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
922 (dump_stmt_cost): Declare.
923 (add_stmt_cost): Dump cost we add.
924 (add_stmt_costs): New function.
925 (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
926 No longer exported.
927 (vect_analyze_stmt): Adjust prototype.
928 (vectorizable_condition): Likewise.
929 (vectorizable_live_operation): Likewise.
930 (vectorizable_reduction): Likewise.
931 (vectorizable_induction): Likewise.
932 * tree-vect-loop.c (vect_analyze_loop_operations): Create local
933 cost vector to pass to vectorizable_ and record afterwards.
934 (vect_model_reduction_cost): Take cost vector argument and adjust.
935 (vect_model_induction_cost): Likewise.
936 (vectorizable_reduction): Likewise.
937 (vectorizable_induction): Likewise.
938 (vectorizable_live_operation): Likewise.
939 * tree-vect-slp.c (vect_create_new_slp_node): Initialize
940 SLP_TREE_NUMBER_OF_VEC_STMTS.
941 (vect_analyze_slp_cost_1): Remove.
942 (vect_analyze_slp_cost): Likewise.
943 (vect_slp_analyze_node_operations): Take visited args and
944 a target cost vector. Avoid processing already visited stmt sets.
945 (vect_slp_analyze_operations): Use a local cost vector to gather
946 costs and register those of non-discarded instances.
947 (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
948 (vect_schedule_slp_instance): Remove copying of
949 SLP_TREE_NUMBER_OF_VEC_STMTS. Instead assert that it is not
950 zero.
951 * tree-vect-stmts.c (record_stmt_cost): Remove path directly
952 adding cost. Record cost entry location.
953 (vect_prologue_cost_for_slp_op): Function to compute cost of
954 a constant or invariant generated for SLP vect in the prologue,
955 split out from vect_analyze_slp_cost_1.
956 (vect_model_simple_cost): Make static. Adjust for SLP costing.
957 (vect_model_promotion_demotion_cost): Likewise.
958 (vect_model_store_cost): Likewise, make static.
959 (vect_model_load_cost): Likewise.
960 (vectorizable_bswap): Add cost vector arg and adjust.
961 (vectorizable_call): Likewise.
962 (vectorizable_simd_clone_call): Likewise.
963 (vectorizable_conversion): Likewise.
964 (vectorizable_assignment): Likewise.
965 (vectorizable_shift): Likewise.
966 (vectorizable_operation): Likewise.
967 (vectorizable_store): Likewise.
968 (vectorizable_load): Likewise.
969 (vectorizable_condition): Likewise.
970 (vectorizable_comparison): Likewise.
971 (can_vectorize_live_stmts): Likewise.
972 (vect_analyze_stmt): Likewise.
973 (vect_transform_stmt): Adjust calls to vectorizable_*.
974 * tree-vectorizer.c: Include gimple-pretty-print.h.
975 (dump_stmt_cost): New function.
976
977 2018-05-16 Richard Biener <rguenther@suse.de>
978
979 * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
980 * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
981 * tree-ssa-dse.c: Include tree-ssa-loop.h.
982 (check_name): New callback.
983 (dse_classify_store): Track cycles via a visited bitmap of PHI
984 defs and simplify handling of in-loop and across loop dead stores
985 and properly fail for loop-variant refs. Handle byte-tracking with
986 multiple defs. Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
987 limiting the walk.
988
989 2018-05-16 Richard Sandiford <richard.sandiford@linaro.org>
990
991 * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
992 (vect_get_mask_type_for_stmt): Likewise.
993 * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
994 split out from...
995 (vect_build_slp_tree_1): ...here. Use vect_get_vector_types_for_stmt
996 to determine the statement's vector type and the vector type that
997 should be used for calculating nunits. Deal with cases in which
998 the type has to be deferred.
999 (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
1000 and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
1001 * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
1002 (vect_determine_vf_for_stmt): New functions, split out from...
1003 (vect_determine_vectorization_factor): ...here.
1004 * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
1005 (vect_get_mask_type_for_stmt): New functions, split out from
1006 vect_determine_vectorization_factor.
1007
1008 2018-05-16 Richard Biener <rguenther@suse.de>
1009
1010 * tree-cfg.c (verify_gimple_assign_ternary): Properly
1011 verify the [VEC_]COND_EXPR embedded comparison.
1012
1013 2018-05-15 Martin Sebor <msebor@redhat.com>
1014
1015 PR tree-optimization/85753
1016 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
1017 RECORD_TYPE in addition to ARRAY_TYPE.
1018
1019 2018-05-15 Martin Sebor <msebor@redhat.com>
1020
1021 PR middle-end/85643
1022 * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
1023
1024 2018-05-15 Richard Biener <rguenther@suse.de>
1025
1026 * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
1027 add by_clobber_p one. Change algorithm to collect all defs
1028 representing uses we need to walk and try reducing them to
1029 a single one before failing.
1030 (dse_dom_walker::dse_optimize_stmt): Adjust.
1031
1032 2018-05-13 Mark Wielaard <mark@klomp.org>
1033
1034 * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
1035 (size_of_loc_descr): Likewise.
1036 (output_loc_operands): Likewise.
1037 (output_loc_operands_raw): Likewise.
1038 (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
1039 (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
1040 (hash_loc_operands): Likewise.
1041 (compare_loc_operands): Likewise.
1042
1043 2018-05-14 Mark Wielaard <mark@klomp.org>
1044
1045 * dwarf2out.c (count_index_addrs): New function.
1046 (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
1047
1048 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1049
1050 PR tree-optimization/83648
1051 * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
1052 return value as malloc candidate.
1053
1054 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1055
1056 PR ipa/85734
1057 * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param
1058 as true in call to suggest_attribute.
1059
1060 2018-05-14 Segher Boessenkool <segher@kernel.crashing.org>
1061
1062 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
1063 -mreadonly-in-sdata.
1064
1065 2018-05-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1066
1067 * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
1068 New pattern.
1069 (aarch64_crypto_aesd_fused): Likewise.
1070
1071 2018-05-14 Wilco Dijkstra <wdijkstr@arm.com>
1072
1073 * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
1074 (movsi_aarch64): Likewise.
1075 (load_pairsi): Likewise.
1076 (load_pairdi): Likewise.
1077 (store_pairsi): Likewise.
1078 (store_pairdi): Likewise.
1079 (load_pairsf): Likewise.
1080 (load_pairdf): Likewise.
1081 (store_pairsf): Likewise.
1082 (store_pairdf): Likewise.
1083 (zero_extend): Likewise.
1084 (trunc): Swap alternatives.
1085 (fcvt_target): Add '?' to prefer w over r.
1086
1087 2018-05-14 Jakub Jelinek <jakub@redhat.com>
1088
1089 PR target/85756
1090 * config/i386/i386.md: Disallow non-commutative arithmetics in
1091 last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
1092 optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS
1093 in the peephole2 before it.
1094
1095 2018-05-14 Sebastian Peryt <sebastian.peryt@intel.com>
1096
1097 * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
1098 OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
1099 (ix86_handle_option): Handle -mcldemote.
1100 * config.gcc: New header.
1101 * config/i386/cldemoteintrin.h: New file.
1102 * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
1103 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
1104 -mcldemote.
1105 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1106 OPTION_MASK_ISA_CLDEMOTE.
1107 * config/i386/i386.c (ix86_target_string): Add -mcldemote.
1108 (ix86_valid_target_attribute_inner_p): Ditto.
1109 (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
1110 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
1111 (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
1112 * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
1113 * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
1114 (cldemote): New.
1115 * config/i386/i386.opt: Add -mcldemote.
1116 * config/i386/x86intrin.h: New header.
1117 * doc/invoke.texi: Add -mcldemote.
1118
1119 2018-05-14 Richard Biener <rguenther@suse.de>
1120
1121 * doc/match-and-simplify.texi: Adjust :s documentation.
1122
1123 2018-05-14 Alexander Monakov <amonakov@ispras.ru>
1124
1125 * sort.cc (REORDER_23): Pass the type for the temporaries instead of
1126 intended memcpy size.
1127 (REORDER_45): Likewise.
1128
1129 2018-05-13 Alexander Monakov <amonakov@ispras.ru>
1130
1131 * sort.cc: New file.
1132 * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
1133 * vec.c (qsort_chk): Use gcc_qsort.
1134 * Makefile.in (OBJS-libcommon): Add sort.o.
1135 (build/sort.o): New target. Use it...
1136 (BUILD_RTL): ... here, and...
1137 (build/gencfn-macros): ... here, and...
1138 (build/genmatch): ... here.
1139
1140 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
1141 Chung-Ju Wu <jasonwucj@gmail.com>
1142
1143 * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
1144 * config/nds32/nds32-graywolf.md: New file.
1145 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
1146 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
1147 pipeline.
1148 * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
1149 * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
1150 * config/nds32/nds32.md (pipeline_model): Add graywolf.
1151 * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
1152 * config/nds32/pipelines.md: Include n15 settings.
1153
1154 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
1155 Chung-Ju Wu <jasonwucj@gmail.com>
1156
1157 * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
1158 * config/nds32/nds32-n13.md: New file.
1159 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
1160 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
1161 pipeline.
1162 * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
1163 * config/nds32/nds32.md (pipeline_model): Add n13.
1164 * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
1165 * config/nds32/pipelines.md: Include n13 settings.
1166
1167 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
1168 Chung-Ju Wu <jasonwucj@gmail.com>
1169
1170 * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
1171 * config/nds32/nds32-n10.md: New file.
1172 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
1173 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
1174 pipeline.
1175 * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
1176 * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
1177 * config/nds32/nds32.md (pipeline_model): Add n10.
1178 * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
1179 * config/nds32/pipelines.md: Include n10 settings.
1180
1181 2018-05-13 Monk Chiang <sh.chiang04@gmail.com>
1182 Kito Cheng <kito.cheng@gmail.com>
1183 Chung-Ju Wu <jasonwucj@gmail.com>
1184
1185 * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
1186 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
1187 Add enum values for DSP extension instructions.
1188 * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
1189 New constraints.
1190 * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
1191 sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
1192 New code iterators.
1193 (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
1194 * config/nds32/nds32-dspext.md: New file for DSP implementation.
1195 * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
1196 * config/nds32/nds32-intrinsic.md: Likewise.
1197 * config/nds32/nds32_intrinsic.h: Likewise.
1198 * config/nds32/nds32-md-auxiliary.c: Likewise.
1199 * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
1200 * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
1201 (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
1202 (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
1203 * config/nds32/nds32-protos.h: New declarations for DSP extension.
1204 * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
1205 TYPE_DMAC in switch statement.
1206 * config/nds32/nds32.c: New checking and implementation for DSP
1207 extension instructions.
1208 * config/nds32/nds32.h: Likewise.
1209 * config/nds32/nds32.md: Likewise.
1210 * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
1211 * config/nds32/predicates.md: Implement new predicates for DSP
1212 extension.
1213
1214 2018-05-11 Michael Meissner <meissner@linux.vnet.ibm.com>
1215
1216 * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
1217 Reformat alternatives and attributes so it is easier to identify
1218 which constraints/attributes go with which instruction.
1219 (mov<mode>_hardfloat32, FMOVE64): Likewise.
1220 (mov<mode>_softfloat32, FMOVE64): Likewise.
1221 (mov<mode>_hardfloat64, FMOVE64): Likewise.
1222 (mov<mode>_softfloat64, FMOVE64): Likewise.
1223
1224 2018-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
1225
1226 * doc/extend.texi (PowerPC Built-in Functions): Rename this
1227 subsection.
1228 (Basic PowerPC Built-in Functions): The new name of the
1229 subsection previously known as "PowerPC Built-in Functions".
1230 (Basic PowerPC Built-in Functions Available on all Configurations):
1231 New subsubsection.
1232 (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
1233 (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
1234 (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
1235 (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
1236
1237 2018-05-11 Martin Jambor <mjambor@suse.cz>
1238
1239 PR ipa/85655
1240 * ipa-cp.c (intersect_with_plats): Check that the lattice contains
1241 single const.
1242
1243 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
1244
1245 PR target/85733
1246 * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
1247
1248 2018-05-11 Sebastian Peryt <sebastian.peryt@intel.com>
1249
1250 * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
1251 OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
1252 (ix86_handle_option): Handle -mwaitpkg.
1253 * config.gcc: New header.
1254 * config/i386/cpuid.h (bit_WAITPKG): New bit.
1255 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
1256 * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
1257 function type.
1258 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1259 OPTION_MASK_ISA_WAITPKG.
1260 * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
1261 (ix86_option_override_internal): Add PTA_WAITPKG.
1262 (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
1263 (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
1264 IX86_BUILTIN_TPAUSE.
1265 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
1266 __builtin_ia32_umwait and __builtin_ia32_tpause.
1267 (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
1268 IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
1269 * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
1270 * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
1271 UNSPECV_TPAUSE): New.
1272 (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
1273 * config/i386/i386.opt: Add -mwaitpkg.
1274 * config/i386/waitpkgintrin.h: New file.
1275 * config/i386/x86intrin.h: New header.
1276 * doc/invoke.texi: Add -mwaitpkg.
1277
1278 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
1279
1280 PR target/85606
1281 * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
1282 equivalent.
1283 (cortex-m0): Use armv6s-m isa.
1284 (cortex-m0plus): Likewise.
1285 (cortex-m1): Likewise.
1286 (cortex-m0.small-multiply): Likewise.
1287 (cortex-m0plus.small-multiply): Likewise.
1288 (cortex-m1.small-multiply): Likewise.
1289
1290 2018-05-11 Allan Sandfeld Jensen <allan.jensen@qt.io>
1291 Jakub Jelinek <jakub@redhat.com>
1292
1293 PR tree-optimization/85692
1294 * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
1295 source permute as well.
1296
1297 2018-05-11 Martin Liska <mliska@suse.cz>
1298
1299 PR sanitizer/85556
1300 * doc/extend.texi: Document LLVM style format for no_sanitize
1301 attribute.
1302
1303 2018-05-10 Michael Meissner <meissner@linux.vnet.ibm.com>
1304
1305 * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
1306 mode_supports_vsx_dform_quad to mode_supports_dq_form.
1307 (mode_supports_vsx_dform_quad): Likewise.
1308 (mode_supports_vmx_dform): Move these functions to be next to the
1309 other mode_supports functions.
1310 (mode_supports_dq_form): Likewise.
1311 (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
1312 mode_supports_dq_form.
1313 (reg_offset_addressing_ok_p): Likewise.
1314 (offsettable_ok_by_alignment): Likewise.
1315 (rs6000_legitimate_offset_address_p): Likewise.
1316 (legitimate_lo_sum_address_p): Likewise.
1317 (rs6000_legitimize_address): Likewise.
1318 (rs6000_legitimize_reload_address): Likewise.
1319 (rs6000_secondary_reload_inner): Likewise.
1320 (rs6000_preferred_reload_class): Likewise.
1321 (rs6000_output_move_128bit): Likewise.
1322
1323 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
1324
1325 * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
1326 Generate SImode target register for null target.
1327 <case IX86_BUILTIN_XGETBV>: Ditto.
1328 <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
1329 * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
1330
1331 2018-05-10 Carl Love <cel@us.ibm.com>
1332
1333 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
1334 dcbtt and dcbtstt if operands[2] is 0.
1335
1336 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
1337
1338 PR target/85693
1339 * config/i386/sse.md (usadv64qi): New expander.
1340
1341 2018-05-10 Segher Boessenkool <segher@kernel.crashing.org>
1342
1343 * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
1344 altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
1345 -maltivec=be support.
1346 (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
1347 vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
1348 vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
1349 vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
1350 vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
1351 vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
1352 altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
1353 altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
1354 altivec_vsumsws): Adjust.
1355 (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
1356 *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
1357 altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
1358 support.
1359 (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
1360 altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
1361 altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
1362 (altivec_lve<VI_char>x): Delete expand.
1363 (*altivec_lve<VI_char>x_internal): Rename to...
1364 (altivec_lve<VI_char>x): ... this.
1365 (altivec_lvxl_<mode>): Delete expand.
1366 (*altivec_lvxl_<mode>_internal): Rename to ...
1367 (altivec_lvxl_<mode>): ... this.
1368 (altivec_stvxl_<mode>): Delete expand.
1369 (*altivec_stvxl_<mode>_internal): Rename to ...
1370 (altivec_stvxl_<mode>): ... this.
1371 (altivec_stve<VI_char>x): Delete expand.
1372 (*altivec_stve<VI_char>x_internal): Rename to ...
1373 (altivec_stve<VI_char>x): ... this.
1374 (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
1375 doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
1376 reduc_plus_scal_<mode>): Adjust.
1377 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
1378 comment.
1379 (rs6000_cpu_cpp_builtins): Adjust.
1380 (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
1381 * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
1382 altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
1383 * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
1384 -maltivec=be support.
1385 (rs6000_split_vec_extract_var): Adjust.
1386 (rs6000_split_v4si_init): Adjust.
1387 (swap_selector_for_mode): Delete.
1388 (altivec_expand_lvx_be, altivec_expand_stvx_be,
1389 altivec_expand_stvex_be): Delete.
1390 (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
1391 -maltivec=be support.
1392 (rs6000_gimple_fold_builtin): Ditto.
1393 (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
1394 Adjust.
1395 * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
1396 (TARGET_DIRECT_MOVE_64BIT): Adjust.
1397 * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
1398 * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
1399 * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
1400 unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
1401 vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
1402 *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
1403 *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
1404 *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
1405 anonymous split): Adjust.
1406 (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
1407 (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
1408
1409 2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
1410
1411 * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
1412 when --with-gxx-include-dir is also specified.
1413 * configure: Regenerate.
1414
1415 2018-05-09 Jim Wilson <jimw@sifive.com>
1416
1417 PR target/84797
1418 * config.gcc (riscv*-*-*): Handle --with-multilib-list.
1419 * config/riscv/t-withmultilib: New.
1420 * config/riscv/withmultilib.h: New.
1421 * doc/install.texi: Document RISC-V --with-multilib-list support.
1422
1423 2018-05-09 Richard Biener <rguenther@suse.de>
1424
1425 * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
1426 vector.
1427 (vect_bb_vectorization_profitable_p): Adjust. Compute
1428 actual scalar cost using the cost vector and the add_stmt_cost
1429 machinery.
1430
1431 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1432
1433 PR rtl-optimization/85645
1434 * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
1435 in the REG_CFA_REGISTER note for LR, don't leave it empty.
1436
1437 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1438
1439 PR rtl-optimization/85645
1440 * shrink-wrap.c (spread_components): Return a boolean saying if
1441 anything was changed.
1442 (try_shrink_wrapping_separate): Iterate spread_components until
1443 nothing changes anymore.
1444
1445 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1446
1447 PR rtl-optimization/85645
1448 * regrename.c (build_def_use): Also kill the chains that include the
1449 destination of a REG_CFA_REGISTER note.
1450
1451 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1452
1453 PR rtl-optimization/85645
1454 * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
1455 insn that has a REG_CFA_REGISTER note.
1456
1457 2018-05-09 Richard Sandiford <richard.sandiford@linaro.org>
1458
1459 * cfgexpand.c (expand_clobber): New function.
1460 (expand_gimple_stmt_1): Use it.
1461 * tree-vect-stmts.c (vect_clobber_variable): New function,
1462 split out from...
1463 (vectorizable_simd_clone_call): ...here.
1464 (vectorizable_store): Emit a clobber either side of an
1465 IFN_STORE_LANES sequence.
1466 (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
1467
1468 2018-05-09 Tom de Vries <tom@codesourcery.com>
1469
1470 PR target/85626
1471 * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
1472 (define_insn "trap_if_false"): Add exit after trap.
1473
1474 2018-05-09 Eric Botcazou <ebotcazou@adacore.com>
1475
1476 PR rtl-optimization/85638
1477 * bb-reorder.c: Include common/common-target.h.
1478 (create_forwarder_block): New function extracted from...
1479 (fix_up_crossing_landing_pad): ...here. Rename into...
1480 (dw2_fix_up_crossing_landing_pad): ...this.
1481 (sjlj_fix_up_crossing_landing_pad): New function.
1482 (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
1483 call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
1484 from both partitions and exit the loop after one iteration.
1485
1486 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
1487
1488 Revert:
1489 * doc/extend.texi (PowerPC Built-in Functions): Rename this
1490 subsection.
1491 (Basic PowerPC Built-in Functions): The new name of the
1492 subsection previously known as "PowerPC Built-in Functions".
1493 (Basic PowerPC Built-in Functions Available on all Configurations):
1494 New subsubsection.
1495 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
1496 subsubsection.
1497 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
1498 subsubsection.
1499 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
1500 subsubsection.
1501 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
1502 subsubsection.
1503
1504 2018-05-08 Jim Wilson <jimw@sifive.com>
1505
1506 * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
1507 (LD_EMUL_SUFFIX): New.
1508 (LINK_SPEC): Use it.
1509
1510 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
1511
1512 * doc/extend.texi (PowerPC Built-in Functions): Rename this
1513 subsection.
1514 (Basic PowerPC Built-in Functions): The new name of the
1515 subsection previously known as "PowerPC Built-in Functions".
1516 (Basic PowerPC Built-in Functions Available on all Configurations):
1517 New subsubsection.
1518 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
1519 subsubsection.
1520 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
1521 subsubsection.
1522 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
1523 subsubsection.
1524 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
1525 subsubsection.
1526
1527 2018-05-08 Jakub Jelinek <jakub@redhat.com>
1528
1529 PR target/85683
1530 * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
1531 after cmpelim optimization.
1532
1533 2018-05-08 Olga Makhotina <olga.makhotina@intel.com>
1534
1535 * config.gcc: Support "goldmont".
1536 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
1537 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1538 PROCESSOR_GOLDMONT.
1539 * config/i386/i386.c (m_GOLDMONT): Define.
1540 (processor_target_table): Add "goldmont".
1541 (PTA_GOLDMONT): Define.
1542 (ix86_lea_outperforms): Add TARGET_GOLDMONT.
1543 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
1544 (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
1545 (fold_builtin_cpu): Add "goldmont".
1546 (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
1547 (ix86_option_override_internal): Add "goldmont".
1548 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
1549 (processor_type): Add PROCESSOR_GOLDMONT.
1550 * config/i386/i386.md: Add CPU "glm".
1551 * config/i386/glm.md: New file.
1552 * config/i386/x86-tune.def: Add m_GOLDMONT.
1553 * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
1554
1555 2018-05-08 Jakub Jelinek <jakub@redhat.com>
1556
1557 PR target/85572
1558 * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
1559 E_V4DImode.
1560 * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
1561 VI1248_AVX512VL_AVX512BW. Handle V2DImode and V4DImode if not
1562 TARGET_AVX512VL using ix86_expand_sse2_abs. Formatting fixes.
1563
1564 PR target/85317
1565 * config/i386/i386.c (ix86_fold_builtin): Handle
1566 IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
1567
1568 PR target/85480
1569 * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
1570 (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
1571
1572 2018-05-08 Richard Earnshaw <rearnsha@arm.com>
1573
1574 PR target/85658
1575 * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
1576 (check_arch): Likewise.
1577 (check_fpu): Return the result rather than printing it.
1578 (end arch): Fix operator precedence.
1579 (end cpu): Likewise.
1580 (END): Print the result from check_fpu.
1581
1582 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
1583 Alan Hayward <alan.hayward@arm.com>
1584 David Sherwood <david.sherwood@arm.com>
1585
1586 * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
1587 (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
1588 (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
1589 (*fcmuo<mode>_and): New patterns.
1590
1591 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
1592
1593 * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
1594 (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
1595 (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
1596 (cmp_op, sve_imm_con): New code attributes.
1597 (SVE_COND_INT_CMP, imm_con): Delete.
1598 (cmp_op): Remove above unspecs from int attribute.
1599 * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
1600 to...
1601 (*cmp<cmp_op><mode>): ...this. Use UNSPEC_MERGE_PTRUE instead of
1602 comparison-specific unspecs.
1603 (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
1604 (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
1605 (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
1606 (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
1607 (*vec_fcm<cmp_op><mode>): Rename to...
1608 (*fcm<cmp_op><mode>): ...this and adjust likewise.
1609 (*vec_fcmuo<mode>): Rename to...
1610 (*fcmuo<mode>): ...this and adjust likewise.
1611 (*pred_fcm<cmp_op><mode>): New pattern.
1612 * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
1613 (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
1614 functions.
1615 (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
1616 and UNORDERED.
1617 (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
1618 (aarch64_emit_sve_predicated_cond): New function.
1619 (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
1620 (aarch64_emit_unspec_cond_or): Replace with...
1621 (aarch64_emit_sve_or_conds): ...this new function. Use
1622 aarch64_emit_sve_ptrue_op for the individual comparisons and
1623 aarch64_emit_binop to OR them together.
1624 (aarch64_emit_inverted_unspec_cond): Replace with...
1625 (aarch64_emit_sve_inverted_cond): ...this new function. Use
1626 aarch64_emit_sve_ptrue_op for the comparison and
1627 aarch64_emit_unop to invert the result.
1628 (aarch64_expand_sve_vec_cmp_float): Update after the above
1629 changes. Use aarch64_emit_sve_ptrue_op for native comparisons.
1630
1631 2018-05-07 Nathan Sidwell <nathan@acm.org>
1632
1633 * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
1634 * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
1635 (Backwards Compatibility): Likewise.
1636
1637 2018-05-07 Luis Machado <luis.machado@linaro.org>
1638
1639 PR bootstrap/85681
1640 Revert:
1641 2018-05-07 Luis Machado <luis.machado@linaro.org>
1642
1643 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1644 <prefetch_dynamic_strides>: New const bool field.
1645 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1646 prefetch_dynamic_strides.
1647 (exynosm1_prefetch_tune): Likewise.
1648 (thunderxt88_prefetch_tune): Likewise.
1649 (thunderx_prefetch_tune): Likewise.
1650 (thunderx2t99_prefetch_tune): Likewise.
1651 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
1652 (aarch64_override_options_internal): Update to set
1653 PARAM_PREFETCH_DYNAMIC_STRIDES.
1654 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1655 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1656 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1657 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1658 prefetch-dynamic-strides setting.
1659
1660 2018-05-07 Luis Machado <luis.machado@linaro.org>
1661
1662 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1663 <minimum_stride>: New const int field.
1664 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1665 minimum_stride field.
1666 (exynosm1_prefetch_tune): Likewise.
1667 (thunderxt88_prefetch_tune): Likewise.
1668 (thunderx_prefetch_tune): Likewise.
1669 (thunderx2t99_prefetch_tune): Likewise.
1670 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
1671 (aarch64_override_options_internal): Update to set
1672 PARAM_PREFETCH_MINIMUM_STRIDE.
1673 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1674 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1675 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1676 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1677 stride is constant and is below the minimum stride threshold.
1678
1679 2018-05-07 Luis Machado <luis.machado@linaro.org>
1680
1681 * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
1682 to 512.
1683
1684 2018-05-07 Luis Machado <luis.machado@linaro.org>
1685
1686 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1687 <prefetch_dynamic_strides>: New const bool field.
1688 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1689 prefetch_dynamic_strides.
1690 (exynosm1_prefetch_tune): Likewise.
1691 (thunderxt88_prefetch_tune): Likewise.
1692 (thunderx_prefetch_tune): Likewise.
1693 (thunderx2t99_prefetch_tune): Likewise.
1694 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
1695 (aarch64_override_options_internal): Update to set
1696 PARAM_PREFETCH_DYNAMIC_STRIDES.
1697 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1698 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1699 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1700 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1701 prefetch-dynamic-strides setting.
1702
1703 2018-05-07 Luis Machado <luis.machado@linaro.org>
1704
1705 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1706 <minimum_stride>: New const int field.
1707 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1708 minimum_stride field.
1709 (exynosm1_prefetch_tune): Likewise.
1710 (thunderxt88_prefetch_tune): Likewise.
1711 (thunderx_prefetch_tune): Likewise.
1712 (thunderx2t99_prefetch_tune): Likewise.
1713 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
1714 (aarch64_override_options_internal): Update to set
1715 PARAM_PREFETCH_MINIMUM_STRIDE.
1716 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1717 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1718 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1719 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1720 stride is constant and is below the minimum stride threshold.
1721
1722 2018-05-06 Jakub Jelinek <jakub@redhat.com>
1723
1724 PR c++/85659
1725 * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
1726 the type is addressable. Don't force op into register if it has
1727 BLKmode.
1728
1729 2018-05-05 Roland McGrath <mcgrathr@google.com>
1730
1731 PR other/77609
1732 * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
1733 any section for which we don't know a specific type it should have,
1734 regardless of name. Previously this was done only for the exact
1735 names ".init_array", ".fini_array", and ".preinit_array".
1736 (default_elf_asm_named_section): Add comment about
1737 relationship with default_section_type_flags and SECTION_NOTYPE.
1738 (get_section): Don't consider it a type conflict if one side has
1739 SECTION_NOTYPE and the other doesn't, as long as neither has the
1740 SECTION_BSS et al used in the default_section_type_flags logic.
1741
1742 2018-05-05 Tom de Vries <tom@codesourcery.com>
1743
1744 PR target/85653
1745 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
1746 (workaround_barsyncs): New function.
1747 (nvptx_reorg): Use workaround_barsyncs.
1748 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
1749 (define_expand "nvptx_membar_cta"): New define_expand.
1750 (define_insn "*nvptx_membar_cta"): New insn.
1751
1752 2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
1753
1754 * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
1755 To improve optimization opportunities.
1756 * builtin-types.def: The new needed builtin types for the above.
1757
1758 2018-05-04 Richard Biener <rguenther@suse.de>
1759
1760 * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
1761 * gimple-ssa-store-merging.c
1762 (imm_store_chain_info::output_merged_store): Remove redundant create,
1763 release split_store vector contents on failure.
1764 * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
1765 scalar stmt vector on cache hit.
1766
1767 2018-05-04 Segher Boessenkool <segher@kernel.crashing.org>
1768
1769 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
1770 Xilinx FP support.
1771 * config.gcc (powerpc-xilinx-eabi*): Remove.
1772 * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
1773 support.
1774 (fusion_addis_mem_combo_load): Ditto.
1775 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
1776 FP support.
1777 (rs6000_cpu_cpp_builtins): Ditto.
1778 * config/rs6000/rs6000-linux.c
1779 (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
1780 * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
1781 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
1782 support.
1783 (rs6000_setup_reg_addr_masks): Ditto.
1784 (rs6000_init_hard_regno_mode_ok): Ditto.
1785 (rs6000_option_override_internal): Ditto.
1786 (legitimate_lo_sum_address_p): Ditto.
1787 (rs6000_legitimize_address): Ditto.
1788 (rs6000_legitimize_reload_address): Ditto.
1789 (rs6000_legitimate_address_p): Ditto.
1790 (abi_v4_pass_in_fpr): Ditto.
1791 (setup_incoming_varargs): Ditto.
1792 (rs6000_gimplify_va_arg): Ditto.
1793 (rs6000_split_multireg_move): Ditto.
1794 (rs6000_savres_strategy): Ditto.
1795 (rs6000_emit_prologue_components): Ditto.
1796 (rs6000_emit_epilogue_components): Ditto.
1797 (rs6000_emit_prologue): Ditto.
1798 (rs6000_emit_epilogue): Ditto.
1799 (rs6000_elf_file_end): Ditto.
1800 (rs6000_function_value): Ditto.
1801 (rs6000_libcall_value): Ditto.
1802 * config/rs6000/rs6000.h: Ditto.
1803 (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
1804 (TARGET_MINMAX): ... this. New.
1805 (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
1806 * config/rs6000/rs6000.md: Remove Xilinx FP support.
1807 (*movsi_internal1_single): Delete.
1808 * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
1809 mfpu=, mxilinx-fpu): Delete.
1810 * config/rs6000/singlefp.h: Delete.
1811 * config/rs6000/sysv4.h: Remove Xilinx FP support.
1812 * config/rs6000/t-rs6000: Ditto.
1813 * config/rs6000/t-xilinx: Delete.
1814 * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
1815 * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
1816 (VStype_simple): Delete.
1817 (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
1818 * config/rs6000/xfpu.h: Delete.
1819 * config/rs6000/xfpu.md: Delete.
1820 * config/rs6000/xilinx.h: Delete.
1821 * config/rs6000/xilinx.opt: Delete.
1822 * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
1823 -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
1824
1825 2018-05-04 Tom de Vries <tom@codesourcery.com>
1826
1827 PR libgomp/85639
1828 * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
1829 if ignore == 0.
1830
1831 2018-05-04 Richard Biener <rguenther@suse.de>
1832
1833 PR middle-end/85627
1834 * tree-complex.c (update_complex_assignment): We are always in SSA form.
1835 (expand_complex_div_wide): Likewise.
1836 (expand_complex_operations_1): Likewise.
1837 (expand_complex_libcall): Preserve EH info of the original stmt.
1838 (tree_lower_complex): Handle removed blocks.
1839 * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
1840 on complex multiplication and division libcall builtins.
1841
1842 2018-05-04 Richard Biener <rguenther@suse.de>
1843
1844 PR middle-end/85574
1845 * fold-const.c (negate_expr_p): Restrict negation of operand
1846 zero of a division to when we know that can happen without
1847 overflow.
1848 (fold_negate_expr_1): Likewise.
1849
1850 2018-05-04 Jakub Jelinek <jakub@redhat.com>
1851
1852 PR libstdc++/85466
1853 * real.h (real_nextafter): Declare.
1854 * real.c (real_nextafter): New function.
1855 * fold-const-call.c (fold_const_nextafter): New function.
1856 (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
1857 CASE_CFN_NEXTTOWARD.
1858 (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
1859 even when arg1_mode is different from arg0_mode.
1860
1861 2018-05-03 Nathan Sidwell <nathan@acm.org>
1862
1863 * doc/extend.texi (Deprecated Features): Remove
1864 -ffriend-injection.
1865 (Backwards Compatibility): Likewise.
1866 * doc/invoke.texi (C++ Language Options): Likewise.
1867 (C++ Dialect Options): Likewise.
1868
1869 2018-05-03 Jakub Jelinek <jakub@redhat.com>
1870
1871 PR target/85530
1872 * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
1873 _mm512_mask_mullox_epi64): New intrinsics.
1874
1875 2018-05-03 Tom de Vries <tom@codesourcery.com>
1876
1877 PR testsuite/85106
1878 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1879 dump files): Add offload-tree.
1880
1881 2018-05-03 Richard Biener <rguenther@suse.de>
1882
1883 PR tree-optimization/85615
1884 * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
1885 to loops not nested in BBs loop father to avoid creating multi-entry
1886 loops.
1887
1888 2018-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1889
1890 PR tree-optimization/70291
1891 * tree-complex.c (expand_complex_libcall): Add type, inplace_p
1892 arguments. Change return type to tree. Emit libcall as a new
1893 statement rather than replacing existing one when inplace_p is true.
1894 (expand_complex_multiplication_components): New function.
1895 (expand_complex_multiplication): Expand floating-point complex
1896 multiplication using the above.
1897 (expand_complex_division): Rename inner_type parameter to type.
1898 Update expand_complex_libcall call-site.
1899 (expand_complex_operations_1): Update expand_complex_multiplication
1900 and expand_complex_division call-sites.
1901
1902 2018-05-02 Jakub Jelinek <jakub@redhat.com>
1903
1904 PR target/85582
1905 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1906 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1907 *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
1908 the highest significant bit of the shift count mask is clear. In
1909 check whether and[sq]i3 is needed verify that all significant bits
1910 of the shift count other than the highest are set.
1911
1912 2018-05-02 Tom de Vries <tom@codesourcery.com>
1913
1914 PR libgomp/82428
1915 * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
1916 * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
1917 (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
1918 * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
1919 (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
1920 * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
1921 __builtin_goacc_parlevel_size.
1922
1923 2018-05-02 Richard Biener <rguenther@suse.de>
1924
1925 PR tree-optimization/85597
1926 * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
1927 do not use split vect_get_vec_defs call but call vect_get_slp_defs
1928 directly.
1929
1930 2018-05-02 Tom de Vries <tom@codesourcery.com>
1931
1932 PR testsuite/85106
1933 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1934 dump files): Add ltrans-tree.
1935
1936 2018-05-02 Tom de Vries <tom@codesourcery.com>
1937
1938 PR testsuite/85106
1939 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1940 dump files): Add wpa-ipa.
1941
1942 2018-05-02 Segher Boessenkool <segher@kernel.crashing.org>
1943
1944 * config.gcc (powerpc*-*-*): Remove paired.h. Unsupport the
1945 powerpc*-*-linux*paired* target.
1946 * config/rs6000/750cl.h: Delete.
1947 * config/rs6000/paired.h: Delete.
1948 * config/rs6000/paired.md: Delete.
1949 * config/rs6000/predicates.md (easy_vector_constant): Remove paired
1950 float support.
1951 * config/rs6000/rs6000-builtin.def: Remove paired float support.
1952 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
1953 comment. Remove paired float support.
1954 * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
1955 * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
1956 VECTOR_PAIRED.
1957 * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
1958 paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
1959 declarations.
1960 * config/rs6000/rs6000.c: Remove paired float support.
1961 (paired_expand_vector_init, paired_expand_vector_move,
1962 paired_emit_vector_compare, paired_emit_vector_cond_expr,
1963 (paired_expand_lv_builtin, paired_expand_stv_builtin,
1964 paired_expand_builtin, paired_expand_predicate_builtin,
1965 paired_init_builtins): Delete.
1966 * config/rs6000/rs6000.h: Remove paired float support.
1967 * config/rs6000/rs6000.md: Remove paired float support.
1968 (move_from_CR_ov_bit): Delete.
1969 * config/rs6000/rs6000.opt (mpaired): Delete.
1970 * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
1971 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
1972
1973 2018-05-02 Richard Biener <rguenther@suse.de>
1974
1975 PR middle-end/85567
1976 * gimplify.c (gimplify_save_expr): When in SSA form allow
1977 SAVE_EXPRs to compute to SSA vars.
1978
1979 2018-05-02 Jakub Jelinek <jakub@redhat.com>
1980
1981 PR target/85582
1982 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1983 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1984 *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
1985 clobber operands[2], instead use a new pseudo. Formatting fixes.
1986
1987 2018-05-02 Richard Sandiford <richard.sandiford@linaro.org>
1988
1989 PR tree-optimization/85586
1990 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
1991 exit early for statements in the same group if the accesses are
1992 not strided.
1993
1994 2018-05-02 Tom de Vries <tom@codesourcery.com>
1995
1996 PR lto/85451
1997 * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
1998 error message.
1999
2000 2018-05-01 Marc Glisse <marc.glisse@inria.fr>
2001
2002 PR tree-optimization/85143
2003 * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
2004
2005 2018-05-01 Tom de Vries <tom@codesourcery.com>
2006
2007 PR lto/85451
2008 * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
2009 not found" error message.
2010
2011 2018-05-01 Tom de Vries <tom@codesourcery.com>
2012
2013 PR other/83786
2014 * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
2015 * vec.c (test_ordered_remove_if): New function.
2016 (vec_c_tests): Call test_ordered_remove_if.
2017 * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
2018 * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
2019 * tree-vect-patterns.c (vect_pattern_recog_1): Use
2020 VEC_ORDERED_REMOVE_IF.
2021
2022 2018-05-01 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
2023
2024 PR tree-optimization/82665
2025 * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
2026 pointer subtraction where arguments come from a memchr call.
2027
2028 2018-05-01 Jakub Jelinek <jakub@redhat.com>
2029
2030 * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
2031 --push-state --as-needed and --pop-state instead of --as-needed and
2032 --no-as-needed if ld supports it.
2033 * configure: Regenerated.
2034
2035 PR web/85578
2036 * doc/install.texi2html: Replace _002d with - and _002a with * in
2037 generated html files using sed.
2038
2039 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2040
2041 PR c++/85523
2042 * gcc-rich-location.c (blank_line_before_p): New function.
2043 (use_new_line): New function.
2044 (gcc_rich_location::add_fixit_insert_formatted): New function.
2045 * gcc-rich-location.h
2046 (gcc_rich_location::add_fixit_insert_formatted): New function.
2047
2048 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2049
2050 * selftest.c (assert_streq): Rename "expected" and "actual" to
2051 "val1" and "val2". Extend NULL-handling to cover both inputs
2052 symmetrically, while still requiring both to be non-NULL for a pass.
2053 * selftest.h (assert_streq): Rename "expected" and "actual" to
2054 "val1" and "val2".
2055 (ASSERT_EQ): Likewise.
2056 (ASSERT_EQ_AT): Likewise.
2057 (ASSERT_KNOWN_EQ): Likewise.
2058 (ASSERT_KNOWN_EQ_AT): Likewise.
2059 (ASSERT_NE): Likewise.
2060 (ASSERT_MAYBE_NE): Likewise.
2061 (ASSERT_MAYBE_NE_AT): Likewise.
2062 (ASSERT_STREQ): Likewise. Clarify that both must be non-NULL for
2063 the assertion to pass.
2064 (ASSERT_STREQ_AT): Likewise.
2065
2066 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
2067
2068 * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
2069 interaction with -pie.
2070
2071 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2072
2073 * selftest.h: Fix alphabetization of per-source-file selftest
2074 declarations.
2075
2076 2018-04-30 Jason Merrill <jason@redhat.com>
2077
2078 PR c++/61982 - dead stores to destroyed objects.
2079 * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
2080 of clobber.
2081
2082 2018-04-30 Jason Merrill <jason@redhat.com>
2083
2084 * tree.c (build_clobber): New.
2085 * tree.h: Declare it.
2086 * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
2087
2088 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2089
2090 * diagnostic-show-locus.c (layout::layout): Update for
2091 location_get_source_line returning a char_span.
2092 (struct char_span): Move to input.h.
2093 (struct correction): Update for fields in char_span becoming
2094 private.
2095 (struct source_line): Update for location_get_source_line
2096 returning a char_span.
2097 (layout::print_line): Likewise.
2098 * edit-context.c (edited_file::print_content): Likewise.
2099 (edited_file::print_diff_hunk): Likewise.
2100 (edited_file::print_run_of_changed_lines): Likewise.
2101 (edited_file::get_num_lines): Likewise.
2102 (edited_line::edited_line): Likewise.
2103 * final.c (asm_show_source): Likewise.
2104 * input.c (location_get_source_line): Convert return type
2105 from const char * to char_span, losing the final "line_len"
2106 param.
2107 (dump_location_info): Update for the above.
2108 (get_substring_ranges_for_loc): Likewise. Use a char_span
2109 when handling the literal within the line.
2110 (test_reading_source_line): Update for location_get_source_line
2111 returning a char_span.
2112 * input.h (class char_span): Move here from
2113 diagnostic-show-locus.c, converting from a struct to a class.
2114 Make data members private.
2115 (char_span::operator bool): New.
2116 (char_span::length): New.
2117 (char_span::get_buffer): New.
2118 (char_span::operator[]): New.
2119 (char_span::subspan): Make const.
2120 (char_span::xstrdup): New.
2121 (location_get_source_line): Convert return type from const char *
2122 to char_span, losing the final "line_size" param.
2123
2124 2018-04-30 Jan Hubicka <jh@suse.cz>
2125
2126 * lto-wrapper.c (ltrans_priorities): New static var.
2127 (cmp_priority): New.
2128 (run_gcc): Read priorities and if doing parallel build order
2129 the Makefile by them.
2130
2131 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2132
2133 * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
2134
2135 2018-04-30 Richard Biener <rguenther@suse.de>
2136
2137 * tree-cfg.c (verify_address): Remove base argument, add
2138 flag whether to check TREE_ADDRESSABLE and do that.
2139 (verify_expr): Remove.
2140 (verify_types_in_gimple_reference): Add pieces from verify_expr.
2141 (verify_gimple_assign_single): Likewise.
2142 (verify_gimple_switch): Likewise.
2143 (verify_expr_location_1): Dereference tp once. Add (disabled)
2144 piece from verify_expr.
2145 (verify_gimple_in_cfg): Do not call verify_expr on all ops.
2146
2147 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
2148
2149 * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
2150
2151 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
2152
2153 * config/arc/arc-protos.h (prepare_extend_operands): Remove.
2154 (small_data_pattern): Likewise.
2155 (arc_rewrite_small_data): Likewise.
2156 * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
2157 (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
2158 (get_symbol_alignment): New function.
2159 (legitimate_small_data_address_p): Likewise.
2160 (legitimate_scaled_address): Update, call
2161 legitimate_small_data_address_p.
2162 (output_sdata): New static variable.
2163 (arc_print_operand): Update how we handle small data operands.
2164 (arc_print_operand_address): Likewise.
2165 (arc_legitimate_address_p): Update, use
2166 legitimate_small_data_address_p.
2167 (arc_rewrite_small_data_p): Remove.
2168 (arc_rewrite_small_data_1): Likewise.
2169 (arc_rewrite_small_data): Likewise.
2170 (small_data_pattern): Likewise.
2171 (compact_sda_memory_operand): Update to use
2172 legitimate_small_data_address_p and get_symbol_alignment.
2173 (prepare_move_operands): Don't rewite sdata pattern.
2174 (prepare_extend_operands): Remove.
2175 * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
2176 pattern.
2177 (zero_extendqisi2): Likewise.
2178 (zero_extendhisi2): Likewise.
2179 (extendqihi2): Likewise.
2180 (extendqisi2): Likewise.
2181 (extendhisi2): Likewise.
2182 (addsi3): Likewise.
2183 (subsi3): Likewise.
2184 (andsi3): Likewise.
2185 * config/arc/constraints.md (Usd): Change it to memory constraint.
2186
2187 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
2188
2189 * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
2190 as source of std instructions.
2191 * config/arc/arc.md (movsi_insn): Update pattern predicate to
2192 allow 6-bit constants as source for store instructions.
2193 (movdi_insn): Update instruction pattern to allow 6-bit constants
2194 as source for store instructions.
2195
2196 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
2197
2198 * doc/invoke.texi (-fdebug-types-section): Fix grammar.
2199
2200 2018-04-30 Nathan Sidwell <nathan@acm.org>
2201 Sandra Loosemore <sandra@codesourcery.com>
2202
2203 * dumpfile.c (dump_open): Allow '-' for stdout.
2204 * doc/invoke.texi (Developer Options): Document dump filename
2205 determination early. Document stdin/stdout selection.
2206
2207 2018-04-30 Andrew Sadek <andrew.sadek.se@gmail.com>
2208
2209 Microblaze Target: PIC data text relative
2210
2211 * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
2212 * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
2213 Add declaration.
2214 * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
2215 CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
2216 * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
2217 New addressing mode for data-text relative position indepenedent code.
2218 (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
2219 'ADDRESS_SYMBOLIC_TXT_REL'.
2220 (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
2221 (microblaze_legitimate_pic_operand): Exclude function calls from
2222 pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
2223 (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
2224 addresses cases.
2225 (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
2226 (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
2227 (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
2228 for 'address + offset'.
2229 (microblaze_expand_prologue): Add new function prologue call for
2230 'r20' assignation.
2231 (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
2232 'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
2233 table in case of TARGET_PIC_DATA_TEXT_REL.
2234 (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
2235 * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
2236 Add new macros 'UNSPEC_TEXT',
2237 'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
2238 + exclude function calls from 'UNSPEC_PLT' in case of data text
2239 relative mode.
2240 * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
2241 new target hook for generating address diff vector tables in case of
2242 flag_pic.
2243 * doc/tm.texi : Regenerate.
2244 * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
2245 'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
2246 of addr diff vector generation.
2247 * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
2248 target hook definition.
2249 * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
2250 Add default function for generate_pic_addr_diff_vec -> flag_pic.
2251 * doc/invoke.texi (Add new pic option): Add new microblaze pic
2252 option for data text relative.
2253
2254 2018-04-30 Richard Biener <rguenther@suse.de>
2255
2256 * tree-chrec.h (evolution_function_is_constant_p): Remove
2257 redundant check.
2258 * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
2259
2260 2018-04-30 Richard Biener <rguenther@suse.de>
2261
2262 PR bootstrap/85571
2263 * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
2264
2265 2018-04-30 Richard Biener <rguenther@suse.de>
2266
2267 PR tree-optimization/28364
2268 PR tree-optimization/85275
2269 * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
2270 copying first exit test.
2271
2272 2018-04-28 Mark Wielaard <mark@klomp.org>
2273
2274 * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
2275 dwarf_version >= 5.
2276 (dwarf_AT): Handle DW_AT_addr_base.
2277 (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
2278
2279 2018-04-28 Uros Bizjak <ubizjak@gmail.com>
2280
2281 PR target/84431
2282 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
2283 (*ashl<dwi>3_doubleword_mask_1): Ditto.
2284 (*<shift_insn><dwi>3_doubleword_mask): Ditto.
2285 (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
2286
2287 2018-04-28 Richard Biener <rguenther@suse.de>
2288
2289 * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
2290 (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
2291 to reflect use. Only add interesting stmts.
2292
2293 2018-04-27 Martin Jambor <mjambor@suse.cz>
2294
2295 PR ipa/85549
2296 * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
2297 the jump function allows for passing through aggregate values.
2298
2299 2018-04-27 David Malcolm <dmalcolm@redhat.com>
2300
2301 * input.h (in_system_header_at): Convert from macro to inline
2302 function.
2303 (from_macro_expansion_at): Likewise.
2304 (from_macro_definition_at): Likewise.
2305
2306 2018-04-27 Jeff Law <law@redhat.com>
2307
2308 * config.gcc: Mark tile* targets as deprecated/obsolete.
2309
2310 2018-04-27 Richard Biener <rguenther@suse.de>
2311
2312 * config/aarch64/aarch64.c: Simplify ap.__stack advance and
2313 fix for ILP32.
2314
2315 2018-04-27 Richard Biener <rguenther@suse.de>
2316
2317 * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
2318
2319 2018-04-27 Uros Bizjak <ubizjak@gmail.com>
2320
2321 * config/i386/i386.md (*movti_internal): Substitute Ye constraint
2322 with Yd constraint. Set "preferred_for_speed" attribute from
2323 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
2324 with Yd constraint.
2325 (*movdi_internal): Ditto.
2326 (movti_interunit splitters): Remove
2327 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
2328 (movdi_interunit splitters): Ditto.
2329 * config/i386/constraints.md (Ye): Remove.
2330 (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
2331
2332 2018-04-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2333
2334 PR target/85512
2335 * config/aarch64/constraints.md (Usg): Limit to 31.
2336 (Usj): Limit to 63.
2337
2338 2018-04-27 Jakub Jelinek <jakub@redhat.com>
2339
2340 PR tree-optimization/85529
2341 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
2342 argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
2343 rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
2344 zero extension or masking of the MSB bit.
2345 (optimize_range_tests): Add FIRST_BB argument, pass it through
2346 to optimize_range_tests_var_bound.
2347 (maybe_optimize_range_tests, reassociate_bb): Adjust
2348 optimize_range_tests callers.
2349
2350 2018-04-26 Richard Biener <rguenther@suse.de>
2351 Jakub Jelinek <jakub@redhat.com>
2352
2353 * cgraph.h (symbol_table): Just declare debug method here.
2354 * symtab.c (symbol_table::debug): Define.
2355
2356 2018-04-26 Eric Botcazou <ebotcazou@adacore.com>
2357
2358 * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
2359
2360 2018-04-26 Uros Bizjak <ubizjak@gmail.com>
2361
2362 * config/i386/i386.md ("isa" attribute): Add x64_sse2.
2363 ("enabled" attribute): Handle x64_sse2 "isa" attribute.
2364 (*movdi_internal): Substitute Yi and Yj constraint with x
2365 and Ym and Yn constraint with y constraint. Update "isa"
2366 attribute and set "preferred_for_speed" attribute from
2367 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
2368 (*movsi_internal): Ditto.
2369 (*movdf_internal): Ditto.
2370 (*movsf_internal): Ditto.
2371 (*zero_extendsidi2): Ditto.
2372 * config/i386/sse.md (vec_set<mode>_0): Ditto.
2373 (sse2_loadld): Ditto.
2374 (*vec_extract<ssevecmodelower>_0): Ditto.
2375 (*vec_extractv4si_0_zext_sse4): Ditto.
2376 (vec_concatv2di): Ditto.
2377 (*vec_dup<mode>): Ditto.
2378 * config/i386/mmx.md (*mov<mode>_internal): Ditto.
2379 * config/i386/constraints.md (Yi): Remove.
2380 (Yj): Remove.
2381 (Ym): Remove.
2382 (Yn): Remove.
2383
2384 2018-04-26 Nathan Sidwell <nathan@acm.org>
2385
2386 * dumpfile.c (dump_open): New.
2387 (dump_open_alternate_stream, dump_start, dump_begin): Call it.
2388 (dump_finish): Detect stdio/stderr by value not name.
2389
2390 2018-04-26 Jonathan Wakely <jwakely@redhat.com>
2391
2392 * doc/invoke.texi (-Wreturn-type): Document default status for C++.
2393
2394 2018-04-26 Tom de Vries <tom@codesourcery.com>
2395
2396 PR target/84952
2397 * config/nvptx/nvptx.c (verify_neutering_jumps)
2398 (verify_neutering_labels): New function
2399 (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
2400
2401 2018-04-26 Tom de Vries <tom@codesourcery.com>
2402
2403 PR target/84025
2404 * config/nvptx/nvptx.c (needs_neutering_p): New function.
2405 (nvptx_single): Use needs_neutering_p to skip over insns that do not
2406 need neutering.
2407
2408 2018-04-26 Richard Biener <rguenther@suse.de>
2409 Tom de Vries <tom@codesourcery.com>
2410
2411 PR lto/85422
2412 * lto-streamer-out.c (output_function): Fixup loops if required to match
2413 discovery done in the reader.
2414
2415 2018-04-26 Richard Biener <rguenther@suse.de>
2416
2417 PR tree-optimization/85116
2418 * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
2419 have a loop exit from the single latch predecessor. Remove
2420 case of header with just condition.
2421 (ch_base::copy_headers): Exclude infinite loops from any
2422 processing.
2423 (pass_ch::execute): Record exits.
2424
2425 2018-04-26 Richard Biener <rguenther@suse.de>
2426
2427 * tree-vect-data-refs.c (vect_get_data_access_cost): Get
2428 prologue cost vector and pass it to vect_get_load_cost.
2429 (vect_get_peeling_costs_all_drs): Likewise.
2430 (vect_peeling_hash_get_lowest_cost): Likewise.
2431 (vect_enhance_data_refs_alignment): Likewise.
2432
2433 2018-04-26 Richard Biener <rguenther@suse.de>
2434
2435 PR middle-end/85450
2436 * tree-cfg.c (verify_gimple_assign_unary): Restore proper
2437 checking of integer<->pointer conversions.
2438 * omp-expand.c (expand_omp_for_static_nochunk): Avoid
2439 sign-/zero-extending pointer types.
2440 (expand_omp_for_static_chunk): Likewise.
2441
2442 2018-03-22 Hans-Peter Nilsson <hp@axis.com>
2443 Jean Lee <xiaoyur347@gmail.com>
2444
2445 * config/mips/mips.c (mips_asan_shadow_offset): New function.
2446 (TARGET_ASAN_SHADOW_OFFSET): Define.
2447 * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
2448 true for -fsanitize=address.
2449
2450 2018-04-25 Mark Wielaard <mark@klomp.org>
2451
2452 * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
2453 shorter ones.
2454
2455 2018-04-25 Jakub Jelinek <jakub@redhat.com>
2456
2457 * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
2458 than "alu", remove explicit "memory" and "imm_disp" attributes.
2459 (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
2460
2461 PR middle-end/85414
2462 * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
2463 case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
2464 gen_lowpart_no_emit.
2465
2466 2018-04-25 Sebastian Peryt <sebastian.peryt@intel.com>
2467
2468 PR target/85473
2469 * config/i386/i386.c (ix86_expand_builtin): Change memory
2470 operand to XI, extend p0 to Pmode.
2471 * config/i386/i386.md: Change unspec volatile and operand
2472 1 mode to XI, change operand 0 mode to P.
2473
2474 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2475
2476 * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
2477 GET_MODE_MASK before any checking.
2478 (nds32_can_use_bset_p): Likewise.
2479 (nds32_can_use_btgl_p): Likewise.
2480
2481 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2482
2483 * config/nds32/nds32-doubleword.md: New define_split pattern for
2484 illegal register number.
2485
2486 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2487
2488 * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
2489
2490 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2491
2492 * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
2493
2494 2018-04-25 Richard Biener <rguenther@suse.de>
2495
2496 * lto-streamer.h (LTO_major_version): Bump to 8.
2497
2498 2018-04-25 Jakub Jelinek <jakub@redhat.com>
2499
2500 * BASE-VER: Set to 9.0.0.
2501
2502 2018-04-24 Segher Boessenkool <segher@kernel.crashing.org>
2503
2504 * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
2505 in __abskf2 and __powikf2.
2506
2507 2018-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2508
2509 PR target/85512
2510 * config/aarch64/constraints.md (Usg, Usj): New constraints.
2511 * config/aarch64/iterators.md (cmode_simd): New mode attribute.
2512 * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
2513 Use the above on operand 2. Reindent.
2514 (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
2515
2516 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
2517
2518 PR target/85485
2519 * common/config/i386/i386-common.c (ix86_handle_option): Don't
2520 handle OPT_mcet.
2521 * config/i386/i386.opt (mcet): Removed.
2522 * doc/install.texi: Remove -mcet documentation.
2523 * doc/invoke.texi: Likewise.
2524
2525 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
2526
2527 PR target/85485
2528 * doc/install.texi: Remove -mcet from bootstrap-cet.
2529
2530 2018-04-24 Jakub Jelinek <jakub@redhat.com>
2531
2532 PR target/85511
2533 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
2534 __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
2535 if TARGET_64BIT.
2536
2537 PR target/85503
2538 * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
2539 const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
2540 containing a CONST_VECTOR.
2541
2542 2018-04-24 Cesar Philippidis <cesar@codesourcery.com>
2543
2544 * doc/install.texi: Update newlib dependency for nvptx.
2545
2546 2018-04-24 Jakub Jelinek <jakub@redhat.com>
2547
2548 PR target/85508
2549 * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
2550 instead of INTVAL when shifting x left.
2551
2552 2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
2553
2554 PR tree-optimization/85478
2555 * tree-vect-loop.c (vect_analyze_loop_2): Do not call
2556 vect_grouped_store_supported for single element vectors.
2557
2558 2018-04-24 Richard Biener <rguenther@suse.de>
2559
2560 PR target/85491
2561 * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
2562 load cost increase to the case of non-constant step.
2563
2564 2018-04-24 Jakub Jelinek <jakub@redhat.com>
2565
2566 PR target/84828
2567 * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
2568 destination if any_malformed_asm.
2569
2570 2018-04-23 Eric Botcazou <ebotcazou@adacore.com>
2571
2572 PR middle-end/85496
2573 * expr.c (store_field): In the bitfield case, if the value comes from
2574 a function call and is returned in registers by means of a PARALLEL,
2575 do not change the mode of the temporary unless BLKmode and VOIDmode.
2576
2577 2018-04-23 Andrey Belevantsev <abel@ispras.ru>
2578
2579 PR rtl-optimization/85423
2580 * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
2581 dependencies to debug insns when the previous insn is non-debug.
2582
2583 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
2584
2585 * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
2586 enums into a single definition.
2587 (fls): Fix predicates and printing.
2588 (seti): Likewise.
2589
2590 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
2591
2592 * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
2593 * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
2594 and short u6 immediate.
2595 (check_if_valid_sleep_operand): Remove.
2596 * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
2597
2598 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2599
2600 * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
2601 flag_always_save_lp condition.
2602 * config/nds32/nds32.opt (malways-save-lp): New option.
2603
2604 2018-04-22 Shiva Chen <shiva0217@gmail.com>
2605
2606 * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
2607 * config/nds32/nds32.c (nds32_use_load_post_increment): New.
2608 * config/nds32/nds32.h
2609 (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
2610 (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
2611
2612 2018-04-22 Shiva Chen <shiva0217@gmail.com>
2613
2614 * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
2615 * config/nds32/nds32.c (nds32_ls_333_p): Remove.
2616
2617 2018-04-22 Shiva Chen <shiva0217@gmail.com>
2618 Chung-Ju Wu <jasonwucj@gmail.com>
2619
2620 * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
2621 Declare.
2622 * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
2623 * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
2624
2625 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2626
2627 * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
2628
2629 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2630
2631 * config/nds32/nds32-protos.h (nds32_data_alignment,
2632 nds32_local_alignment): Declare.
2633 * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
2634 nds32_local_alignment): New functions.
2635 (TARGET_CONSTANT_ALIGNMENT): Define.
2636 * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
2637
2638 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2639
2640 * config/nds32/nds32.c
2641 (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
2642 (TARGET_MODES_TIEABLE_P): Likewise.
2643
2644 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2645
2646 * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
2647 level Ofast and Og.
2648
2649 2018-04-22 Monk Chiang <sh.chiang04@gmail.com>
2650 Chung-Ju Wu <jasonwucj@gmail.com>
2651
2652 * config/nds32/constants.md (unspec_volatile_element): Add enum values
2653 for unaligned access.
2654 * config/nds32/nds32-intrinsic.c: Implementation of expanding
2655 unaligned access.
2656 * config/nds32/nds32-intrinsic.md: Likewise.
2657 * config/nds32/nds32_intrinsic.h: Likewise.
2658 * config/nds32/nds32.h (nds32_builtins): Likewise.
2659 * config/nds32/nds32.opt (munaligned-access): New option.
2660 * config/nds32/nds32.c (nds32_asm_file_start): Display
2661 flag_unaligned_access status.
2662
2663 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
2664
2665 * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
2666 -mno-relax is present.
2667 * config/riscv/linux.h (LINK_SPEC): Ditto.
2668
2669 2018-04-20 Martin Sebor <msebor@redhat.com>
2670
2671 PR c/85365
2672 * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
2673 for null pointers.
2674 (gimple_fold_builtin_stxcpy_chk): Same.
2675 * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
2676
2677 2018-04-20 Michael Meissner <meissner@linux.ibm.com>
2678
2679 PR target/85456
2680 * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
2681 __powikf2 when long double is IEEE 128-bit.
2682
2683 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
2684
2685 * config/riscv/riscv.c (riscv_first_stack_step): Round up min
2686 step to make sure stack always aligned.
2687
2688 2018-04-20 Carl Love <cel@us.ibm.com>
2689
2690 PR target/83402
2691 * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
2692 size check for arg0.
2693
2694 2018-04-20 Nathan Sidwell <nathan@codesourcery.com>
2695 Tom de Vries <tom@codesourcery.com>
2696
2697 PR target/85445
2698 * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
2699 Emit insns for calls too.
2700 (nvptx_find_par): Always look for worker-level predecessor insn.
2701 (nvptx_propagate): Add is_call parm, return bool. Copy frame for
2702 calls.
2703 (nvptx_vpropagate, nvptx_wpropagate): Adjust.
2704 (nvptx_process_pars): Propagate frames for calls.
2705
2706 2018-04-20 H.J. Lu <hongjiu.lu@intel.com>
2707
2708 PR target/85469
2709 * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
2710 Removed.
2711 (OPTION_MASK_ISA_IBT_UNSET): Likewise.
2712 (ix86_handle_option): Don't handle OPT_mibt.
2713 * config/i386/cet.h: Check __CET__ instead of __IBT__ and
2714 __SHSTK__.
2715 * config/i386/driver-i386.c (host_detect_local_cpu): Remove
2716 has_ibt and ibt.
2717 * config/i386/i386-c.c (ix86_target_macros_internal): Don't
2718 check OPTION_MASK_ISA_IBT nor flag_cf_protection.
2719 (ix86_target_macros): Define __CET__ with flag_cf_protection
2720 for -fcf-protection.
2721 * config/i386/i386.c (isa2_opts): Remove -mibt.
2722 * config/i386/i386.h (TARGET_IBT): Removed.
2723 (TARGET_IBT_P): Likewise.
2724 (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
2725 * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
2726 * config/i386/i386.opt (mcet): Update help message.
2727 (mshstk): Likewise.
2728 (mibt): Removed.
2729 * doc/invoke.texi: Remove -mibt. Document __CET__. Document
2730 -mcet as an alias for -mshstk.
2731
2732 2018-04-20 Richard Biener <rguenther@suse.de>
2733
2734 PR middle-end/85475
2735 * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
2736 complexity by forcing a single use of the multiply operand.
2737
2738 2018-04-20 Martin Jambor <mjambor@suse.cz>
2739
2740 ipa/85449
2741 * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
2742 recursion dependency to only apply to non-clones.
2743
2744 2018-04-20 Martin Jambor <mjambor@suse.cz>
2745
2746 ipa/85447
2747 * ipa-cp.c (create_specialized_node): Check that clones of
2748 self-recursive edges exist during IPA-CP.
2749
2750 2018-04-19 Toon Moene <toon@moene.org>
2751
2752 * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
2753 by -O3.
2754
2755 2018-04-19 Jakub Jelinek <jakub@redhat.com>
2756
2757 PR tree-optimization/85467
2758 * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
2759 VECTOR_TYPE_P macro. If type is vector type, VIEW_CONVERT_EXPR the
2760 VECTOR_CST element to type.
2761
2762 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
2763
2764 PR target/85397
2765 * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
2766 * config/i386/i386.md (builtin_setjmp_setup): Removed.
2767 (builtin_longjmp): Likewise.
2768 (save_stack_nonlocal): New pattern.
2769 (restore_stack_nonlocal): Likewise.
2770
2771 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
2772
2773 PR target/85404
2774 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
2775 Replace ASM_OUTPUT_LABEL with fprintf.
2776
2777 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
2778
2779 PR target/85417
2780 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
2781 Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
2782 * config/i386/i386-c.c (ix86_target_macros_internal): Also
2783 define __IBT__ and __SHSTK__ for -fcf-protection.
2784 * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
2785 TARGET_IBT.
2786 (ix86_trampoline_init): Likewise.
2787 (x86_output_mi_thunk): Likewise.
2788 (ix86_notrack_prefixed_insn_p): Likewise.
2789 (ix86_option_override_internal): Don't disallow -fcf-protection.
2790 * config/i386/i386.md (rdssp<mode>): Also enable for
2791 -fcf-protection.
2792 (incssp<mode>): Likewise.
2793 (nop_endbr): Likewise.
2794 * config/i386/i386.opt (mcet): Change help message to built-in
2795 functions only.
2796 (mibt): Likewise.
2797 (mshstk): Likewise.
2798 * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
2799 on -fcf-protection. Change -mcet, -mibt and -mshstk to only
2800 enable CET built-in functions.
2801
2802 2018-04-19 Sebastian Peryt <sebastian.peryt@intel.com>
2803
2804 * common/config/i386/i386-common.c
2805 (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
2806 OPTION_MASK_ISA_MOVDIRI_UNSET,
2807 OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
2808 (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
2809 * config.gcc (movdirintrin.h): New header.
2810 * config/i386/cpuid.h (bit_MOVDIRI,
2811 bit_MOVDIR64B): New bits.
2812 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
2813 and -mmvodir64b.
2814 * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
2815 (VOID, PVOID, PCVOID)): New function types.
2816 * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
2817 __builtin_ia32_directstoreu_u64,
2818 __builtin_ia32_movdir64b): New builtins.
2819 * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
2820 * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
2821 and -mmovdiri.
2822 (ix86_valid_target_attribute_inner_p): Ditto.
2823 (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
2824 and VOID_FTYPE_PUNSIGNED_UNSIGNED.
2825 (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
2826 * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
2827 TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
2828 * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
2829 (movdiri<mode>, movdir64b_<mode>): New.
2830 * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
2831 * config/i386/immintrin.h: Include movdirintrin.h.
2832 * config/i386/movdirintrin.h: New file.
2833 * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
2834
2835 2018-04-19 Richard Biener <rguenther@suse.de>
2836
2837 PR middle-end/85455
2838 * cfg.c (clear_bb_flags): When loop state says we have
2839 marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
2840
2841 2018-04-19 Richard Biener <rguenther@suse.de>
2842
2843 PR tree-optimization/84737
2844 * tree-vect-data-refs.c (vect_copy_ref_info): New function
2845 copying restrict info.
2846 (vect_setup_realignment): Use it.
2847 * tree-vectorizer.h (vect_copy_ref_info): Declare.
2848 * tree-vect-stmts.c (vectorizable_store): Copy ref info from
2849 the first DR to all generated stores.
2850 (vectorizable_load): Likewise for loads.
2851
2852 2018-04-19 Jakub Jelinek <jakub@redhat.com>
2853
2854 PR tree-optimization/85446
2855 * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
2856 the integral and pointer types to have the same precision.
2857
2858 * doc/install.texi: Document --disable-cet being the default and
2859 --enable-cet=auto.
2860
2861 2018-04-18 Martin Liska <mliska@suse.cz>
2862
2863 * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
2864 style.
2865
2866 2018-04-18 Martin Liska <mliska@suse.cz>
2867
2868 Revert
2869 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
2870
2871 PR ipa/83983
2872 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
2873 arguments if they are comparable.
2874
2875 2018-04-18 Martin Liska <mliska@suse.cz>
2876
2877 Revert
2878 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
2879
2880 PR lto/84805
2881 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
2882 incomplete types.
2883
2884 2018-04-18 H.J. Lu <hongjiu.lu@intel.com>
2885
2886 PR target/85388
2887 * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
2888 ENDBR after calling __morestack.
2889
2890 2018-04-18 David Malcolm <dmalcolm@redhat.com>
2891
2892 PR jit/85384
2893 * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
2894 by using gcc_base_ver to generate a gcc_driver_version, and use
2895 it when generating GCC_DRIVER_NAME.
2896 * configure: Regenerate.
2897
2898 2018-04-18 Jakub Jelinek <jakub@redhat.com>
2899
2900 PR target/81084
2901 * config.gcc: Obsolete powerpc*-*-*spe*.
2902
2903 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2904
2905 PR debug/84637
2906 * dbxout.c (dbxout_int): Perform negation in unsigned int type.
2907 (stabstr_D): Change type of unum from unsigned int to
2908 unsigned HOST_WIDE_INT. Perform negation in unsigned HOST_WIDE_INT
2909 type.
2910
2911 2018-04-17 Jim Wilson <jimw@sifive.com>
2912
2913 PR 84856
2914 * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
2915 RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
2916 Set arg_pointer_offset after using pretend_args_size.
2917
2918 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2919
2920 PR rtl-optimization/85431
2921 * dse.c (record_store): Ignore zero width stores.
2922
2923 PR sanitizer/85230
2924 * asan.c (handle_builtin_stack_restore): Adjust comment. Emit
2925 __asan_allocas_unpoison call and last_alloca_addr = new_sp before
2926 __builtin_stack_restore rather than after it.
2927 * builtins.c (expand_asan_emit_allocas_unpoison): Pass
2928 arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
2929 argument instead of virtual_dynamic_stack_rtx.
2930
2931 2018-04-17 Kelvin Nilsen <kelvin@gcc.gnu.org>
2932
2933 * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
2934 New prototype.
2935 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2936 Add note to error message to explain internal mapping of overloaded
2937 built-in function name to non-overloaded built-in function name.
2938 * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
2939 function.
2940
2941 2018-04-17 Michael Meissner <meissner@linux.vnet.ibm.com>
2942
2943 PR target/85424
2944 * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
2945 where the inputs overlap with the output.
2946
2947 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2948
2949 * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
2950 (=v, v) alternative and explicit "memory" attribute.
2951 (vec_extract_lo_<mode><mask_name>): Likewise. Also add
2952 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2953 attributes.
2954 (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
2955 "sselog1" type instead of "sselog".
2956 (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
2957 "sselog". Remove explicit "memory" attribute.
2958 (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
2959 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2960 attributes.
2961 (vec_extract_hi_v32hi): Merge all alternatives into one, use
2962 "sselog1" type instead of "sselog". Remove explicit "memory"
2963 attribute.
2964 (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
2965 use "sselog1" type instead of "sselog". Remove explicit "memory"
2966 attribute.
2967 (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
2968 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2969 attributes.
2970 (vec_extract_hi_v64qi): Merge all alternatives into one, use
2971 "sselog1" type instead of "sselog". Remove explicit "memory"
2972 attribute.
2973 (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
2974 use "sselog1" type instead of "sselog". Remove explicit "memory"
2975 attribute.
2976
2977 PR target/85430
2978 * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
2979
2980 PR middle-end/85414
2981 * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
2982 on a SUBREG.
2983
2984 2018-04-17 Martin Jambor <mjambor@suse.cz>
2985
2986 PR ipa/85421
2987 * ipa-cp.c (create_specialized_node): Call
2988 expand_all_artificial_thunks if necessary.
2989
2990 2018-04-17 Martin Liska <mliska@suse.cz>
2991
2992 PR lto/85405
2993 * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
2994 in message, remote space in between '_G' and '('.
2995
2996 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2997
2998 PR target/85281
2999 * config/i386/sse.md (reduces<mode><mask_scalar_name>,
3000 avx512f_vmcmp<mode>3<round_saeonly_name>,
3001 avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
3002 avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
3003 avx512f_rndscale<mode><round_saeonly_name>,
3004 avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
3005 avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
3006 Use %<iptr>2 instead of %2 for -masm=intel.
3007 (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
3008 avx512f_vcvttss2usi<round_saeonly_name>,
3009 avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
3010 -masm=intel.
3011 (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
3012 avx512f_vcvttsd2usi<round_saeonly_name>,
3013 avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
3014 Use %q1 instead of %1 for -masm=intel.
3015 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
3016 avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
3017 of %3 for -masm=intel.
3018 (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
3019 -masm=intel.
3020 (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
3021 -masm=intel.
3022 (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
3023 -masm=intel.
3024 (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
3025 %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
3026 %g1.
3027 (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
3028 -masm=intel.
3029 (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
3030 %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
3031 %g1 and one with %0 and %1.
3032 (avx512er_vmrcp28<mode><round_saeonly_name>,
3033 avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
3034 %1 for -masm=intel.
3035 (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
3036 avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
3037 avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
3038 of %0 and %{%4%} for -masm=intel.
3039 (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
3040 avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
3041 avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
3042 order of %0 and %{%5%}%{z%} for -masm=intel.
3043
3044 2018-04-17 Jan Hubicka <jh@suse.cz>
3045
3046 PR lto/85405
3047 * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
3048
3049 2018-04-17 Martin Liska <mliska@suse.cz>
3050
3051 PR ipa/85329
3052 * multiple_target.c (create_dispatcher_calls): Set apostrophes
3053 for target_clone error message. Make default implementation
3054 clone to be a local declaration.
3055 (separate_attrs): Add new argument and check for an empty
3056 string.
3057 (expand_target_clones): Handle it.
3058 (ipa_target_clone): Make redirection just for target_clones
3059 functions.
3060
3061 2018-04-16 Cesar Philippidis <cesar@codesourcery.com>
3062 Tom de Vries <tom@codesourcery.com>
3063
3064 PR middle-end/84955
3065 * omp-expand.c (expand_oacc_for): Add dummy false branch for
3066 tiled basic blocks without omp continue statements.
3067
3068 2018-04-16 Aaron Sawdey <acsawdey@linux.ibm.com>
3069
3070 PR target/83660
3071 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
3072 vec_extract expression as having side effects to make sure it gets
3073 a cleanup point.
3074
3075 2018-04-16 H.J. Lu <hongjiu.lu@intel.com>
3076
3077 PR target/85403
3078 * config/i386/i386.c (get_builtin_code_for_version): Check
3079 error_mark_node.
3080
3081 2018-04-16 Olga Makhotina <olga.makhotina@intel.com>
3082
3083 PR target/84331
3084 * gcc/config.gcc: Support "skylake".
3085 * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
3086 PROCESSOR_SKYLAKE.
3087 * gcc/config/i386/i386.c (m_SKYLAKE): Define.
3088 (processor_target_table): Add "skylake".
3089 (ix86_option_override_internal): Add "skylake".
3090 (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
3091 PROCESSOR_CANNONLAKE.
3092 (get_builtin_code_for_version): Fix priority for
3093 PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
3094 PROCESSOR_SKYLAKE-AVX512.
3095 * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
3096 (processor_type): Add PROCESSOR_SKYLAKE.
3097
3098 2018-04-16 Paolo Carlini <paolo.carlini@oracle.com>
3099 Jason Merrill <jason@redhat.com>
3100
3101 PR c++/85112
3102 * convert.c (convert_to_integer_1): Use direct recursion for
3103 enumeral types and types with a precision less than the number
3104 of bits in their mode.
3105
3106 2018-04-16 Julia Koval <julia.koval@intel.com>
3107
3108 PR target/84413
3109 * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
3110 X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
3111
3112 2018-04-14 Segher Boessenkool <segher@kernel.crashing.org>
3113
3114 PR target/85293
3115 * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
3116 * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
3117 and -mno-direct-move.
3118
3119 2018-04-13 Paul A. Clarke <pc@us.ibm.com>
3120
3121 PR target/83402
3122 * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
3123 Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
3124 Ensure negative shifts result in {0}.
3125
3126 2018-04-13 Vladimir Makarov <vmakarov@redhat.com>
3127
3128 PR rtl-optimization/79916
3129 * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
3130 regs (if any) to define how to gnerate SD moves when LRA is in
3131 progress.
3132
3133 2018-04-13 Jakub Jelinek <jakub@redhat.com>
3134
3135 PR rtl-optimization/85393
3136 * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
3137 * except.c (expand_dw2_landing_pad_for_region): Make static.
3138 * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
3139 a label and unconditional jump to old_bb, rather than
3140 expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
3141 basic block.
3142
3143 PR rtl-optimization/85376
3144 * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
3145 zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
3146 instead of a specific value.
3147
3148 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
3149 Bin Cheng <bin.cheng@arm.com>
3150
3151 PR tree-optimization/82965
3152 PR tree-optimization/83991
3153 * cfgloopanal.c (expected_loop_iterations_unbounded): Add
3154 by_profile_only parameter.
3155 * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
3156 information if the loop was predicted to iterate too many times.
3157 * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
3158
3159 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
3160
3161 PR lto/71991
3162 * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
3163 always inline.
3164
3165 2018-04-13 Martin Liska <mliska@suse.cz>
3166 Jakub Jelinek <jakub@redhat.com>
3167
3168 PR middle-end/81657
3169 * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
3170 * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
3171 * builtins.c (expand_builtin_memory_copy_args): Use
3172 BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
3173 handle dest_addr == pc_rtx.
3174
3175 2018-04-12 Segher Boessenkool <segher@kernel.crashing.org>
3176
3177 PR target/85291
3178 * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
3179 asked to not generate direct moves.
3180 (fix_trunc<mode>si2_stfiwx): Similar.
3181 (fix_trunc<mode>si2_internal): Similar.
3182
3183 2018-04-12 Jakub Jelinek <jakub@redhat.com>
3184
3185 PR debug/83157
3186 * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
3187 * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
3188 lookup if dest in some wider mode is known to be const0_rtx and
3189 if so, record permanent equivalence for it to be ZERO_EXTEND of
3190 the narrower mode destination.
3191
3192 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
3193
3194 * lto-streamer-out.c (output_function): Revert 259346.
3195 * omp-expand.c (expand_oacc_for): Likewise.
3196
3197 2018-04-12 Alexander Monakov <amonakov@ispras.ru>
3198
3199 PR rtl-optimization/85354
3200 * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
3201 * sel-sched.c (sel_global_init): ... here.
3202
3203 2018-04-12 Eric Botcazou <ebotcazou@adacore.com>
3204
3205 PR target/85238
3206 * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
3207 * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
3208 mode for PE-COFF targets.
3209 * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
3210 (i386_pe_asm_lto_end): Likewise.
3211 * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
3212 (TARGET_ASM_LTO_END): Likewise.
3213 * config/i386/winnt.c (saved_debug_info_level): New static variable.
3214 (i386_pe_asm_lto_start): New function.
3215 (i386_pe_asm_lto_end): Likewise.
3216
3217 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
3218 Richard Biener <rguenther@suse.de>
3219
3220 PR middle-end/84955
3221 * lto-streamer-out.c (output_function): Fix CFG loop state before
3222 streaming out.
3223 * omp-expand.c (expand_oacc_for): Handle calls to internal
3224 functions like regular functions.
3225
3226 2018-04-12 Richard Biener <rguenther@suse.de>
3227
3228 PR lto/85371
3229 * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
3230 for the early LTO debug to properly generate references to it
3231 during DIE emission. Do not re-use that for the skeleton for
3232 split-dwarf.
3233 (dwarf2out_early_finish): Likewise.
3234
3235 2018-04-12 Jakub Jelinek <jakub@redhat.com>
3236
3237 PR target/85328
3238 * config/i386/sse.md
3239 (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
3240 <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
3241 vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
3242 vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
3243 and output is a reg, avoid creating invalid lowpart subreg, but
3244 instead split into a 512-bit move. Don't split if not AVX512VL,
3245 input is xmm16+ reg and output is a mem.
3246 (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
3247 vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
3248 xmm16+ reg and output is a mem.
3249
3250 2018-04-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
3251
3252 * config/s390/s390.c (s390_output_indirect_thunk_function): Check
3253 also for flag_dwarf2_cfi_asm.
3254
3255 2018-04-12 Jakub Jelinek <jakub@redhat.com>
3256
3257 PR rtl-optimization/85342
3258 * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
3259 a bool scalar var inside of the loop instead. Don't try to update
3260 recog_data.operand after failed apply_change_group.
3261
3262 2018-04-12 Tom de Vries <tom@codesourcery.com>
3263
3264 PR target/85296
3265 * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
3266 (nvptx_assemble_decl_begin): Add undefined param. Declare undefined
3267 array with flexible array member as array without given dimension.
3268 (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
3269 argument for undefined param to true.
3270
3271 2018-04-11 Aaron Sawdey <acsawdey@linux.ibm.com>
3272
3273 PR target/85321
3274 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
3275 -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
3276 from PowerPC section.
3277 * config/rs6000/sysv4.opt (mcall-): Improve help text.
3278 * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
3279 help text that is too long.
3280 * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
3281 help text that is too long.
3282 * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
3283 help text that is too long.
3284
3285 2018-04-11 Uros Bizjak <ubizjak@gmail.com>
3286
3287 * config/alpha/alpha.md (stack_probe_internal): Rename
3288 from "probe_stack". Update all callers.
3289
3290 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
3291
3292 PR rtl-optimization/84566
3293 * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
3294 sched_macro_fuse_insns.
3295
3296 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
3297
3298 PR target/84301
3299 * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
3300 (compute_block_dependences): ... from here.
3301
3302 2018-04-11 Jakub Jelinek <jakub@redhat.com>
3303
3304 PR tree-optimization/85331
3305 * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
3306 from int to HOST_WIDE_INT.
3307
3308 2018-04-11 Martin Jambor <mjambor@suse.cz>
3309
3310 PR ipa/84149
3311 * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
3312 (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
3313 not the same as the source val.
3314 (cgraph_edge_brings_value_p): New parameter.
3315 (gather_edges_for_value): Pass destination value to
3316 cgraph_edge_brings_value_p.
3317 (perhaps_add_new_callers): Likewise.
3318 (get_info_about_necessary_edges): Likewise and exclude values brought
3319 only by self-recursive edges.
3320 (create_specialized_node): Redirect only clones of self-calling edges.
3321 (+self_recursive_pass_through_p): New function.
3322 (find_more_scalar_values_for_callers_subset): Use it.
3323 (find_aggregate_values_for_callers_subset): Likewise.
3324 (known_aggs_to_agg_replacement_list): Removed.
3325 (decide_whether_version_node): Re-calculate known constants for all
3326 remaining context clones.
3327
3328 2018-04-11 Richard Biener <rguenther@suse.de>
3329
3330 PR lto/85339
3331 * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
3332 from early DWARF output.
3333 (dwarf2out_early_finish): Output line info unconditionally into
3334 early DWARF and add reference to it.
3335
3336 2018-04-11 Jakub Jelinek <jakub@redhat.com>
3337
3338 PR target/85281
3339 * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
3340 (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
3341 other than V2DFmode using iptr mode attribute.
3342 (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
3343
3344 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
3345
3346 PR rtl-optimization/84659
3347 * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
3348
3349 2018-04-11 Jakub Jelinek <jakub@redhat.com>
3350
3351 PR debug/85302
3352 * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
3353 SIZEP is NULL.
3354 (output_loc_list): Pass address of a dummy size variable even in the
3355 locview handling loop.
3356 (index_location_lists): Add comment on why skip_loc_list_entry can't
3357 call size_of_locs.
3358
3359 2018-04-11 Thomas Preud'homme <thomas.preudhomme@arm.com>
3360
3361 PR target/85261
3362 * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
3363 into register.
3364
3365 2018-04-10 Aaron Sawdey <acsawdey@linux.ibm.com>
3366
3367 PR target/85321
3368 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
3369 -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
3370 and -mstring-compare-inline-limit.
3371
3372 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
3373
3374 PR target/85287
3375 * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
3376 for stack clash protection in a register whenever we need it to be in
3377 a register.
3378
3379 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
3380
3381 * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
3382 Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
3383
3384 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
3385
3386 PR target/85321
3387 * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
3388 the help text.
3389 (mlong-double-): Ditto.
3390 * config/rs6000/sysv4.opt (msdata=): Ditto.
3391 (mtls-size=): Ditto.
3392
3393 2018-04-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
3394
3395 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
3396 erroneous entries for
3397 "vector int vec_ldl (int, long int *)", and
3398 "vector unsigned int vec_ldl (int, unsigned long int *)".
3399 Add comments and entries for
3400 "vector bool char vec_ldl (int, bool char *)",
3401 "vector bool short vec_ldl (int, bool short *)",
3402 "vector bool int vec_ldl (int, bool int *)",
3403 "vector bool long long vec_ldl (int, bool long long *)",
3404 "vector pixel vec_ldl (int, pixel *)",
3405 "vector long long vec_ldl (int, long long *)",
3406 "vector unsigned long long vec_ldl (int, unsigned long long *)".
3407 * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
3408 type tree bool_long_long_type_node and correct definition of
3409 bool_V2DI_type_node to make reference to this new type tree.
3410 (rs6000_mangle_type): Replace erroneous reference to
3411 bool_long_type_node with bool_long_long_type_node.
3412 * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
3413 comments to emphasize sign distinctions for char and int types and
3414 replace RS6000_BTI_bool_long constant with
3415 RS6000_BTI_bool_long_long constant. Also add comment to restrict
3416 use of RS6000_BTI_pixel.
3417 (bool_long_type_node): Remove this macro definition.
3418 (bool_long_long_type_node): New macro definition
3419
3420 2018-04-10 Jakub Jelinek <jakub@redhat.com>
3421
3422 PR rtl-optimization/85300
3423 * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
3424 into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
3425 simplify_unary_operation fails.
3426
3427 2018-04-10 Martin Liska <mliska@suse.cz>
3428
3429 * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
3430 cgraph_edge and ipa_ref.
3431
3432 2018-04-10 Jakub Jelinek <jakub@redhat.com>
3433
3434 PR target/85177
3435 PR target/85255
3436 * config/i386/sse.md
3437 (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
3438 computation of the VEC_MERGE selector from mask.
3439 (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
3440 Fix decoding of the VEC_MERGE selector into mask.
3441
3442 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
3443
3444 PR tree-optimization/85286
3445 * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
3446
3447 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
3448
3449 * final.c (final_1): Set insn_last_address as well as
3450 insn_current_address.
3451
3452 2018-04-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3453
3454 PR target/85173
3455 * explow.c (emit_stack_probe): Call validize_mem on memory location
3456 before passing it to gen_probe_stack. Create address operand and
3457 legitimize it for the probe_stack_address case.
3458
3459 2018-04-09 Jan Hubicka <jh@suse.cz>
3460
3461 PR lto/85078
3462 * ipa-devirt.c (rebuild_type_inheritance-hash): New.
3463 * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
3464 * tree.c (free_lang_data_in_type): Fix handling of binfos;
3465 walk basetypes.
3466 (free_lang_data): Rebuild type inheritance graph.
3467
3468 2018-04-09 Martin Sebor <msebor@redhat.com>
3469
3470 * invoke.texi (-finline-small-functions): Mention other optimization
3471 options.
3472 (-findirect-inlining, -fpartial-inlining): Same.
3473 (-finline-functions-called-once): Same.
3474 (-freorder-blocks-and-partition): Same.
3475
3476 2018-04-09 Jan Hubicka <jh@suse.cz>
3477
3478 PR rtl/84058
3479 * cfgcleanup.c (try_forward_edges): Do not give up on crossing
3480 jumps; choose last target that matches the criteria (i.e.
3481 no partition changes for non-crossing jumps).
3482 * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
3483 support for redirecting crossing jumps to non-crossing.
3484
3485 2018-04-09 Alexey Brodkin <abrodkin@synopsys.com>
3486
3487 * config/arc/arc.c (arc_expand_prologue): Set stack usage info
3488 also for naked functions.
3489
3490 2018-04-09 Claudiu Zissulescu <claziss@synopsys.com>
3491
3492 * config/arc/arc.md (add_shift): New pattern.
3493 (add_shift2): Likewise.
3494 (sub_shift): Likewise.
3495 (sub_shift_cmp0_noout): Likewise.
3496 (compare_si_ashiftsi): Likewise.
3497 (xbfu_cmp0_noout): New combine pattern.
3498 (xbfu_cmp0"): Likewise.
3499 (movsi_set_cc_insn): Place the predicable variant first.
3500 (commutative_binary_cmp0_noout): Remove clobber.
3501 (commutative_binary_cmp0): New pattern.
3502 (noncommutative_binary_cmp0): Likewise.
3503 (noncommutative_binary_cmp0_noout): Likewise.
3504 (noncommutative_binary_comparison_result_used): Removed.
3505 (rsub_cmp0): New pattern.
3506 (rsub_cmp0_noout): Likewise.
3507 (extzvsi): Changed, keep only meaningful variants.
3508 (SQH, SEZ): New iterators.
3509 (SQH_postfix): New mode attribute.
3510 (SEZ_prefix): New code attribute.
3511 (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
3512 (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
3513 * config/arc/predicates.md (cc_set_register): Use CC_REG instead
3514 of numerical value.
3515 (noncommutative_operator): Check the availability of barrel
3516 shifter option.
3517
3518 2018-04-09 Richard Biener <rguenther@suse.de>
3519
3520 PR tree-optimization/85284
3521 * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
3522 Only use the niter constraining form of simple_iv when the exit
3523 is always executed.
3524
3525 2018-04-09 Tom de Vries <tom@codesourcery.com>
3526
3527 PR target/84041
3528 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
3529 (define_expand "*memory_barrier"): New define_expand.
3530 (define_insn "memory_barrier"): New insn.
3531
3532 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3533
3534 PR rtl-optimization/80463
3535 PR rtl-optimization/83972
3536 PR rtl-optimization/83480
3537
3538 * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
3539 correct producer for the insn.
3540 (tidy_control_flow): Fixup seqnos in case of debug insns.
3541
3542 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3543
3544 PR rtl-optimization/83913
3545
3546 * sel-sched-ir.c (merge_expr_data): Choose the middle between two
3547 different sched-times when merging exprs.
3548
3549 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3550
3551 PR rtl-optimization/83962
3552
3553 * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
3554 tidy_fallthru_edge and tidy_control_flow.
3555
3556 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3557
3558 PR rtl-optimization/83530
3559
3560 * sel-sched.c (force_next_insn): New global variable.
3561 (remove_insn_for_debug): When force_next_insn is true, also leave only
3562 next insn in the ready list.
3563 (sel_sched_region): When the region wasn't scheduled, make another pass
3564 over it with force_next_insn set to 1.
3565
3566 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
3567
3568 * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
3569 into tm_file.
3570 * config/nds32/constants.md (unspec_volatile_element): Add enum values
3571 for interrupt control.
3572 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
3573 functions for interrupt control.
3574 * config/nds32/nds32-intrinsic.md: Likewise.
3575 * config/nds32/nds32_intrinsic.h: Likewise.
3576 * config/nds32/nds32.h (nds32_builtins): Likewise.
3577
3578 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
3579
3580 * config/nds32/nds32.c (nds32_init_machine_status,
3581 nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
3582 strict_aligned_p field.
3583 (nds32_expand_to_rtl_hook): New function.
3584 (TARGET_EXPAND_TO_RTL_HOOK): Define.
3585 * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
3586
3587 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3588 Chung-Ju Wu <jasonwucj@gmail.com>
3589
3590 * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
3591 * config/nds32/nds32-n7.md: New file.
3592 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
3593 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
3594 pipeline.
3595 * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
3596 * config/nds32/nds32.md (pipeline_model): Add n7.
3597 * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
3598 * config/nds32/pipelines.md: Include n7 settings.
3599
3600 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3601 Chung-Ju Wu <jasonwucj@gmail.com>
3602
3603 * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
3604 * config/nds32/nds32-e8.md: New file.
3605 * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
3606 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
3607 pipeline.
3608 * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
3609 * config/nds32/nds32.md (pipeline_model): Add e8.
3610 * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
3611 * config/nds32/pipelines.md: Include e8 settings.
3612
3613 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3614 Chung-Ju Wu <jasonwucj@gmail.com>
3615
3616 * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
3617 * config/nds32/nds32-n8.md: New file.
3618 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
3619 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
3620 pipeline.
3621 * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
3622 * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
3623 * config/nds32/nds32.md (pipeline_model): Add n8.
3624 * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
3625 * config/nds32/pipelines.md: Include n8 settings.
3626
3627 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3628 Chung-Ju Wu <jasonwucj@gmail.com>
3629
3630 * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
3631 * config/nds32/nds32-n9-2r1w.md: New file.
3632 * config/nds32/nds32-n9-3r2w.md: New file.
3633 * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
3634 nds32_register_ports): New or modify for cpu n9.
3635 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
3636 pipeline.
3637 * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
3638 * config/nds32/nds32-utils.c: New file.
3639 * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
3640 TARGET_MUL_SLOW): Define.
3641 * config/nds32/nds32.md (pipeline_model): New attribute.
3642 * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
3643 New options that support cpu n9.
3644 * config/nds32/pipelines.md: Include n9 settings.
3645 * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
3646
3647 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
3648
3649 * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
3650 information if necessary.
3651 (output_cond_branch_compare_zero): Likewise.
3652 * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
3653 (nds32_target_alignment): Refine for alignment.
3654 * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
3655 (FUNCTION_BOUNDARY): Modify.
3656 * config/nds32/nds32.md (call_internal, call_value_internal): Consider
3657 align case.
3658 * config/nds32/nds32.opt (malways-align, malign-functions): New.
3659
3660 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
3661
3662 * config/nds32/constants.md (unspec_volatile_element): Add values for
3663 TLB operation and data prefetch.
3664 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
3665 functions for TLB operation and data prefetch.
3666 * config/nds32/nds32-intrinsic.md: Likewise.
3667 * config/nds32/nds32_intrinsic.h: Likewise.
3668 * config/nds32/nds32.c (nds32_dpref_names): Likewise.
3669 (nds32_print_operand): Likewise.
3670 * config/nds32/nds32.h (nds32_builtins): Likewise.
3671
3672 2018-04-07 Thomas Koenig <tkoenig@gcc.gnu.org>
3673 Andrew Pinski <pinsika@gcc.gnu.org>
3674
3675 PR middle-end/82976
3676 * match.pd: Use constant_boolean_node of correct type instead of
3677 boolean_true_node or boolean_false_node for simplifying
3678 pointer comparisons to zero.
3679
3680 2018-04-07 Jakub Jelinek <jakub@redhat.com>
3681
3682 PR tree-optimization/80021
3683 * tree.c (verify_type_variant): Make error call in verify_variant_match
3684 translatable and remove final full stop.
3685
3686 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3687
3688 * config/nds32/constants.md (unspec_volatile_element): Add
3689 UNSPEC_VOLATILE_EH_RETURN.
3690 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
3691 nds32_output_stack_pop): Support dwarf exception handling process.
3692 * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
3693 * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
3694 exception handling process.
3695 (nds32_compute_stack_frame): Likewise.
3696 (nds32_return_addr_rtx): Likewise.
3697 (nds32_initial_elimination_offset): Likewise.
3698 (nds32_expand_prologue): Likewise.
3699 (nds32_expand_epilogue): Likewise.
3700 (nds32_dynamic_chain_address): New function.
3701 * config/nds32/nds32.h (machine_function): Add fields for dwarf
3702 exception handling.
3703 (DYNAMIC_CHAIN_ADDRESS): Define.
3704 (EH_RETURN_DATA_REGNO): Define.
3705 (EH_RETURN_STACKADJ_RTX): Define.
3706 * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
3707 patterns for dwarf exception handling.
3708
3709 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3710
3711 * config/nds32/nds32.h: Clean up obsolete macros.
3712
3713 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3714
3715 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3716 Add enum values for particular instructions.
3717 * config/nds32/nds32-intrinsic.c: Implementation of expanding
3718 particular intrinsic functions.
3719 * config/nds32/nds32-intrinsic.md: Likewise.
3720 * config/nds32/nds32_intrinsic.h: Likewise.
3721 * config/nds32/nds32.h (nds32_builtins): Likewise.
3722 * config/nds32/nds32.md (type): Add pbsad and pbsada.
3723 (btst, ave): New patterns for particular instructions.
3724
3725 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3726
3727 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3728 Add enum values for atomic load/store and memory sync.
3729 * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
3730 and memory sync.
3731 * config/nds32/nds32-intrinsic.md: Likewise.
3732 * config/nds32/nds32_intrinsic.h: Likewise.
3733 * config/nds32/nds32.h (nds32_builtins): Likewise.
3734
3735 2018-04-07 Jakub Jelinek <jakub@redhat.com>
3736
3737 PR tree-optimization/85257
3738 * fold-const.c (native_encode_vector): If not all elts could fit
3739 and off is -1, return 0 rather than offset.
3740 * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
3741 (offseti - offset2) / BITS_PER_UNIT as 4th argument to
3742 native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't
3743 adjust buffer in native_interpret_expr call.
3744
3745 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3746
3747 * config/nds32/constants.md (unspec_volatile_element): Add cache
3748 control enum values.
3749 * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
3750 * config/nds32/nds32-intrinsic.md: Add cache control patterns.
3751 * config/nds32/nds32.c (nds32_cctl_names): New.
3752 (nds32_print_operand): Handle cache control register names.
3753 * config/nds32/nds32.h (nds32_builtins): New enum values.
3754 * config/nds32/nds32_intrinsic.h: Add cache control enum types and
3755 macros.
3756 * config/nds32/nds32.md (type): Add mmu.
3757 * config/nds32/pipelines.md (simple_insn): Add mmu.
3758
3759 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3760
3761 * config/nds32/nds32.md (type): Remove call.
3762 * config/nds32/pipelines.md (simple_insn): Likewise.
3763
3764 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3765
3766 * config/nds32/constants.md (unspec_volatile_element): Add
3767 UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
3768 UNSPEC_VOLATILE_FMFCFG.
3769 * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
3770 description for fmfcfg and fmfcsr.
3771 (bdesc_1arg): Add fmtcsr.
3772 (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
3773 (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
3774 * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
3775 unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
3776 unspec_fmfcfg): New patterns.
3777 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
3778 NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
3779 NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
3780 * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
3781 __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
3782 __nds32__fmfcfg): Define.
3783
3784 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3785
3786 * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
3787 intrinsic register names.
3788 * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
3789 intrinsic register enum values and macros.
3790
3791 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3792
3793 * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
3794 for load/store addressing form.
3795 (nds32_print_operand_address): Likewise.
3796
3797 2018-04-06 Eric Botcazou <ebotcazou@adacore.com>
3798
3799 PR target/85196
3800 * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
3801 based on LABEL_REF. Remove useless assertion.
3802 (pic_address_needs_scratch): Fix formatting.
3803 (sparc_legitimize_pic_address): Minor tweaks.
3804 (sparc_delegitimize_address): Adjust assertion accordingly.
3805 * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
3806 into symbolic_operand.
3807 (movsi_high_pic_label_ref): Likewise.
3808 (movsi_lo_sum_pic_label_ref): Likewise.
3809 (movdi_pic_label_ref): Likewise.
3810 (movdi_high_pic_label_ref): Likewise.
3811 (movdi_lo_sum_pic_label_ref): Likewise.
3812
3813 2018-04-06 Amaan Cheval <amaan.cheval@gmail.com>
3814
3815 * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
3816 custom LIB_SPEC setup.
3817
3818 2018-04-06 Ruslan Bukin <br@bsdpad.com>
3819 Kito Cheng <kito.cheng@gmail.com>
3820
3821 * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
3822 * config/riscv/freebsd.h: New.
3823
3824 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
3825
3826 * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
3827 * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
3828 file.
3829
3830 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
3831 Kito Cheng <kito.cheng@gmail.com>
3832
3833 * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
3834 nds32_output_call, nds32_symbol_binds_local_p): New functions.
3835 * config/nds32/nds32-protos.h (nds32_output_call,
3836 nds32_output_return): Declare.
3837 * config/nds32/nds32.md: Refine all the call and return patterns.
3838
3839 2018-04-06 Jakub Jelinek <jakub@redhat.com>
3840
3841 PR debug/85252
3842 * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
3843 build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
3844
3845 PR rtl-optimization/84872
3846 * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
3847 nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
3848 EDGE_CROSSING edge.
3849
3850 2018-04-06 Tamar Christina <tamar.christina@arm.com>
3851
3852 * expr.c (copy_blkmode_to_reg): Revert 254862.
3853 * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
3854
3855 2018-04-06 Richard Biener <rguenther@suse.de>
3856
3857 PR middle-end/85244
3858 * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
3859 after seeing a component reference with an adjacent field. Treat
3860 refs to arrays at struct end of external decls similar to
3861 refs to unconstrained commons.
3862
3863 2018-04-06 Jakub Jelinek <jakub@redhat.com>
3864
3865 PR sanitizer/85213
3866 * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
3867 look through SAVE_EXPRs with non-side-effects argument. Adjust
3868 recursive calls.
3869 (fold_comparison): Adjust twoval_comparison_p caller, don't handle
3870 save_p here.
3871
3872 2018-04-06 Richard Biener <rguenther@suse.de>
3873
3874 PR middle-end/85180
3875 * alias.c (find_base_term): New wrapper around find_base_term
3876 unwinding CSELIB_VAL_PTR changes.
3877 (find_base_term): Do not restore CSELIB_VAL_PTR during the
3878 recursion.
3879
3880 2018-04-06 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
3881
3882 * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
3883 instructions.
3884 * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
3885 constant definitions.
3886 ("nop"): lr 0,0 -> nopr r0
3887 ("nop_lr0", "nop_lr1"): New insn definitions.
3888
3889 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
3890
3891 * config/nds32/nds32.md (*stack_push, *stack_pop): Use
3892 NDS32_V3PUSH_AVAILABLE_P macro.
3893
3894 2018-04-06 Monk Chiang <sh.chiang04@gmail.com>
3895 Chung-Ju Wu <jasonwucj@gmail.com>
3896
3897 * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
3898 (nds32*-*-*): Add float and fpu_config into supported_defaults.
3899 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
3900 Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
3901 * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
3902 UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
3903 * config/nds32/constraints.md: New constraints and checking for hard
3904 float configuration.
3905 * config/nds32/iterators.md: New mode iterator and attribute for hard
3906 float configuration.
3907 * config/nds32/nds32-doubleword.md: Use hard float alternatives and
3908 patterns.
3909 * config/nds32/nds32-fpu.md: New file.
3910 * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
3911 deal with hard float code generation.
3912 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
3913 ARCH_V3S.
3914 (abi_type, float_reg_number): New enum type.
3915 * config/nds32/nds32-predicates.c: New predicates for hard float.
3916 * config/nds32/nds32-protos.h: Declare functions for hard float.
3917 * config/nds32/nds32.c: Implementation for hard float configuration.
3918 * config/nds32/nds32.h: Definitions for hard float configuration.
3919 * config/nds32/nds32.md: Include hard float machine description and
3920 modify patterns for hard float configuration.
3921 * config/nds32/nds32.opt: New options for hard float configuration.
3922 * config/nds32/predicates.md: New predicates for hard float
3923 configuration.
3924
3925 2018-04-06 Kuan-Lin Chen <kuanlinchentw@gmail.com>
3926
3927 * common/config/nds32/nds32-common.c
3928 (nds32_option_optimization_table): Enable -mreleax-hint by default.
3929
3930 2018-04-05 Jakub Jelinek <jakub@redhat.com>
3931
3932 PR middle-end/85195
3933 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
3934 CONSTRUCTOR_ELT (ctor, ...)->value.
3935
3936 2018-04-05 Uros Bizjak <ubizjak@gmail.com>
3937
3938 PR target/85193
3939 * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
3940
3941 2018-04-05 Tom de Vries <tom@codesourcery.com>
3942
3943 PR target/85204
3944 * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
3945 cond jump.
3946
3947 2018-04-05 Shiva Chen <shiva0217@gmail.com>
3948 Kito Cheng <kito.cheng@gmail.com>
3949
3950 * config/nds32/constraints.md (U33): Fine-tune checking condition.
3951 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
3952 * config/nds32/nds32.h (nds32_16bit_address_type): Add
3953 ADDRESS_POST_MODIFY_LO_REG_IMM3U.
3954
3955 2018-04-05 Shiva Chen <shiva0217@gmail.com>
3956 Kito Cheng <kito.cheng@gmail.com>
3957
3958 * config/nds32/constraints.md (Ufe): New memory constraint.
3959 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
3960 nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
3961 * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
3962 operands.
3963 * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
3964 * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
3965
3966 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3967
3968 * config/nds32/nds32.md: Use optimize_size in the condition for
3969 alu-shift instructions.
3970
3971 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3972
3973 * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
3974
3975 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3976
3977 * config/nds32/nds32.md (negsi2): Refine pattern.
3978
3979 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
3980 Chung-Ju Wu <jasonwucj@gmail.com>
3981
3982 * config/nds32/iterators.md (shift_rotate): New code iterator.
3983 (shift): New code attribute.
3984 * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
3985 * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
3986 * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
3987 * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
3988 bit-wise operations.
3989 (andsi3, *andsi3): Ditto.
3990 (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
3991 (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
3992 (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
3993 * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
3994 nds32_ior_operand, nds32_xor_operand): New predicates.
3995
3996 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3997
3998 * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
3999 (addsi3, subsi3): ... this.
4000
4001 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
4002
4003 * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
4004
4005 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
4006
4007 * config/nds32/nds32.md: Adjust indention.
4008
4009 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
4010
4011 * config/nds32/nds32.md (feature): New attribute.
4012
4013 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
4014
4015 * config/nds32/nds32.md (subtype): New attribute.
4016
4017 2018-04-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
4018
4019 PR target/85203
4020 * config/arm/arm-builtins.c (arm_expand_builtin): Change
4021 expansion to perform a bitwise AND of the argument followed by a
4022 boolean negation of the result.
4023
4024 2018-04-04 Peter Bergner <bergner@vnet.ibm.com>
4025
4026 PR rtl-optimization/84878
4027 * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
4028 the basic block. Assert the use reference is not artificial and that
4029 it has an associated insn.
4030
4031 2018-04-04 Michael Matz <matz@suse.de>
4032
4033 * builtins.c (compute_objsize): Pass correct operand
4034 to array_at_struct_end_p.
4035
4036 2018-04-04 Richard Biener <rguenther@suse.de>
4037
4038 PR lto/85176
4039 * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
4040 from contexts for DINFO_LEVEL_TERSE and below.
4041
4042 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
4043
4044 * config/nds32/nds32-doubleword.md (move_<mode>): Require
4045 resiter_operand condition.
4046 * config/nds32/nds32.md (*move<mode>): Ditto.
4047
4048 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
4049 Monk Chiang <sh.chiang04@gmail.com>
4050
4051 * config/nds32/nds32.md (movmisalign<mode>): New pattern.
4052
4053 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
4054
4055 * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
4056
4057 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
4058 Kito Cheng <kito.cheng@gmail.com>
4059
4060 * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
4061 nds32_cond_code_str, output_cond_branch,
4062 output_cond_branch_compare_zero, nds32_expand_cbranch,
4063 nds32_expand_cstore, nds32_expand_movcc,
4064 nds32_output_cbranchsi4_equality_zero,
4065 nds32_output_cbranchsi4_equality_reg,
4066 nds32_output_cbranchsi4_equality_reg_or_const_int,
4067 nds32_output_cbranchsi4_greater_less_zero: New functions.
4068 * config/nds32/nds32-protos.h (nds32_expand_cbranch,
4069 nds32_expand_cstore, nds32_expand_movcc,
4070 nds32_output_cbranchsi4_equality_zero,
4071 nds32_output_cbranchsi4_equality_reg,
4072 nds32_output_cbranchsi4_equality_reg_or_const_int,
4073 nds32_output_cbranchsi4_greater_less_zero): Declare.
4074 * config/nds32/predicates.md (nds32_movecc_comparison_operator,
4075 nds32_rimm11s_operand): New predicates.
4076 * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
4077 * config/nds32/nds32.md: Rewrite all the branch and conditional move
4078 patterns.
4079
4080 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
4081
4082 * config/nds32/nds32-doubleword.md: Refine all the instruction type.
4083 * config/nds32/nds32.md: Ditto.
4084 * config/nds32/pipelines.md: Ditto.
4085
4086 2018-04-04 Richard Biener <rguenther@suse.de>
4087
4088 PR tree-optimization/85168
4089 * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
4090 propagating abnormals.
4091
4092 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
4093
4094 * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
4095
4096 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
4097 Kito Cheng <kito.cheng@gmail.com>
4098
4099 * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
4100 * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
4101 * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
4102 (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
4103 * config/nds32/nds32.md (sibcall_internal): New.
4104 (sibcall_register): Remove.
4105 (sibcall_immediate): Remove.
4106 (sibcall_value_internal): New.
4107 (sibcall_value_register): Remove.
4108 (sibcall_value_immediate): Remove.
4109 * config/nds32/predicates.md (nds32_general_register_operand): New.
4110 (nds32_call_address_operand): New.
4111
4112 2018-04-03 Jakub Jelinek <jakub@redhat.com>
4113
4114 PR rtl-optimization/85167
4115 * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
4116 bb_defs if *split_p, instead preinitialize it to NULL.
4117
4118 PR tree-optimization/85156
4119 * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
4120 evaluating the argument multiple times.
4121
4122 2018-04-03 Bill Schmidt <wschmidt@linux.ibm.com>
4123
4124 * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
4125 than vector.
4126 (_mm_cvtpd_ps): Likewise.
4127 (_mm_cvttpd_epi32): Likewise.
4128 * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
4129 * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
4130 vector, pixel, and bool following altivec.h include.
4131
4132 2018-04-03 Martin Sebor <msebor@redhat.com>
4133
4134 * doc/extend.texi (Common Function Attributes): Clarify.
4135 (const attribute): Likewise.
4136 (pure attribute): Likewise.
4137
4138 2018-04-03 Jakub Jelinek <jakub@redhat.com>
4139
4140 PR target/85169
4141 * config/i386/i386.c (ix86_expand_vector_set): Use
4142 HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix.
4143
4144 2018-04-03 Uros Bizjak <ubizjak@gmail.com>
4145
4146 * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
4147 instructions when changing rounding bits to preserve precision bits
4148 in the x87 control word.
4149
4150 2018-04-03 Martin Liska <mliska@suse.cz>
4151
4152 PR tree-optimization/82491
4153 * rtl.h (strip_offset_and_add): Replace += suboffset with
4154 poly_uint64 () + suboffset.
4155
4156 2018-03-29 Martin Liska <mliska@suse.cz>
4157 Martin Jambor <mjambor@suse.cz>
4158
4159 PR ipa/84947
4160 * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
4161 param_type is not an integral or pointer type.
4162
4163 2018-04-03 Richard Biener <rguenther@suse.de>
4164
4165 * sese.h (recompute_all_dominators): Remove.
4166
4167 2018-04-02 Martin Sebor <msebor@redhat.com>
4168
4169 * doc/invoke.texi (-Wrestrict): Fix typos.
4170
4171 2018-04-02 Jim Wilson <jimw@sifive.com>
4172
4173 * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
4174 * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
4175 (<optab>di3, <optab>si3_extend): Likewise.
4176 (<optab>si3_mask, <optab>si3_mask_1): New.
4177 (<optab>di3_mask, <optab>di3_mask_1): New.
4178 (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
4179 (lshrsi3_zero_extend_1): Use VOIDmode shift count.
4180 * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
4181
4182 2018-04-02 Gerald Pfeifer <gerald@pfeifer.com>
4183
4184 * doc/cpp.texi (Variadic Macros): Fix line continuation in an
4185 example.
4186
4187 2018-04-02 Chung-Ju Wu <jasonwucj@gmail.com>
4188
4189 * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
4190 (nds32_canonicalize_comparison): New function.
4191
4192 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
4193 Kito Cheng <kito.cheng@gmail.com>
4194 Kuan-Lin Chen <kuanlinchentw@gmail.com>
4195
4196 * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
4197 * config/nds32/constants.md (unspec_volatile_element): Add
4198 UNSPEC_VOLATILE_RELAX_GROUP.
4199 * config/nds32/nds32-relax-opt.c: New file.
4200 * config/nds32/nds32-predicates.c
4201 (nds32_symbol_load_store_p): New function.
4202 * config/nds32/nds32-protos.h
4203 (nds32_symbol_load_store_p): Declare function.
4204 (make_pass_nds32_relax_opt): Declare new rtl pass function.
4205 * config/nds32/nds32.c
4206 (nds32_register_pass): New function to register pass.
4207 (nds32_register_passes): New function to register passes.
4208 * config/nds32/nds32.md (relax_group): New pattern.
4209 * config/nds32/nds32.opt (mrelax-hint): New option.
4210 * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
4211
4212 2018-04-01 Kito Cheng <kito.cheng@gmail.com>
4213
4214 * config/nds32/t-nds32: Modify files dependency.
4215
4216 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
4217
4218 * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
4219 (PROFILE_HOOK): Define its implementation.
4220
4221 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
4222
4223 * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
4224 type and 32-bit size.
4225
4226 2018-04-01 Jakub Jelinek <jakub@redhat.com>
4227
4228 PR middle-end/85090
4229 * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
4230 (V_128_256): New mode iterator.
4231 (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
4232 (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
4233 (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
4234 of V.
4235 * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
4236 V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
4237
4238 2018-03-31 Segher Boessenkool <segher@kernel.crashing.org>
4239
4240 PR target/83315
4241 * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
4242 NaN inputs correctly.
4243
4244 2018-03-30 Peter Bergner <bergner@vnet.ibm.com>
4245
4246 PR target/80546
4247 * config/rs6000/vsx.md (??r): New mode attribute.
4248 (*vsx_mov<mode>_64bit): Use it.
4249 (*vsx_mov<mode>_32bit): Likewise.
4250
4251 2018-03-30 Martin Sebor <msebor@redhat.com>
4252
4253 PR tree-optimization/84818
4254 * builtins.c (check_access): Use warning_n.
4255
4256 2018-03-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
4257
4258 PR target/83822
4259 * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
4260 condition.
4261 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
4262 condition.
4263
4264 2018-03-30 Julia Koval <julia.koval@intel.com>
4265
4266 PR target/84413
4267 * x86-tune.def (movx, partial_reg_dependency): Enable for
4268 m_SKYLAKE_AVX512.
4269
4270 2018-03-29 Vladimir Makarov <vmakarov@redhat.com>
4271
4272 PR inline-asm/84985
4273 * lra-constraints.c (process_alt_operands): Move setting
4274 this_alternative_matches below.
4275
4276 2018-03-29 Martin Liska <mliska@suse.cz>
4277
4278 PR lto/84995.
4279 * doc/invoke.texi: Document how LTO works with debug info.
4280 Describe auto-load support of binutils. Mention 'x86-64'
4281 as valid option value of -march option.
4282
4283 2018-03-29 Jakub Jelinek <jakub@redhat.com>
4284
4285 * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
4286
4287 PR c/85094
4288 * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
4289 For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
4290 OEP_NO_HASH_CHECK for recursive call, to avoid exponential
4291 checking.
4292
4293 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
4294
4295 PR target/84912
4296 * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
4297 (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
4298 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
4299 for RS6000_BTM_POWERPC64.
4300 (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
4301 (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
4302 * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
4303 definition.
4304 (DIVDE): Use it.
4305 (DIVDEU): Likewise.
4306
4307 2018-03-28 Carl Love <cel@us.ibm.com>
4308
4309 Revert
4310 2017-09-27 Carl Love <cel@us.ibm.com>
4311
4312 * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
4313 (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
4314 * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
4315 fctiw instruction.
4316
4317 2018-03-28 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
4318
4319 * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
4320 instead of __vector bool.
4321 (_mm_max_pu8): Likewise.
4322 (_mm_min_pi16): Likewise.
4323
4324 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
4325
4326 PR target/84912
4327 * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
4328 (DIVWEUO): Likewise.
4329 (DIVDEO): Likewise.
4330 (DIVDEUO): Likewise.
4331 * config/rs6000/rs6000.c (builtin_function_type): Remove support for
4332 DIVWEUO and DIVDEUO.
4333 * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
4334 (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
4335 (div_extend): Likewise.
4336 * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
4337 builtin function.
4338 (__builtin_divweuo): Likewise.
4339 (__builtin_divdeo): Likewise.
4340 (__builtin_divdeuo): Likewise.
4341
4342 2018-03-28 Jakub Jelinek <jakub@redhat.com>
4343
4344 PR target/85095
4345 * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
4346 *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
4347
4348 PR tree-optimization/82004
4349 * gimple-match-head.c (optimize_pow_to_exp): New function.
4350 * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
4351 Don't fold to exp if optimize_pow_to_exp is false.
4352
4353 2018-03-28 Martin Liska <mliska@suse.cz>
4354
4355 PR other/84819
4356 * calls.c (initialize_argument_information): Fix trailing space.
4357 * common.opt: Fix typo and provide better explanation for
4358 -fsanitize-coverage option.
4359 * config/i386/i386.opt: Fix typo.
4360
4361 2018-03-28 Jakub Jelinek <jakub@redhat.com>
4362 Martin Liska <mliska@suse.cz>
4363
4364 PR sanitizer/85081
4365 * gimplify.c (asan_poison_variable): Don't do the check for
4366 gimplify_omp_ctxp here.
4367 (gimplify_decl_expr): Do it here.
4368 (gimplify_target_expr): Likewise.
4369
4370 2018-03-28 Martin Liska <mliska@suse.cz>
4371
4372 PR target/84988
4373 * config/i386/i386.c (ix86_function_arg_advance): Do not call
4374 chkp_type_bounds_count if MPX is not enabled.
4375
4376 2018-03-27 Chung-Ju Wu <jasonwucj@gmail.com>
4377
4378 * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
4379
4380 2018-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
4381
4382 PR target/84914
4383 * config/rs6000/rs6000.c (create_complex_muldiv): New helper
4384 function to create the function decl for complex long double
4385 multiply and divide for -mabi=ieeelongdouble.
4386 (init_float128_ieee): Call it.
4387
4388 2018-03-27 H.J. Lu <hongjiu.lu@intel.com>
4389
4390 PR target/85044
4391 * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
4392 -fcf-protection=branch -mibt.
4393 * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
4394
4395 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4396
4397 PR target/81863
4398 * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
4399
4400 2018-03-27 Cesar Philippidis <cesar@codesourcery.com>
4401
4402 PR target/85056
4403 * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
4404 extern array declarations.
4405
4406 2018-03-27 Richard Biener <rguenther@suse.de>
4407
4408 PR middle-end/84067
4409 * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
4410 explicit single_use checks.
4411
4412 2018-03-27 Richard Biener <rguenther@suse.de>
4413
4414 PR tree-optimization/85082
4415 * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
4416 Valueize the VUSE.
4417
4418 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4419
4420 * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
4421 * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
4422 Turn on fasynchronous-unwind-tables and funwind-tables.
4423
4424 2018-03-26 Uros Bizjak <ubizjak@gmail.com>
4425
4426 PR target/85073
4427 * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
4428 (*bmi_blsr_<mode>_ccz): Ditto.
4429
4430 2018-03-26 Tom de Vries <tom@codesourcery.com>
4431
4432 PR tree-optimization/85063
4433 * omp-general.c (offloading_function_p): New function. Factor out
4434 of ...
4435 * omp-offload.c (pass_omp_target_link::gate): ... here.
4436 * omp-general.h (offloading_function_p): Declare.
4437 * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
4438 with attribute omp declare target for offloading functions.
4439
4440 2018-03-24 Richard Sandiford <richard.sandiford@linaro.org>
4441
4442 PR tree-optimization/84005
4443 * tree-data-ref.h (get_base_for_alignment): Declare.
4444 * tree-data-ref.c (get_base_for_alignment_1): New function.
4445 (get_base_for_alignment): Likewise.
4446 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
4447 get_base_for_alignment to find a suitable base object, instead
4448 of always using drb->base_address.
4449
4450 2018-03-23 Jakub Jelinek <jakub@redhat.com>
4451
4452 PR inline-asm/85022
4453 * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
4454 known size by default.
4455
4456 2018-03-23 Vladimir Makarov <vmakarov@redhat.com>
4457
4458 PR inline-asm/85030
4459 * lra-constraints.c (process_alt_operands): Don't match BLKmode
4460 and non BLKmode operands.
4461
4462 2018-03-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4463
4464 PR target/85026
4465 * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
4466 Clean up attributes.
4467
4468 2018-03-23 Richard Biener <rguenther@suse.de>
4469
4470 PR debug/85020
4471 * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
4472 we are going to emit early debug for LTO.
4473
4474 2018-03-23 Jakub Jelinek <jakub@redhat.com>
4475
4476 PR inline-asm/85034
4477 * function.c (match_asm_constraints_1): Don't optimize if input
4478 doesn't satisfy general_operand predicate for output's mode.
4479
4480 PR inline-asm/85022
4481 * alias.c (write_dependence_p): Don't require for x_canonicalized
4482 non-VOIDmode if x has VOIDmode.
4483
4484 PR sanitizer/85029
4485 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
4486 just don't try to optimize it rather than assert it never happens.
4487
4488 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
4489
4490 * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
4491 macro expansions for definition of ST_INTERNAL_<mode> and
4492 LD_INTERNAL_<mode> builtins.
4493 * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
4494 Remove prototype.
4495 * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
4496 function.
4497 (altivec_expand_st_builtin): Likewise.
4498 (altivec_expand_builtin): Remove calls to deleted functions.
4499 (rs6000_address_for_altivec): Delete this function.
4500 * config/rs6000/vector.md: Remove expands for
4501 vector_altivec_load_<mode> and vector_altivec_store_<mode>.
4502
4503 2018-03-22 Sudakshina Das <sudi.das@arm.com>
4504
4505 PR target/84826
4506 * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
4507 * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
4508 re-computing once computed.
4509 (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
4510 (arm_init_machine_status): Initialize
4511 machine->static_chain_stack_bytes.
4512
4513 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
4514
4515 PR target/84760
4516 * doc/extend.texi: Add four new prototypes for vec_ld.
4517 * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
4518 definitions for more logical presentation.
4519 * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
4520 entries for V1TI variants of __builtin_altivec_ld builtin.
4521 * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
4522 handling of V1TI variant of LVX icode pattern.
4523 (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
4524 (rs6000_gimple_fold_builtin): Likewise.
4525 (altivec_init_builtins): Add code to define
4526 __builtin_altivec_lvx_v1ti function.
4527
4528 2018-03-22 Jakub Jelinek <jakub@redhat.com>
4529
4530 PR inline-asm/84941
4531 * function.c (match_asm_constraints_1): Don't do the optimization
4532 if input isn't a REG, SUBREG, MEM or constant.
4533
4534 2018-03-22 Tom de Vries <tom@codesourcery.com>
4535
4536 PR tree-optimization/84956
4537 * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
4538 bb_has_abnormal_pred.
4539
4540 2018-03-22 Jakub Jelinek <jakub@redhat.com>
4541
4542 PR sanitizer/85018
4543 * dwarf2asm.c (dw2_output_indirect_constant_1): Set
4544 DECL_INITIAL (decl) to decl at the end.
4545 * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
4546 adjust the comment.
4547
4548 2018-03-21 Joseph Myers <joseph@codesourcery.com>
4549
4550 * doc/extend.texi (__builtin_tgmath): Document when complex
4551 integer types are treated as _Complex _Float64.
4552
4553 2018-03-21 Tom de Vries <tom@codesourcery.com>
4554
4555 * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
4556
4557 2018-03-21 Jakub Jelinek <jakub@redhat.com>
4558
4559 PR tree-optimization/84960
4560 * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
4561 if it is ENTRY block, move them into single succ of ENTRY in that case.
4562
4563 2018-03-21 Richard Sandiford <richard.sandiford@linaro.org>
4564
4565 PR tree-optimization/84811
4566 * poly-int.h (poly_span_traits): Remove the T3 parameter and
4567 promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
4568 (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
4569 (known_subrange_p): Update accordingly. Cast each value involved
4570 in the size comparison, rather than casting the result of the
4571 subtraction.
4572
4573 2018-03-21 Jakub Jelinek <jakub@redhat.com>
4574
4575 PR tree-optimization/84982
4576 * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
4577 by flipping the least significant bit rather than all bits from
4578 bitpos to bitpos + bitsize - 1.
4579
4580 2018-03-21 Nathan Sidwell <nathan@acm.org>
4581
4582 * doc/extend.texi (Deprecated Features): Remove mention of
4583 long-deleted deprecations.
4584
4585 2018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4586
4587 PR jit/84288
4588 * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
4589 * configure: Regenerate.
4590
4591 2018-03-21 Tom de Vries <tom@codesourcery.com>
4592
4593 PR tree-optimization/83126
4594 * tree-parloops.c (num_phis): New function.
4595 (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
4596
4597 2018-03-21 Nathan Sidwell <nathan@acm.org>
4598
4599 * doc/extend.texi (Deprecated Features): Update deprecated flags,
4600 mention anon-struct/union members and trailing attributes.
4601
4602 2018-03-21 Bin Cheng <bin.cheng@arm.com>
4603
4604 PR tree-optimization/84969
4605 * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
4606 builtin memset partitions if they set different rhs values.
4607
4608 2018-03-21 Jakub Jelinek <jakub@redhat.com>
4609
4610 PR rtl-optimization/84989
4611 * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
4612 VEC_DUPLICATE with scalar result mode.
4613
4614 2018-03-21 Martin Liska <mliska@suse.cz>
4615
4616 PR ipa/84963
4617 * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
4618 not intended return statement.
4619
4620 2018-03-21 Martin Liska <mliska@suse.cz>
4621
4622 PR target/84988
4623 * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
4624 (chkp_find_bound_slots_1): Limit number of iterations.
4625
4626 2018-03-20 David H. Gutteridge <dhgutteridge@sympatico.ca>
4627
4628 PR target/84838
4629 * Minor grammar fixes for x86 options.
4630
4631 2018-03-20 Jakub Jelinek <jakub@redhat.com>
4632
4633 PR debug/84875
4634 * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
4635 holding REG_CFA_RESTORE notes, instead turn them into a USE.
4636
4637 2018-03-20 Peter Bergner <bergner@vnet.ibm.com>
4638
4639 PR target/83789
4640 * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
4641 (altivec_lvx_<mode>_1op): Likewise.
4642 (altivec_stvx_<mode>_2op): Likewise.
4643 (altivec_stvx_<mode>_1op): Likewise.
4644 (altivec_lvx_<VM2:mode>): New define_expand.
4645 (altivec_stvx_<VM2:mode>): Likewise.
4646 (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
4647 (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
4648 (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
4649 (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
4650 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
4651 (rs6000_gen_lvx): Likewise.
4652 * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
4653 (altivec_expand_stv_builtin): Likewise.
4654 (altivec_expand_builtin): Likewise.
4655 * config/rs6000/vector.md: Likewise.
4656
4657 2018-03-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4658
4659 PR target/82518
4660 * config/arm/arm.c (arm_array_mode_supported_p): Return false for
4661 BYTES_BIG_ENDIAN.
4662
4663 2018-03-20 Richard Biener <rguenther@suse.de>
4664
4665 PR target/84986
4666 * config/i386/i386.c (ix86_add_stmt_cost): Only cost
4667 sign-conversions as zero, fall back to standard scalar_stmt
4668 cost for the rest.
4669
4670 2018-03-20 Martin Liska <mliska@suse.cz>
4671
4672 PR ipa/84825
4673 * predict.c (rebuild_frequencies): Handle case when we have
4674 PROFILE_ABSENT, but flag_guess_branch_prob is false.
4675
4676 2018-03-20 Jakub Jelinek <jakub@redhat.com>
4677
4678 PR target/84990
4679 * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
4680 flag_section_anchors.
4681 * varasm.c (use_blocks_for_decl_p): Remove hack for
4682 dw2_force_const_mem.
4683
4684 PR target/84845
4685 * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
4686 to ...
4687 (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this. If pseudos can't
4688 be created, use lowpart_subreg of operands[0] rather than operands[0]
4689 itself.
4690 (*aarch64_reg_<mode>3_minus_mask): Rename to ...
4691 (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
4692 (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
4693 and n constraint instead of aarch64_shift_imm_di and Usd.
4694 (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
4695 (*aarch64_<optab>_reg_minus<mode>3): ... this.
4696
4697 2018-03-20 Sudakshina Das <sudi.das@arm.com>
4698
4699 PR target/82989
4700 * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
4701 to favor GPR over NEON registers.
4702 (<shift>di3_neon): Likewise.
4703
4704 2018-03-20 Tom de Vries <tom@codesourcery.com>
4705
4706 PR target/84952
4707 * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
4708 (nvptx_process_pars): Emit bar.sync asap and alap.
4709
4710 2018-03-20 Tom de Vries <tom@codesourcery.com>
4711
4712 PR target/84954
4713 * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
4714 seen_label if seen_label is already set.
4715
4716 2018-03-20 Jakub Jelinek <jakub@redhat.com>
4717
4718 PR target/84945
4719 * config/i386/i386.c (fold_builtin_cpu): For features above 31
4720 use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
4721 Use 1U instead of 1. Formatting fixes.
4722
4723 PR c/84953
4724 * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
4725 instead of TREE_TYPE (s1) for the return value.
4726
4727 2018-03-19 Jakub Jelinek <jakub@redhat.com>
4728
4729 PR tree-optimization/84946
4730 * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
4731 bitsize + bitsize in poly_uint64 rather than poly_int64.
4732
4733 PR sanitizer/78651
4734 * dwarf2asm.c: Include fold-const.c.
4735 (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
4736 of decl rather than decl itself.
4737
4738 PR rtl-optimization/84643
4739 * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
4740
4741 2018-03-19 Maxim Ostapenko <m.ostapenko@samsung.com>
4742
4743 PR sanitizer/78651
4744 * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
4745 calling assemble_variable.
4746
4747 2018-03-19 Sudakshina Das <sudi.das@arm.com>
4748
4749 PR target/81647
4750 * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
4751 instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
4752
4753 2018-03-19 Jim Wilson <jimw@sifive.com>
4754
4755 PR bootstrap/84856
4756 * config/riscv/riscv.c (riscv_function_arg_boundary): Use
4757 PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
4758 (riscv_first_stack_step): Likewise.
4759 (riscv_option_override): Use STACK_BOUNDARY instead of
4760 MIN_STACK_BOUNDARY.
4761 * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
4762 MIN_STACK_BOUNDARY.
4763 (BIGGEST_ALIGNMENT): Set to 128.
4764 (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
4765 (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
4766 STACK_BOUNDARY.
4767
4768 2018-03-19 Richard Biener <rguenther@suse.de>
4769
4770 PR tree-optimization/84933
4771 * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
4772 values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
4773
4774 2018-03-19 Richard Biener <rguenther@suse.de>
4775
4776 PR tree-optimization/84859
4777 * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
4778 (cond_if_else_store_replacement): Perform sinking operation on
4779 single-store BBs regardless of MAX_STORES_TO_SINK setting.
4780 Generalize what a BB with a single eligible store is.
4781
4782 2018-03-19 Richard Biener <rguenther@suse.de>
4783
4784 PR tree-optimization/84929
4785 * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
4786 chrec_is_positive against non-chrec arg.
4787
4788 2018-03-19 Tamar Christina <tamar.christina@arm.com>
4789
4790 PR target/84711
4791 * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
4792
4793 2018-03-18 Martin Liska <mliska@suse.cz>
4794
4795 PR rtl-optimization/84635
4796 * regrename.c (build_def_use): Use matches_mode only when
4797 matches >= 0.
4798
4799 2018-03-18 Richard Sandiford <richard.sandiford@linaro.org>
4800
4801 PR tree-optimization/84913
4802 * tree-vect-loop.c (vectorizable_reduction): Don't try to
4803 vectorize chains of COND_EXPRs.
4804
4805 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
4806
4807 * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
4808
4809 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
4810
4811 * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
4812
4813 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
4814
4815 * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
4816
4817 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
4818 Kito Cheng <kito.cheng@gmail.com>
4819
4820 * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
4821 * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
4822 (nds32_adjust_reg_alloc_order): New function.
4823 * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
4824
4825 2018-03-17 Kito Cheng <kito.cheng@gmail.com>
4826
4827 * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
4828 nds32_print_operand, nds32_print_operand_address): Use
4829 HOST_WIDE_INT_PRINT_DEC instead.
4830
4831 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
4832
4833 * config/nds32/nds32.c (nds32_register_priority): Modify cost.
4834
4835 2018-03-17 Jakub Jelinek <jakub@redhat.com>
4836
4837 PR target/84902
4838 * config/i386/i386.c (initial_ix86_tune_features,
4839 initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
4840 unsigned long long.
4841 (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
4842 to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
4843 rather than 1u << ix86_tune. Formatting fix.
4844 (ix86_option_override_internal): Change ix86_arch_mask from
4845 unsigned int to unsigned HOST_WIDE_INT, initialize to
4846 HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
4847 (ix86_function_specific_restore): Likewise.
4848
4849 2018-03-16 Jakub Jelinek <jakub@redhat.com>
4850
4851 PR target/84899
4852 * postreload.c (reload_combine_recognize_pattern): Perform
4853 INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
4854 truncate_int_for_mode the result for the destination's mode.
4855
4856 PR c/84909
4857 * hsa-gen.c (mem_type_for_type): Fix comment typo.
4858 * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
4859 Likewise.
4860 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
4861 Likewise.
4862
4863 2018-03-16 Vladimir Makarov <vmakarov@redhat.com>
4864
4865 PR target/84876
4866 * lra-assigns.c (lra_split_hard_reg_for): Don't use
4867 regno_allocno_class_array and sorted_pseudos.
4868 * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
4869 insns where regno is used.
4870
4871 2018-03-16 Martin Liska <mliska@suse.cz>
4872
4873 PR ipa/84833
4874 * multiple_target.c (create_dispatcher_calls): Redirect
4875 reference in the symbol table.
4876
4877 2018-03-16 Martin Liska <mliska@suse.cz>
4878
4879 PR ipa/84722
4880 * multiple_target.c (create_dispatcher_calls): Redirect also
4881 an alias.
4882
4883 2018-03-16 Jakub Jelinek <jakub@redhat.com>
4884
4885 PR c++/79937
4886 PR c++/82410
4887 * tree.h (TARGET_EXPR_NO_ELIDE): Define.
4888 * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
4889 TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
4890
4891 2018-03-16 Julia Koval <julia.koval@intel.com>
4892
4893 * doc/invoke.texi (Skylake Server): Add CLWB.
4894 Cannonlake): Remove CLWB.
4895
4896 2018-03-16 Jakub Jelinek <jakub@redhat.com>
4897
4898 PR tree-optimization/84841
4899 * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
4900 1 << 3.
4901 (FLOAT_ONE_CONST_TYPE): Define.
4902 (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
4903 (sort_by_operand_rank): Put entries with higher constant_type last
4904 rather than first to match comments.
4905
4906 2018-03-15 Sandra Loosemore <sandra@codesourcery.com>
4907
4908 * config/nios2/nios2.md (movsi_internal): Fix thinko in
4909 split predicate.
4910
4911 2018-03-15 Jakub Jelinek <jakub@redhat.com>
4912
4913 PR c++/79085
4914 * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
4915 check and use address of target always.
4916
4917 2018-03-15 H.J. Lu <hongjiu.lu@intel.com>
4918
4919 PR target/84574
4920 * config/i386/i386.c (indirect_thunk_needed): Update comments.
4921 (indirect_thunk_bnd_needed): Likewise.
4922 (indirect_thunks_used): Likewise.
4923 (indirect_thunks_bnd_used): Likewise.
4924 (indirect_return_needed): New.
4925 (indirect_return_bnd_needed): Likewise.
4926 (output_indirect_thunk_function): Add a bool argument for
4927 function return.
4928 (output_indirect_thunk_function): Don't generate alias for
4929 function return thunk.
4930 (ix86_code_end): Call output_indirect_thunk_function to generate
4931 function return thunks.
4932 (ix86_output_function_return): Set indirect_return_bnd_needed
4933 and indirect_return_needed instead of indirect_thunk_bnd_needed
4934 and indirect_thunk_needed.
4935
4936 2018-03-15 Olga Makhotina <olga.makhotina@intel.com>
4937
4938 * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
4939 (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
4940 (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
4941
4942 2018-03-15 David Malcolm <dmalcolm@redhat.com>
4943 Paul Hua <paul.hua.gm@gmail.com>
4944
4945 PR c/84852
4946 * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
4947
4948 2018-03-15 Segher Boessenkool <segher@kernel.crashing.org>
4949
4950 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
4951 TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
4952 resp. SFmode cases.
4953
4954 2018-03-15 Tamar Christina <tamar.christina@arm.com>
4955
4956 PR target/84711
4957 * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
4958 instead of GET_MODE_SIZE when comparing Units.
4959
4960 2018-03-15 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
4961
4962 PR target/68256
4963 * varasm.c (hash_section): Return an unchangeble hash value
4964 * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
4965 Return !aarch64_can_use_per_function_literal_pools_p ().
4966
4967 2018-03-15 Jakub Jelinek <jakub@redhat.com>
4968
4969 PR target/84860
4970 * optabs.c (emit_conditional_move): Pass address of cmode's copy
4971 rather than address of cmode as last argument to prepare_cmp_insn.
4972
4973 2018-03-15 Julia Koval <julia.koval@intel.com>
4974
4975 * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
4976 F_AVX512VNNI, F_AVX512BITALG): New.
4977
4978 2018-03-14 John David Anglin <danglin@gcc.gnu.org>
4979
4980 PR target/83451
4981 * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload
4982 insn for floating-point loads and stores.
4983
4984 2018-03-14 Carl Love <cel@us.ibm.com>
4985
4986 * config/rs6000/rs6000-c.c: Add macro definitions for
4987 ALTIVEC_BUILTIN_VEC_PERMXOR.
4988 * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
4989 * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
4990 * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
4991 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
4992 UNSPEC_VPERMXOR.
4993 * config/doc/extend.texi: Add prototypes for vec_permxor.
4994
4995 2018-03-14 David Malcolm <dmalcolm@redhat.com>
4996
4997 PR c/84852
4998 * diagnostic-show-locus.c (class layout_point): Convert m_line
4999 from int to linenum_type.
5000 (line_span::comparator): Use linenum "compare" function when
5001 comparing line numbers.
5002 (test_line_span): New function.
5003 (layout_range::contains_point): Convert param "row" from int to
5004 linenum_type.
5005 (layout_range::intersects_line_p): Likewise.
5006 (layout::will_show_line_p): Likewise.
5007 (layout::print_source_line): Likewise.
5008 (layout::should_print_annotation_line_p): Likewise.
5009 (layout::print_annotation_line): Likewise.
5010 (layout::print_leading_fixits): Likewise.
5011 (layout::annotation_line_showed_range_p): Likewise.
5012 (struct line_corrections): Likewise for field m_row.
5013 (line_corrections::line_corrections): Likewise for param "row".
5014 (layout::print_trailing_fixits): Likewise.
5015 (layout::get_state_at_point): Likewise.
5016 (layout::get_x_bound_for_row): Likewise.
5017 (layout::print_line): Likewise.
5018 (diagnostic_show_locus): Likewise for locals "last_line" and
5019 "row".
5020 (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
5021 * input.c (selftest::test_linenum_comparisons): New function.
5022 (selftest::input_c_tests): Call it.
5023 * selftest.c (selftest::test_assertions): Test ASSERT_GT,
5024 ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
5025 * selftest.h (ASSERT_GT): New macro.
5026 (ASSERT_GT_AT): New macro.
5027 (ASSERT_LT): New macro.
5028 (ASSERT_LT_AT): New macro.
5029
5030 2018-03-14 Segher Boessenkool <segher@kernel.crashing.org>
5031
5032 PR rtl-optimization/84780
5033 * combine.c (distribute_links): Don't make a link based on pc_rtx.
5034
5035 2018-03-14 Martin Liska <mliska@suse.cz>
5036
5037 * tree.c (record_node_allocation_statistics): Use
5038 get_stats_node_kind.
5039 (get_stats_node_kind): New function extracted from
5040 record_node_allocation_statistics.
5041 (free_node): Use get_stats_node_kind.
5042
5043 2018-03-14 Richard Biener <rguenther@suse.de>
5044
5045 * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
5046 that the value-set of ANTIC_IN doesn't grow.
5047
5048 Revert
5049 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
5050 member.
5051 (BB_VISITED_WITH_VISITED_SUCCS): New define.
5052 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
5053
5054 2018-03-14 Julia Koval <julia.koval@intel.com>
5055
5056 * config.gcc (icelake-client, icelake-server): New.
5057 (icelake): Remove.
5058 * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
5059 (initial_ix86_arch_features): Ditto.
5060 (PTA_SKYLAKE): Add SGX.
5061 (PTA_ICELAKE): Remove.
5062 (PTA_ICELAKE_CLIENT): New.
5063 (PTA_ICELAKE_SERVER): New.
5064 (ix86_option_override_internal): Split up icelake on icelake client and
5065 icelake server.
5066 (get_builtin_code_for_version): Ditto.
5067 (fold_builtin_cpu): Ditto.
5068 * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
5069 * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
5070 * config/i386/i386.h (processor_type): Ditto.
5071 * doc/invoke.texi: Ditto.
5072
5073 2018-03-14 Jakub Jelinek <jakub@redhat.com>
5074
5075 PR sanitizer/83392
5076 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
5077 INTEGER_CST offset, add it together with bitpos / 8 and
5078 sign extend based on POINTER_SIZE.
5079
5080 PR target/84844
5081 Revert
5082 2017-04-20 Uros Bizjak <ubizjak@gmail.com>
5083
5084 PR target/78090
5085 * config/i386/constraints.md (Yc): New register constraint.
5086 * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
5087 Use Yc constraint for alternative 2 of operand 0. Remove
5088 preferred_for_speed attribute.
5089
5090 2018-03-14 Richard Biener <rguenther@suse.de>
5091
5092 PR tree-optimization/84830
5093 * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
5094 with the old one to avoid oscillations.
5095
5096 2018-03-13 Vladimir Makarov <vmakarov@redhat.com>
5097
5098 PR target/83712
5099 * lra-assigns.c (find_all_spills_for): Ignore uninteresting
5100 pseudos.
5101 (assign_by_spills): Return a flag of reload assignment failure.
5102 Do not process the reload assignment failures. Do not spill other
5103 reload pseudos if they has the same reg class. Update n if
5104 necessary.
5105 (lra_assign): Add a return arg. Set up from the result of
5106 assign_by_spills call.
5107 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5108 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
5109 usage_insns if it is not NULL.
5110 (spill_hard_reg_in_range): New function.
5111 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5112 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5113 function prototypes.
5114 (lra_assign): Change prototype.
5115 * lra.c (lra): Add code to deal with fails by splitting hard reg
5116 live ranges.
5117
5118 2018-03-01 Palmer Dabbelt <palmer@sifive.com>
5119
5120 * config/riscv/riscv.opt (mrelax): New option.
5121 * config/riscv/riscv.c (riscv_file_start): Emit ".option
5122 "norelax" when riscv_mrelax is disabled.
5123 * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
5124
5125 2018-03-13 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
5126
5127 PR target/84743
5128 * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
5129 reassociation for int modes.
5130
5131 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
5132
5133 * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
5134 Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
5135 for big-endian.
5136 * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
5137 * config/aarch64/aarch64-sve.md
5138 (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
5139 (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
5140 (*extend<mode><Vwide>2): Rename to...
5141 (aarch64_sve_extend<mode><Vwide>2): ...this.
5142 (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
5143 renaming the old pattern to...
5144 (aarch64_sve_punpk<perm_hilo>_<mode>): ...this. Only define
5145 unsigned packs.
5146 (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
5147 define_expand, renaming the old pattern to...
5148 (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
5149 (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
5150 (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
5151 account when deciding which SVE instruction the optab should use.
5152 (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
5153
5154 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
5155
5156 * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
5157 (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
5158 (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
5159 (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
5160 (tlsdesc_small_<mode>): Turn a define_expand and use
5161 tlsdesc_small_sve_<mode> for SVE. Rename original define_insn to...
5162 (tlsdesc_small_advsimd_<mode>): ...this.
5163 (tlsdesc_small_sve_<mode>): New pattern.
5164
5165 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
5166
5167 * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
5168 (UNSPEC_UMUL_HIGHPART): New constants.
5169 (MUL_HIGHPART): New int iteraor.
5170 (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
5171 * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
5172 define_expand.
5173 (*<su>mul<mode>3_highpart): New define_insn.
5174
5175 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
5176
5177 PR lto/84805
5178 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
5179 incomplete types.
5180
5181 2018-03-13 Martin Liska <mliska@suse.cz>
5182
5183 PR ipa/84658.
5184 * (sem_item_optimizer::sem_item_optimizer): Initialize new
5185 vector.
5186 (sem_item_optimizer::~sem_item_optimizer): Release it.
5187 (sem_item_optimizer::merge_classes): Register variable aliases.
5188 (sem_item_optimizer::fixup_pt_set): New function.
5189 (sem_item_optimizer::fixup_points_to_sets): Likewise.
5190 * ipa-icf.h: Declare new variables and functions.
5191
5192 2018-03-13 Jakub Jelinek <jakub@redhat.com>
5193
5194 PR middle-end/84834
5195 * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
5196 integer_pow2p@2 and test integer_pow2p in condition.
5197 (A < 0 ? C : 0): Similarly for @1.
5198
5199 PR middle-end/84831
5200 * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
5201 characters starting at p contain '\0' character, don't look beyond
5202 that.
5203
5204 PR target/84827
5205 * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
5206 pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
5207
5208 PR target/84828
5209 * reg-stack.c (change_stack): Change update_end var from int to
5210 rtx_insn *, if non-NULL don't update just BB_END (current_block), but
5211 also call set_block_for_insn on the newly added insns and rescan.
5212
5213 PR target/84786
5214 * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
5215 on the last operand.
5216
5217 PR c++/84704
5218 * tree.c (stabilize_reference_1): Return save_expr (e) for
5219 STATEMENT_LIST even if it doesn't have side-effects.
5220
5221 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
5222
5223 * doc/invoke.texi (-mclflushopt): Fix spelling of option.
5224
5225 2018-03-12 Renlin Li <renlin.li@arm.com>
5226
5227 * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
5228 aarch64_output_scalar_simd_mov_immediate.
5229
5230 2018-03-12 Martin Sebor <msebor@redhat.com>
5231
5232 PR tree-optimization/83456
5233 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
5234 for perfectly overlapping calls to memcpy.
5235 (gimple_fold_builtin_memory_chk): Same.
5236 (gimple_fold_builtin_strcpy): Handle no-warning.
5237 (gimple_fold_builtin_stxcpy_chk): Same.
5238 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
5239
5240 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
5241
5242 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
5243 parameter. Use it for SFmode.
5244 (rs6000_function_arg_advance_1): Adjust.
5245 (rs6000_function_arg): Adjust.
5246 (rs6000_gimplify_va_arg): Pass false for that new parameter.
5247
5248 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
5249
5250 PR rtl-optimization/84169
5251 PR rtl-optimization/84780
5252 * combine.c (can_combine_p): Check for a 2-insn combination whether
5253 the destination register is used between the two insns, too.
5254
5255 2018-03-12 Richard Biener <rguenther@suse.de>
5256
5257 PR tree-optimization/84803
5258 * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
5259 for refs DR analysis didn't process.
5260
5261 2018-03-12 Richard Biener <rguenther@suse.de>
5262
5263 PR tree-optimization/84777
5264 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
5265 force-vectorize loops ignore whether we are optimizing for size.
5266
5267 2018-03-12 Chung-Ju Wu <jasonwucj@gmail.com>
5268
5269 * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
5270 (TARGET_MD_ASM_ADJUST): Define.
5271
5272 2018-03-12 Monk Chiang <sh.chiang04@gmail.com>
5273 Kito Cheng <kito.cheng@gmail.com>
5274 Chung-Ju Wu <jasonwucj@gmail.com>
5275
5276 * config/nds32/nds32.c (nds32_compute_stack_frame,
5277 nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
5278 nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
5279 nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
5280 nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
5281 * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
5282 NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
5283 * config/nds32/nds32.md (prologue, epilogue): Use macro
5284 NDS32_V3PUSH_AVAILABLE_P to do checking.
5285
5286 2018-03-11 Jakub Jelinek <jakub@redhat.com>
5287
5288 PR debug/58150
5289 * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
5290 DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
5291 but on TYPE_SIZE. Don't do anything for ENUM_IS_OPAQUE if not creating
5292 a new die. Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE. Guard
5293 addition of most attributes on !orig_type_die or the attribute not
5294 being present already. Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
5295
5296 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
5297 Chung-Ju Wu <jasonwucj@gmail.com>
5298
5299 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
5300 __NDS32_VH__ macro.
5301 * config/nds32/nds32.opt (mvh): New option.
5302
5303 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
5304 Chung-Ju Wu <jasonwucj@gmail.com>
5305
5306 * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
5307 function.
5308 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
5309 * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
5310 definition.
5311
5312 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
5313 Chung-Ju Wu <jasonwucj@gmail.com>
5314
5315 * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
5316 function.
5317 * config/nds32/nds32-multiple.md (strlensi): New pattern.
5318 * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
5319
5320 2018-03-11 Monk Chiang <sh.chiang04@gmail.com>
5321 Kito Cheng <kito.cheng@gmail.com>
5322 Chung-Ju Wu <jasonwucj@gmail.com>
5323
5324 * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
5325 UNSPEC_FFMISM and UNSPEC_FLMISM.
5326 * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
5327 for ffb, ffmism and flmism.
5328 * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
5329 (unspec_ffmism): Ditto.
5330 (unspec_flmism): Ditto.
5331 (nds32_expand_builtin_impl): Check if string extension is available.
5332 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
5333 NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
5334
5335 2018-03-10 Vladimir Makarov <vmakarov@redhat.com>
5336
5337 Reverting patch:
5338 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
5339
5340 PR target/83712
5341 * lra-assigns.c (assign_by_spills): Return a flag of reload
5342 assignment failure. Do not process the reload assignment
5343 failures. Do not spill other reload pseudos if they has the same
5344 reg class.
5345 (lra_assign): Add a return arg. Set up from the result of
5346 assign_by_spills call.
5347 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5348 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
5349 usage_insns if it is not NULL.
5350 (spill_hard_reg_in_range): New function.
5351 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5352 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5353 function prototypes.
5354 (lra_assign): Change prototype.
5355 * lra.c (lra): Add code to deal with fails by splitting hard reg
5356 live ranges.
5357
5358 2018-03-10 H.J. Lu <hongjiu.lu@intel.com>
5359
5360 PR target/84807
5361 * config/i386/i386.opt: Replace Enforcment with Enforcement.
5362
5363 2018-03-10 Alexandre Oliva <aoliva@redhat.com>
5364
5365 PR debug/84620
5366 * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
5367 (dw_val_node): Add val_symbolic_view.
5368 * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
5369 (symview_upper_bound): New.
5370 (new_line_info_table): Initialize symviews_since_reset.
5371 (dwarf2out_source_line): Count symviews_since_reset and set
5372 symview_upper_bound.
5373 (dw_val_equal_p): Handle symview.
5374 (add_AT_symview): New.
5375 (print_dw_val): Handle symview.
5376 (attr_checksum, attr_checksum_ordered): Likewise.
5377 (same_dw_val_p, size_of_die): Likewise.
5378 (value_format, output_die): Likewise.
5379 (add_high_low_attributes): Use add_AT_symview for entry_view.
5380 (dwarf2out_finish): Reset symview_upper_bound, clear
5381 zero_view_p.
5382
5383 2018-03-09 Peter Bergner <bergner@vnet.ibm.com>
5384
5385 PR target/83969
5386 * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
5387 Add strict argument and use it.
5388 (rs6000_split_multireg_move): Update for new strict argument.
5389 (mem_operand_gpr): Disallow all non-offsettable addresses.
5390 * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
5391
5392 2018-03-09 Jakub Jelinek <jakub@redhat.com>
5393
5394 PR target/84772
5395 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
5396 temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
5397 * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
5398
5399 PR c++/84767
5400 * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
5401 decl, use remap_type if we want to use the type.
5402
5403 2018-03-09 Martin Sebor <msebor@redhat.com>
5404
5405 PR tree-optimization/84526
5406 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
5407 Remove dead code.
5408 (builtin_access::generic_overlap): Be prepared to handle non-array
5409 base objects.
5410
5411 2018-03-09 Alexandre Oliva <aoliva@redhat.com>
5412
5413 PR rtl-optimization/84682
5414 * lra-constraints.c (process_address_1): Check is_address flag
5415 for address constraints.
5416 (process_alt_operands): Likewise.
5417 * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
5418 preprocess_constraints.
5419 * recog.h (preprocess_constraints): Add oploc parameter.
5420 Adjust callers.
5421 * recog.c (preprocess_constraints): Test address_operand for
5422 CT_ADDRESS constraints.
5423
5424 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
5425
5426 PR target/83712
5427 * lra-assigns.c (assign_by_spills): Return a flag of reload
5428 assignment failure. Do not process the reload assignment
5429 failures. Do not spill other reload pseudos if they has the same
5430 reg class.
5431 (lra_assign): Add a return arg. Set up from the result of
5432 assign_by_spills call.
5433 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5434 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
5435 usage_insns if it is not NULL.
5436 (spill_hard_reg_in_range): New function.
5437 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5438 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5439 function prototypes.
5440 (lra_assign): Change prototype.
5441 * lra.c (lra): Add code to deal with fails by splitting hard reg
5442 live ranges.
5443
5444 2018-03-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5445
5446 PR target/83193
5447 * common/config/arm/arm-common.c (arm_parse_arch_option_name):
5448 Accept complain bool parameter. Only emit errors if it is true.
5449 (arm_parse_cpu_option_name): Likewise.
5450 (arm_target_thumb_only): Adjust callers of the above.
5451 * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
5452 prototype to take a default true bool parameter.
5453 (arm_parse_arch_option_name): Likewise.
5454
5455 2018-03-09 David Malcolm <dmalcolm@redhat.com>
5456 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
5457
5458 PR jit/64089
5459 PR jit/84288
5460 * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
5461 * configure: Regenerate.
5462 * configure.ac ("linker --version-script option"): New.
5463 ("linker soname option"): New.
5464
5465 2018-03-09 Richard Biener <rguenther@suse.de>
5466
5467 PR tree-optimization/84775
5468 * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
5469 immediate uses of predicate stmts and mark them modified.
5470
5471 Revert
5472 PR tree-optimization/84178
5473 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
5474 to caller.
5475 (version_loop_for_if_conversion): Delay update_ssa call.
5476 (tree_if_conversion): Delay update_ssa until after predicate
5477 insertion.
5478
5479 2018-03-09 Eric Botcazou <ebotcazou@adacore.com>
5480
5481 PR target/84763
5482 * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
5483 when the function accesses prior frames.
5484
5485 2018-03-08 Jakub Jelinek <jakub@redhat.com>
5486
5487 PR debug/84456
5488 * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
5489 gen_llsym, otherwise call maybe_gen_llsym.
5490
5491 PR inline-asm/84742
5492 * recog.c (asm_operand_ok): Return 0 if multi-character constraint
5493 has ',' character inside of it.
5494
5495 2018-03-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5496
5497 PR target/84748
5498 * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
5499 as clobbering CC_REGNUM.
5500
5501 2018-03-08 Richard Biener <rguenther@suse.de>
5502
5503 PR middle-end/84552
5504 * tree-scalar-evolution.c: Include tree-into-ssa.h.
5505 (follow_copies_to_constant): Do not follow SSA names registered
5506 for update.
5507
5508 2018-03-08 Richard Biener <rguenther@suse.de>
5509
5510 PR tree-optimization/84178
5511 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
5512 to caller.
5513 (version_loop_for_if_conversion): Delay update_ssa call.
5514 (tree_if_conversion): Delay update_ssa until after predicate
5515 insertion.
5516
5517 2018-03-08 David Malcolm <dmalcolm@redhat.com>
5518
5519 PR tree-optimization/84178
5520 * tree-if-conv.c (release_bb_predicate): Remove the
5521 the assertion that the stmts have NULL use_ops.
5522 Discard the statements, asserting that they haven't
5523 yet been added to a BB.
5524
5525 2018-03-08 Richard Biener <rguenther@suse.de>
5526
5527 PR tree-optimization/84746
5528 * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
5529 (phi_translate): Pass in destination ANTIC_OUT set.
5530 (phi_translate_1): Likewise. For a simplified result lookup
5531 a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
5532 (phi_translate_set): Adjust.
5533 (do_pre_regular_insertion): Likewise.
5534 (do_pre_partial_partial_insertion): Likewise.
5535
5536 2018-03-08 Martin Liska <mliska@suse.cz>
5537
5538 PR gcov-profile/84735
5539 * doc/gcov.texi: Document usage of profile files.
5540 * gcov-io.h: Document changes in the format.
5541
5542 2018-03-08 Alexandre Oliva <aoliva@redhat.com>
5543
5544 PR debug/84404
5545 PR debug/84408
5546 * dwarf2out.c (struct dw_line_info_table): Update comments for
5547 view == -1.
5548 (FORCE_RESET_NEXT_VIEW): New.
5549 (FORCE_RESETTING_VIEW_P): New.
5550 (RESETTING_VIEW_P): Check for -1 too.
5551 (ZERO_VIEW_P): Likewise.
5552 (new_line_info_table): Force-reset next view.
5553 (dwarf2out_begin_function): Likewise.
5554 (dwarf2out_source_line): Simplify zero_view_p initialization.
5555 Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
5556 view directly. Omit view when omitting .loc at line 0.
5557
5558 2018-03-08 Jakub Jelinek <jakub@redhat.com>
5559
5560 PR tree-optimization/84740
5561 * tree-switch-conversion.c (process_switch): Call build_constructors
5562 only if info.phi_count is non-zero.
5563
5564 PR tree-optimization/84739
5565 * tree-tailcall.c (find_tail_calls): Check call arguments against
5566 DECL_ARGUMENTS (current_function_decl) rather than
5567 DECL_ARGUMENTS (func) when checking for tail recursion.
5568
5569 2018-03-07 Jakub Jelinek <jakub@redhat.com>
5570
5571 * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
5572 Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
5573 Volker Reichelt's entry and add entries for people that perform
5574 GCC fuzzy testing and report numerous bugs.
5575
5576 2018-03-07 Segher Boessenkool <segher@kernel.crashing.org>
5577
5578 PR target/82411
5579 * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
5580 readonly data in sdata, if that is disabled.
5581 * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
5582 * doc/invoke.texi (RS/6000 and PowerPC Options): Document
5583 -mreadonly-in-sdata option.
5584
5585 2018-03-07 Martin Sebor <msebor@redhat.com>
5586
5587 PR tree-optimization/84468
5588 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
5589 basic block when looking for nul assignment.
5590
5591 2018-03-07 Eric Botcazou <ebotcazou@adacore.com>
5592
5593 PR target/84277
5594 * except.h (output_function_exception_table): Adjust prototype.
5595 * except.c (output_function_exception_table): Remove FNNAME parameter
5596 and add SECTION parameter. Ouput one part of the table at a time.
5597 * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
5598 the first part of the exception table and emit unwind directives.
5599 * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
5600 (i386_pe_seh_cold_init): Likewise.
5601 * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
5602 (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
5603 * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
5604 (ix86_output_call_insn): Emit a nop in one more case for SEH.
5605 * config/i386/winnt.c: Include except.h.
5606 (struct seh_frame_state): Add reg_offset, after_prologue and
5607 in_cold_section fields.
5608 (i386_pe_seh_end_prologue): Set seh->after_prologue.
5609 (i386_pe_seh_cold_init): New function.
5610 (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
5611 to seh->in_cold_section.
5612 (seh_emit_push): Record the offset of the push.
5613 (seh_emit_save): Record the offet of the save.
5614 (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
5615 Test seh->after_prologue to disregard the epilogue.
5616 (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
5617 (i386_pe_end_cold_function): New function.
5618
5619 2018-03-07 Jakub Jelinek <jakub@redhat.com>
5620
5621 PR fortran/84565
5622 * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
5623 aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
5624
5625 PR c++/84704
5626 * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
5627 on tmp_var.
5628 * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
5629 don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
5630
5631 PR middle-end/84723
5632 * multiple_target.c: Include tree-inline.h and intl.h.
5633 (expand_target_clones): Diagnose and fail if node->definition and
5634 !tree_versionable_function_p (node->decl).
5635
5636 2018-03-06 John David Anglin <danglin@gcc.gnu.org>
5637
5638 * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
5639 sprint_ul.
5640 (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
5641 (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
5642 * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
5643
5644 2018-03-06 Jakub Jelinek <jakub@redhat.com>
5645
5646 PR target/84710
5647 * combine.c (try_combine): Use reg_or_subregno instead of handling
5648 just paradoxical SUBREGs and REGs.
5649
5650 2018-03-06 Claudiu Zissulescu <claziss@synopsys.com>
5651
5652 * config/arc/arc.c (arc_finalize_pic): Remove function.
5653 (arc_must_save_register): We use single base PIC register, remove
5654 checks to save/restore the PIC register.
5655 (arc_expand_prologue): Likewise.
5656 * config/arc/arc-protos.h (arc_set_default_type_attributes):
5657 Remove.
5658 (arc_verify_short): Likewise.
5659 (arc_attr_type): Likewise.
5660 * config/arc/arc.c (arc_set_default_type_attributes): Remove.
5661 (walk_stores): Likewise.
5662 (arc_address_cost): Make it static.
5663 (arc_verify_short): Likewise.
5664 (branch_dest): Likewise.
5665 (arc_attr_type): Likewise.
5666 * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
5667 (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
5668 (arc_final_prescan_insn): Remove inserting the nops due to
5669 hardware hazards. It is done in reorg step.
5670 (insn_length_variant_t): Remove.
5671 (insn_length_parameters_t): Likewise.
5672 (arc_insn_length_parameters): Likewise.
5673 (arc_get_insn_variants): Likewise.
5674 * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
5675
5676 2018-03-06 Jakub Jelinek <jakub@redhat.com>
5677
5678 PR inline-asm/84683
5679 * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
5680 assertion failure.
5681
5682 PR tree-optimization/84687
5683 * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
5684 on new_node->decl.
5685 * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
5686
5687 2018-03-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
5688
5689 * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
5690 Rename to ppc_speculation_barrier.
5691 * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
5692 __builtin_ppc_speculation_barrier.
5693
5694 2018-03-05 Jakub Jelinek <jakub@redhat.com>
5695
5696 PR target/84700
5697 * combine.c (combine_simplify_rtx): Don't try to simplify if
5698 if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
5699 are equal to x.
5700
5701 2018-03-05 Segher Boessenkool <segher@kernel.crashing.org>
5702
5703 * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
5704 to 32 bytes when compiling for POWER9.
5705
5706 2018-03-05 Jakub Jelinek <jakub@redhat.com>
5707
5708 PR target/84564
5709 * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
5710 regparm >= 3 with no arg reg available also for calls with
5711 flag_force_indirect_call. Pass decl to ix86_function_regparm.
5712
5713 PR target/84524
5714 * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
5715 orig,vex.
5716 (*<plusminus_insn><mode>3): Likewise. Remove <mask_operand3> uses.
5717
5718 2018-03-05 Peter Bergner <bergner@vnet.ibm.com>
5719
5720 PR target/84264
5721 * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
5722
5723 2018-03-05 Richard Biener <rguenther@suse.de>
5724
5725 PR tree-optimization/84486
5726 * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
5727 When inserting a __builtin_assume_aligned call set the LHS
5728 SSA name alignment info accordingly.
5729
5730 2018-03-05 Wilco Dijkstra <wdijkstr@arm.com>
5731
5732 PR tree-optimization/84114
5733 * config/aarch64/aarch64.c (aarch64_reassociation_width)
5734 Avoid reassociation of FLOAT_MODE addition.
5735
5736 2018-03-05 Olga Makhotina <olga.makhotina@intel.com>
5737
5738 * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
5739 OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
5740 OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
5741 (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
5742 * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
5743 * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
5744 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
5745 and -mwbnoinvd.
5746 * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
5747 __builtin_ia32_wbinvd): New builtins.
5748 (SPECIAL_ARGS2): New.
5749 * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
5750 (SPECIAL_ARGS2): New.
5751 * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
5752 (ix86_valid_target_attribute_inner_p): Ditto.
5753 (ix86_init_mmx_sse_builtins): Add special_args2.
5754 * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
5755 TARGET_WBNOINVD_P): New.
5756 * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
5757 (define_insn "wbinvd", define_insn "wbnoinvd"): New.
5758 * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
5759 * config/i386/immintrin.h (_wbinvd): New intrinsic.
5760 * config/i386/pconfigintrin.h: New file.
5761 * config/i386/wbnoinvdintrin.h: Ditto.
5762 * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
5763 * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
5764
5765 2018-03-05 Richard Biener <rguenther@suse.de>
5766
5767 PR tree-optimization/84670
5768 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
5769 member.
5770 (BB_VISITED_WITH_VISITED_SUCCS): New define.
5771 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
5772 (compute_antic_aux): Only assert the number of values in ANTIC_IN
5773 doesn't grow if all successors (recursively) were visited at least
5774 once.
5775
5776 2018-03-05 Richard Biener <rguenther@suse.de>
5777
5778 PR tree-optimization/84650
5779 * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
5780 if executed in the loop pipeline.
5781
5782 2018-03-05 Sandra Loosemore <sandra@codesourcery.com>
5783
5784 * doc/configfiles.texi (Configuration Files): Move info about
5785 conditionalizing $target-protos.h to...
5786 * doc/sourcebuild.texi (Back End): Here. Explain how $target.h
5787 differs from $target-protos.h.
5788
5789 2018-03-05 Kito Cheng <kito.cheng@gmail.com>
5790 Chung-Ju Wu <jasonwucj@gmail.com>
5791
5792 * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
5793 * config/nds32/nds32-multiple.md (setmemsi): Define.
5794 * config/nds32/nds32-memory-manipulation.c
5795 (nds32_gen_dup_4_byte_to_word_value): New.
5796 (emit_setmem_word_loop): New.
5797 (emit_setmem_byte_loop): New.
5798 (nds32_expand_setmem_loop): New.
5799 (nds32_expand_setmem_loop_v3m): New.
5800 (nds32_expand_setmem_unroll): New.
5801 (nds32_expand_setmem): New.
5802
5803 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
5804 Chung-Ju Wu <jasonwucj@gmail.com>
5805
5806 * config/nds32/nds32-memory-manipulation.c
5807 (nds32_emit_load_store): New.
5808 (nds32_emit_post_inc_load_store): New.
5809 (nds32_emit_mem_move): New.
5810 (nds32_emit_mem_move_block): New.
5811 (nds32_expand_movmemsi_loop_unknown_size): New.
5812 (nds32_expand_movmemsi_loop_known_size): New.
5813 (nds32_expand_movmemsi_loop): New.
5814 (nds32_expand_movmemsi_unroll): New.
5815 (nds32_expand_movmemqi): Rename ...
5816 (nds32_expand_movmemsi): ... to this.
5817 * config/nds32/nds32-multiple.md (movmemqi): Rename ...
5818 (movmemsi): ... to this.
5819 * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
5820 (nds32_expand_movmemsi): ... to this.
5821
5822 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
5823 Monk Chiang <sh.chiang04@gmail.com>
5824 Chung-Ju Wu <jasonwucj@gmail.com>
5825
5826 * config/nds32/nds32-protos.h
5827 (nds32_expand_load_multiple): New arguments.
5828 (nds32_expand_store_multiple): Ditto.
5829 (nds32_valid_multiple_load_store): Rename ...
5830 (nds32_valid_multiple_load_store_p): ... to this.
5831 * config/nds32/nds32-memory-manipulation.c
5832 (nds32_expand_load_multiple): Refine implementation.
5833 (nds32_expand_store_multiple): Ditto.
5834 * config/nds32/nds32-multiple.md
5835 (load_multiple): Update nds32_expand_load_multiple interface.
5836 (store_multiple): Update nds32_expand_store_multiple interface.
5837 * config/nds32/nds32-predicates.c
5838 (nds32_valid_multiple_load_store): Rename ...
5839 (nds32_valid_multiple_load_store_p): ... to this and refine
5840 implementation.
5841 * config/nds32/predicates.md
5842 (nds32_load_multiple_and_update_address_operation): New predicate.
5843 (nds32_store_multiple_and_update_address_operation): New predicate.
5844
5845 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
5846 Chung-Ju Wu <jasonwucj@gmail.com>
5847
5848 * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
5849 (combo): New attribute.
5850 * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
5851
5852 2018-03-03 Chung-Ju Wu <jasonwucj@gmail.com>
5853
5854 * config/nds32/nds32.opt: Change -mcmodel= default value.
5855
5856 2018-03-03 Kito Cheng <kito.cheng@gmail.com>
5857 Monk Chiang <sh.chiang04@gmail.com>
5858 Chung-Ju Wu <jasonwucj@gmail.com>
5859
5860 * config/nds32/constants.md (unspec_element): New enum.
5861 * config/nds32/constraints.md (Umw): New constraint.
5862 * config/nds32/nds32-intrinsic.c: Add more builtin functions.
5863 * config/nds32/nds32-intrinsic.md: Likewise.
5864 * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
5865 (nds32_valid_smw_lwm_base_p): New.
5866 (nds32_output_smw_single_word): New.
5867 (nds32_output_lmw_single_word): New.
5868 (nds32_expand_unaligned_load): New.
5869 (nds32_expand_unaligned_store): New.
5870 * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
5871 (nds32_output_smw_single_word): Declare.
5872 (nds32_output_lmw_single_word): Declare.
5873 (nds32_expand_unaligned_load): Declare.
5874 (nds32_expand_unaligned_store): Declare.
5875 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
5876 NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
5877 NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
5878 NDS32_BUILTIN_UASTORE_DW.
5879 * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
5880 predicate.
5881
5882 2018-03-03 Monk Chiang <sh.chiang04@gmail.com>
5883 Kito Cheng <kito.cheng@gmail.com>
5884 Chung-Ju Wu <jasonwucj@gmail.com>
5885
5886 * config/nds32/nds32-intrinsic.c
5887 (nds32_expand_builtin_null_ftype_reg): Delete.
5888 (nds32_expand_builtin_reg_ftype_imm): Ditto.
5889 (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
5890 (nds32_read_argument): New.
5891 (nds32_legitimize_target): Ditto.
5892 (nds32_legitimize_argument): Ditto.
5893 (nds32_check_constant_argument): Ditto.
5894 (nds32_expand_unop_builtin): Ditto.
5895 (nds32_expand_unopimm_builtin): Ditto.
5896 (nds32_expand_binop_builtin): Ditto.
5897 (nds32_builtin_decl_impl): Ditto.
5898 (builtin_description): Ditto.
5899 (nds32_expand_builtin_impl): Rewrite with new infrastructure.
5900 (nds32_init_builtins_impl): Ditto.
5901 * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
5902 (nds32_builtin_decl): New.
5903 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
5904 * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
5905
5906 2018-03-02 Jeff Law <law@redhat.com>
5907
5908 * reorg.c (stop_search_p): Handle DEBUG_INSN.
5909 (redundant_insn, fill_simple_delay_slots): Likewise.
5910 (fill_slots_from_thread): Likewise.
5911 * resource.c (mark_referenced_resources): Likewise.
5912 (mark_set_resources, find_dead_or_set_registers): Likewise.
5913
5914 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5915
5916 * substring-locations.h (format_warning_va): Formatting fix for
5917 ATTRIBUTE_GCC_DIAG.
5918 (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
5919 argument.
5920 (format_warning_n_va, format_warning_at_substring_n): New prototypes.
5921 * substring-locations.c: Include intl.h.
5922 (format_warning_va): Turned into small wrapper around
5923 format_warning_n_va, renamed to ...
5924 (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
5925 rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
5926 use ngettext.
5927 (format_warning_at_substring_n): New function.
5928 * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
5929 (fmtwarn): Add ATTRIBUTE_GCC_DIAG. Turn into a copy of
5930 format_warning_at_substring with just a shorter name instead of
5931 const function pointer.
5932 (fmtwarn_n): New function.
5933 (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
5934 appropriate, get rid of all the fmtstr temporaries, move conditionals
5935 with G_() wrapped string literals directly into fmtwarn arguments,
5936 cast dir.len to (int), formatting fixes.
5937
5938 2018-03-02 Thomas Schwinge <thomas@codesourcery.com>
5939
5940 * doc/invoke.texi: Remove "Cilk Plus" references.
5941
5942 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5943 Richard Biener <rguenther@suse.de>
5944
5945 PR ipa/84628
5946 * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
5947 for error or warning attributes if CALL_FROM_THUNK_P is set.
5948 Formatting fixes.
5949
5950 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5951
5952 PR target/56540
5953 * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
5954 __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
5955
5956 PR target/56540
5957 * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
5958 __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
5959
5960 * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
5961 instead of -1U in last predictors element's probability member.
5962
5963 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
5964
5965 PR ipa/83983
5966 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
5967 arguments if they are comparable.
5968
5969 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
5970
5971 PR tree-optimization/84634
5972 * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
5973 masks and masked_loop_p with a single loop_masks, making sure it's
5974 null for bb vectorization.
5975
5976 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
5977
5978 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
5979 (vect_analyze_data_ref_access): Use loop->safe_len rather than
5980 loop->force_vectorize to check whether there is no alias.
5981
5982 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5983
5984 PR target/84614
5985 * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
5986 prototypes.
5987 * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
5988 comments.
5989 (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
5990 * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
5991 instead of a loop around prev_real_insn.
5992 * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
5993 prev_real_insn.
5994
5995 PR inline-asm/84625
5996 * config/i386/i386.c (ix86_print_operand): Use conditional
5997 output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
5998 zero vector.
5999
6000 2018-03-02 Richard Biener <rguenther@suse.de>
6001
6002 PR tree-optimization/84427
6003 * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
6004 (bitmap_set_subtract_values): Rewrite to handle multiple
6005 exprs per value.
6006 (clean): Likewise.
6007 (prune_clobbered_mems): Likewise.
6008 (phi_translate): Take edge instead of pred/phiblock.
6009 (phi_translate_1): Likewise.
6010 (phi_translate_set): Likewise. Insert all translated
6011 exprs for a value into the set, keeping possibly multiple
6012 expressions per value.
6013 (compute_antic_aux): Adjust for phi_translate changes.
6014 When intersecting union the expressions and prune those
6015 not in the final value set, keeping possibly multiple
6016 expressions per value. Do not use value-insertion
6017 for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
6018 all expressions. Add verification that the value-sets
6019 only shrink during iteration.
6020 (compute_partial_antic_aux): Adjust for the phi_translate changes.
6021 (do_pre_regular_insertion): Likewise.
6022 (do_pre_partial_partial_insertion): Likewise.
6023
6024 2018-03-02 Richard Biener <rguenther@suse.de>
6025
6026 PR target/82005
6027 * config/darwin.c (saved_debug_info_level): New static global.
6028 (darwin_asm_lto_start): Disable debug info generation for LTO out.
6029 (darwin_asm_lto_end): Restore debug info generation settings.
6030
6031 2018-03-01 Martin Liska <mliska@suse.cz>
6032
6033 PR sanitizer/82484
6034 * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
6035 volatile arguments.
6036
6037 2018-03-01 Richard Biener <rguenther@suse.de>
6038
6039 PR debug/84645
6040 * dwarf2out.c (gen_variable_die): Properly handle late VLA
6041 type annotation with LTO when debug was disabled at compile-time.
6042
6043 2018-03-01 Matthew Fortune <mfortune@gmail.com>
6044
6045 * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
6046 XINT with INTVAL.
6047 (mips_final_postscan_insn): Likewise.
6048
6049 2018-03-01 Richard Sandiford <richard.sandiford@linaro.org>
6050
6051 PR rtl-optimization/84528
6052 * alias.c (init_alias_target): Add commentary.
6053 (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
6054 a unique base value if the frame pointer is not eliminated
6055 to the stack pointer.
6056
6057 2018-03-01 Tom de Vries <tom@codesourcery.com>
6058
6059 PR rtl-optimization/83327
6060 * lra-int.h (hard_regs_spilled_into): Declare.
6061 * lra.c (hard_regs_spilled_into): Define.
6062 (init_reg_info): Init hard_regs_spilled_into.
6063 * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
6064 * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
6065 (process_bb_lives): Handle hard_regs_spilled_into.
6066 (lra_create_live_ranges_1): Before doing liveness propagation, clear
6067 regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
6068
6069 2018-02-28 David Edelsohn <dje.gcc@gmail.com>
6070
6071 * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
6072 (powerpc-ibm-aix[789]*): Default to AIX 7.2.
6073 * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
6074 * config/rs6000/aix72.h: New file.
6075
6076 2018-02-28 Jakub Jelinek <jakub@redhat.com>
6077
6078 * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
6079 instead of warning_at with conditional singular and plural messages
6080 where possible.
6081
6082 PR target/52991
6083 * stor-layout.c (update_alignment_for_field): For
6084 targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
6085 && !DECL_PACKED (field), do the alignment update, just use
6086 only desired_align instead of MAX (type_align, desired_align)
6087 as the alignment.
6088 (place_field): Don't do known_align < desired_align handling
6089 early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
6090 is non-NULL, instead do it after rli->prev_field handling and
6091 only if not within a bitfield word. For DECL_PACKED (field)
6092 use type_align of BITS_PER_UNIT.
6093
6094 2018-02-28 Eric Botcazou <ebotcazou@adacore.com>
6095
6096 * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
6097 superfluous parentheses and trailing spaces.
6098
6099 2018-02-28 Richard Biener <rguenther@suse.de>
6100
6101 PR tree-optimization/84584
6102 * graphite-scop-detection.c (scop_detection::add_scop): Discard
6103 SCoPs with fake exit edge.
6104
6105 2018-02-28 Martin Liska <mliska@suse.cz>
6106
6107 PR testsuite/84597
6108 * timevar.c (timer::print): Fix format to properly print 100%
6109 values.
6110
6111 2018-02-28 Richard Biener <rguenther@suse.de>
6112
6113 PR middle-end/84607
6114 * genmatch.c (capture_info::walk_match): Do not mark
6115 captured expressions without operands as expr_p given
6116 they act more like predicates and should be subject to
6117 "lost tail" side-effect preserving.
6118
6119 2018-02-28 Alexandre Oliva <aoliva@redhat.com>
6120
6121 PR rtl-optimization/81611
6122 * auto-inc-dec.c (attempt_change): Move dead note from
6123 mem_insn if it's the next use of regno
6124 (find_address): Take address use of reg holding
6125 non-incremented value. Add parm to limit search to the named
6126 reg only.
6127 (merge_in_block): Attempt to use a mem insn that is the next
6128 use of the original regno.
6129
6130 2018-02-27 Martin Sebor <msebor@redhat.com>
6131
6132 PR c++/83871
6133 * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
6134 * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
6135
6136 2018-02-27 Martin Sebor <msebor@redhat.com>
6137
6138 PR translation/84207
6139 * diagnostic-core.h (warning_n, error_n, inform_n): Change
6140 n argument to unsigned HOST_WIDE_INT.
6141 * diagnostic.c (warning_n, error_n, inform_n): Ditto.
6142 (diagnostic_n_impl): Ditto. Handle arguments in excess of LONG_MAX.
6143 * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
6144 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
6145
6146 2018-02-27 Richard Biener <rguenther@suse.de>
6147
6148 PR tree-optimization/84512
6149 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
6150 Do not use the estimate returned from record_stmt_cost for
6151 the scalar iteration cost but sum properly using add_stmt_cost.
6152
6153 2018-02-27 Richard Biener <rguenther@suse.de>
6154
6155 PR tree-optimization/84466
6156 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
6157 Adjust last change to less strictly validate use operands.
6158
6159 2018-02-27 Martin Liska <mliska@suse.cz>
6160
6161 PR gcov-profile/84548
6162 * gcov.c (process_file): Allow partial overlap and consider it
6163 also as group functions.
6164 (output_lines): Properly calculate range of lines for a group.
6165
6166 2018-02-27 Martin Liska <mliska@suse.cz>
6167
6168 * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
6169 'ggc' suffixes. Change first column width.
6170 (timer::print): Fix formatting of the column.
6171
6172 2018-02-27 Alexandre Oliva <aoliva@redhat.com>
6173
6174 * tree-ssa-live.c (remove_unused_scope_block_p): Do not
6175 preserve inline entry blocks for the sake of debug inline
6176 entry point markers alone.
6177 (remove_unused_locals): Suggest in comments a better place to
6178 force the preservation of inline entry blocks that are
6179 otherwise unused, but do not preserve them.
6180
6181 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
6182
6183 * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
6184
6185 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
6186
6187 PR target/84039
6188 * config/i386/constraints.md (Bs): Replace
6189 ix86_indirect_branch_register with
6190 TARGET_INDIRECT_BRANCH_REGISTER.
6191 (Bw): Likewise.
6192 * config/i386/i386.md (indirect_jump): Likewise.
6193 (tablejump): Likewise.
6194 (*sibcall_memory): Likewise.
6195 (*sibcall_value_memory): Likewise.
6196 Peepholes of indirect call and jump via memory: Likewise.
6197 (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
6198 (*sibcall_value_GOT_32): Likewise.
6199 * config/i386/predicates.md (indirect_branch_operand): Likewise.
6200 (GOT_memory_operand): Likewise.
6201 (call_insn_operand): Likewise.
6202 (sibcall_insn_operand): Likewise.
6203 (GOT32_symbol_operand): Likewise.
6204 * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
6205
6206 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
6207
6208 PR rtl-optimization/83496
6209 * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
6210 booleans to RTXes. Call fix_reg_dead_note on every non-null element.
6211 (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
6212 redundant insn, if any.
6213 (relax_delay_slots): Likewise.
6214 (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
6215
6216 2018-02-26 Richard Sandiford <richard.sandiford@linaro.org>
6217
6218 PR tree-optimization/83965
6219 * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
6220 that grouped statements are part of a reduction chain. Return
6221 true if the statement is not marked as a reduction itself but
6222 is part of a group.
6223 (vect_recog_dot_prod_pattern): Don't check whether the statement
6224 is part of a group here.
6225 (vect_recog_sad_pattern): Likewise.
6226 (vect_recog_widen_sum_pattern): Likewise.
6227
6228 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
6229
6230 PR debug/84545
6231 * final.c (rest_of_clean_state): Also look for calls inside sequences.
6232
6233 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
6234
6235 PR target/84530
6236 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
6237 the bool argument.
6238 (ix86_output_indirect_function_return): New prototype.
6239 (ix86_split_simple_return_pop_internal): Likewise.
6240 * config/i386/i386.c (indirect_return_via_cx): New.
6241 (indirect_return_via_cx_bnd): Likewise.
6242 (indirect_thunk_name): Handle return va CX_REG.
6243 (output_indirect_thunk_function): Create alias for
6244 __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
6245 (ix86_output_indirect_jmp): Remove the bool argument.
6246 (ix86_output_indirect_function_return): New function.
6247 (ix86_split_simple_return_pop_internal): Likewise.
6248 * config/i386/i386.md (*indirect_jump): Don't pass false
6249 to ix86_output_indirect_jmp.
6250 (*tablejump_1): Likewise.
6251 (simple_return_pop_internal): Change it to define_insn_and_split.
6252 Call ix86_split_simple_return_pop_internal to split it for
6253 -mfunction-return=.
6254 (simple_return_indirect_internal): Call
6255 ix86_output_indirect_function_return instead of
6256 ix86_output_indirect_jmp.
6257
6258 2018-02-26 Jakub Jelinek <jakub@redhat.com>
6259
6260 PR bootstrap/84405
6261 * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
6262 memset and value initialization afterwards.
6263
6264 2018-02-26 Christophe Lyon <christophe.lyon@linaro.org>
6265
6266 * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
6267
6268 2018-02-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
6269
6270 PR target/84521
6271 * common/config/aarch64/aarch64-common.c
6272 (aarch_option_optimization_table[]): Switch
6273 off fomit-frame-pointer
6274
6275 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
6276 Chung-Ju Wu <jasonwucj@gmail.com>
6277
6278 * config/nds32/nds32-multiple.md (load_multiple): Disallow
6279 volatile memory.
6280 (store_multiple): Ditto.
6281
6282 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
6283
6284 * config.gcc: Add --with-cpu support for nds32 target.
6285 * config/nds32/nds32-opts.h (nds32_cpu_type): New.
6286 * config/nds32/nds32.opt: Add -mcpu= option.
6287
6288 2018-02-25 Segher Boessenkool <segher@kernel.crashing.org>
6289
6290 * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
6291 isel=yes): Warn for these deprecated options.
6292
6293 2018-02-23 David Edelsohn <dje.gcc@gmail.com>
6294
6295 * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
6296 ISA_2_5_MASKS_EMBEDDED.
6297
6298 2018-02-23 Jakub Jelinek <jakub@redhat.com>
6299
6300 * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
6301 p->max as pointers rather than using iterative_hash_expr.
6302
6303 2018-02-23 Carl Love <cel@us.ibm.com>
6304
6305 * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
6306 macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
6307 BU_P8V_OVERLOAD_2.
6308 * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
6309 P8V_BUILTIN_VEC_VSIGNED2. Change VSX_BUILTIN_VEC_VUNSIGNED2 to
6310 P8V_BUILTIN_VEC_VUNSIGNED2.
6311
6312 2018-02-22 Vladimir Makarov <vmakarov@redhat.com>
6313
6314 PR target/81572
6315 * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
6316 * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
6317 LRA_UNKNOWN_ALT.
6318 * lra-constraints.c (curr_insn_transform): Set up
6319 LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use
6320 LRA_UNKNOWN_ALT.
6321 (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
6322 * lra-eliminations.c (spill_pseudos): Ditto.
6323 (process_insn_for_elimination): Ditto.
6324 * lra-lives.c (reg_early_clobber_p): Use the new macros.
6325 * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
6326 LRA_NON_CLOBBERED_ALT.
6327
6328 2018-02-22 Martin Sebor <msebor@redhat.com>
6329
6330 PR tree-optimization/84480
6331 * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
6332 to maybe_diag_stxncpy_trunc. Call it.
6333 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
6334 from gimple_fold_builtin_strcpy. Print inlining stack.
6335 (handle_builtin_stxncpy): Print inlining stack.
6336 * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
6337
6338 2018-02-22 H.J. Lu <hongjiu.lu@intel.com>
6339
6340 PR target/84176
6341 * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
6342 error when -mindirect-branch=thunk-extern, -fcf-protection=branch
6343 and -fcheck-pointer-bounds are used together.
6344 (indirect_thunk_prefix): New enum.
6345 (indirect_thunk_need_prefix): New function.
6346 (indirect_thunk_name): Replace need_bnd_p with need_prefix. Use
6347 "_nt" instead of "_bnd" for NOTRACK prefix.
6348 (output_indirect_thunk): Replace need_bnd_p with need_prefix.
6349 (output_indirect_thunk_function): Likewise.
6350 (): Likewise.
6351 (ix86_code_end): Update output_indirect_thunk_function calls.
6352 (ix86_output_indirect_branch_via_reg): Replace
6353 ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
6354 (ix86_output_indirect_branch_via_push): Likewise.
6355 (ix86_output_function_return): Likewise.
6356 * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
6357 incompatible with -fcf-protection=branch and
6358 -fcheck-pointer-bounds.
6359
6360 2018-02-22 Steve Ellcey <sellcey@cavium.com>
6361
6362 PR target/83335
6363 * config/aarch64/aarch64.c (aarch64_print_address_internal):
6364 Change gcc_assert call to output_operand_lossage.
6365
6366 2018-02-22 Steve Ellcey <sellcey@cavium.com>
6367
6368 * doc/extend.texi (__builtin_extend_pointer): Document builtin.
6369
6370 2018-02-22 DJ Delorie <dj@redhat.com>
6371 Sebastian Perta <sebastian.perta@renesas.com>
6372 Oleg Endo <olegendo@gcc.gnu.org>
6373
6374 * config/rx/rx.c (rx_rtx_costs): New function.
6375 (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
6376
6377 2018-02-22 Thomas Preud'homme <thomas.preudhomme@arm.com>
6378
6379 * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
6380
6381 2018-02-22 Martin Liska <mliska@suse.cz>
6382
6383 PR driver/83193
6384 * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
6385 Add "native" as a possible value.
6386
6387 2018-02-22 Martin Liska <mliska@suse.cz>
6388
6389 PR driver/83193
6390 * config/i386/i386.c (ix86_option_override_internal):
6391 Add "native" as a possible value for -march and -mtune.
6392
6393 2018-02-22 Jakub Jelinek <jakub@redhat.com>
6394
6395 PR target/84502
6396 * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
6397 to all type variants.
6398
6399 PR tree-optimization/84503
6400 * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
6401 width as info->bitpos + info->bitsize - start.
6402 (merged_store_group::merge_overlapping): Simplify width computation.
6403 (check_no_overlap): New function.
6404 (imm_store_chain_info::try_coalesce_bswap): Compute expected
6405 start + width and last_order of the group, fail if check_no_overlap
6406 fails.
6407 (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
6408 to group if check_no_overlap fails.
6409
6410 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
6411
6412 * config/rs6000/altivec.md: Delete contraint arguments to
6413 define_expand, define_split, and define_peephole2, and in
6414 define_insn_and_split if always unused.
6415 * config/rs6000/darwin.md: Ditto.
6416 * config/rs6000/dfp.md: Ditto.
6417 * config/rs6000/rs6000.md: Ditto.
6418 * config/rs6000/sync.md: Ditto.
6419 * config/rs6000/vector.md: Ditto.
6420 * config/rs6000/vsx.md: Ditto.
6421
6422 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
6423
6424 * config/rs6000/altivec.md: Write output control strings as braced
6425 blocks instead of double-quoted strings.
6426 * config/rs6000/darwin.md: Ditto.
6427 * config/rs6000/rs6000.md: Ditto.
6428 * config/rs6000/vector.md: Ditto.
6429 * config/rs6000/vsx.md: Ditto.
6430
6431 2018-02-21 Jason Merrill <jason@redhat.com>
6432
6433 PR c++/84314 - ICE with templates and fastcall attribute.
6434 * attribs.c (build_type_attribute_qual_variant): Remove assert.
6435
6436 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
6437
6438 * ipa-cp.c (determine_versionability): Fix comment typos.
6439
6440 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
6441
6442 PR c/84229
6443 * ipa-cp.c (determine_versionability): Do not version functions caling
6444 va_arg_pack.
6445
6446 2018-02-21 Martin Liska <mliska@suse.cz>
6447
6448 PR driver/83193
6449 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
6450 Add "native" as a possible value.
6451 * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT): Define
6452 the macro when native cpu detection is available.
6453
6454 2018-02-21 Martin Liska <mliska@suse.cz>
6455
6456 PR driver/83193
6457 * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
6458 Add "native" as a possible value.
6459 * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
6460 when native cpu detection is available.
6461
6462 2018-02-21 Jakub Jelinek <jakub@redhat.com>
6463 Martin Sebor <msebor@redhat.com>
6464
6465 PR tree-optimization/84478
6466 * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
6467 false.
6468 * gimple-fold.c (get_range_strlen): Make minlen const and assume it
6469 can't be NULL. Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
6470 support which is conservatively correct, for 2 only stay conservative
6471 for maxlen. Formatting and comment capitalization fixes. Add STRICT
6472 argument to the 2 argument get_range_strlen, adjust 6 arg
6473 get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
6474 false.
6475 (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
6476 (gimple_fold_builtin_strlen): Pass true as last argument to
6477 get_range_strlen.
6478
6479 2018-02-20 Martin Sebor <msebor@redhat.com>
6480
6481 PR middle-end/84095
6482 * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
6483 (builtin_memref::set_base_and_offset): Same. Handle inner references.
6484 (builtin_memref::builtin_memref): Factor out parts into
6485 set_base_and_offset and call it.
6486
6487 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
6488
6489 PR middle-end/84406
6490 * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
6491 is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
6492 greater precision. If to_mode is a MODE_PARTIAL_INT, stop the
6493 search at the associated MODE_INT.
6494
6495 2018-02-20 Jeff Law <law@redhat.com>
6496
6497 PR middle-end/82123
6498 PR tree-optimization/81592
6499 PR middle-end/79257
6500 * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
6501 for range data rather than using global data.
6502 * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
6503 range data rather than using global data.
6504 * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
6505 pass it to children as needed.
6506 (struct directive::fmtresult): Similarly.
6507 (struct directive::set_width): Similarly.
6508 (struct directive::set_precision): Similarly.
6509 (format_integer, format_directive, parse_directive): Similarly.
6510 (format_none): Accept unnamed vr_values parameter.
6511 (format_percent, format_floating, format_character): Similarly.
6512 (format_string, format_plain): Similarly.
6513 * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
6514 the EVRP range analyzer for range data rather than using global data.
6515 * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
6516 gimple-ssa-evrp-analyze.h
6517 (class sprintf_dom_walker): Add after_dom_children member function.
6518 Add evrp_range_analyzer member.
6519 (sprintf_dom_walker::before_dom_children): Call into the EVRP
6520 range analyzer as needed.
6521 (sprintf_dom_walker::after_dom_children): New member function.
6522 * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
6523 if not optimizing.
6524 (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
6525 (evrp_range_analyzer::pop_to_marker): Likewise.
6526
6527 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
6528
6529 PR tree-optimization/84419
6530 * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
6531 with the required type if its current type is compatible but
6532 different.
6533
6534 2018-02-20 Jakub Jelinek <jakub@redhat.com>
6535
6536 PR middle-end/82004
6537 * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
6538 after vectorization.
6539
6540 2018-02-20 Martin Liska <mliska@suse.cz>
6541
6542 PR driver/83193
6543 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
6544 possible values if we don't have a hint.
6545
6546 2018-02-20 Martin Liska <mliska@suse.cz>
6547
6548 PR c/84310
6549 PR target/79747
6550 * final.c (shorten_branches): Build align_tab array with one
6551 more element.
6552 * opts.c (finish_options): Add alignment option limit check.
6553 (MAX_CODE_ALIGN): Likewise.
6554 (MAX_CODE_ALIGN_VALUE): Likewise.
6555 * doc/invoke.texi: Document maximum allowed option value for
6556 all -falign-* options.
6557
6558 2018-02-19 Jakub Jelinek <jakub@redhat.com>
6559
6560 PR target/84146
6561 * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
6562 * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
6563 * var-tracking.c (emit_note_insn_var_location): Remove all references
6564 to NOTE_INSN_CALL_ARG_LOCATION.
6565 (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
6566 the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
6567 Use copy_rtx_if_shared.
6568 * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
6569 NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
6570 (dwarf2out_var_location): Remove handling of
6571 NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
6572 on call_insn.
6573 * final.c (final_scan_insn): Remove all references to
6574 NOTE_INSN_CALL_ARG_LOCATION.
6575 (rest_of_clean_state): Likewise. Remove REG_CALL_ARG_LOCATION notes
6576 before dumping final insns.
6577 * except.c (emit_note_eh_region_end): Remove all references to
6578 NOTE_INSN_CALL_ARG_LOCATION.
6579 * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
6580 * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
6581 * config/arc/arc.c (hwloop_optimize): Likewise.
6582 * config/arm/arm.c (create_fix_barrier): Likewise.
6583 * config/s390/s390.c (s390_chunkify_start): Likewise.
6584 * config/sh/sh.c (find_barrier): Likewise.
6585 * config/i386/i386.c (rest_of_insert_endbranch,
6586 ix86_seh_fixup_eh_fallthru): Likewise.
6587 * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
6588 * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
6589 * config/frv/frv.c (frv_function_prologue): Likewise.
6590 * emit-rtl.c (try_split): Likewise. Copy over REG_CALL_ARG_LOCATION
6591 reg note.
6592 (note_outside_basic_block_p): Remove all references to
6593 NOTE_INSN_CALL_ARG_LOCATION.
6594 * gengtype.c (adjust_field_rtx_def): Likewise.
6595 * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
6596 Likewise.
6597 * jump.c (cleanup_barriers, delete_related_insns): Likewise.
6598 * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
6599
6600 PR c++/84444
6601 * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
6602 is ADDR_EXPR.
6603
6604 PR tree-optimization/84452
6605 * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
6606 expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
6607 is NULL.
6608
6609 2018-02-19 Martin Liska <mliska@suse.cz>
6610
6611 PR sanitizer/82183
6612 * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
6613
6614 2018-02-19 Martin Liska <mliska@suse.cz>
6615 Richard Sandiford <richard.sandiford@linaro.org>
6616
6617 PR tree-optimization/82491
6618 * gimple-fold.c (get_base_constructor): Make earlier bail out
6619 to prevent ubsan.
6620
6621 2018-02-19 Carl Love <cel@us.ibm.com>
6622
6623 * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
6624 BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
6625 BU_P8V_OVERLOAD_1.
6626 * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
6627 P8V_BUILTIN_VEC_NEG.
6628
6629 2018-02-19 Sebastian Perta <sebastian.perta@renesas.com>
6630
6631 * config/rl78/rl78.md (movdf): New define expand.
6632
6633 2018-02-19 Martin Liska <mliska@suse.cz>
6634
6635 PR other/80589
6636 * doc/invoke.texi: Fix typo.
6637 * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
6638
6639 2018-02-18 Segher Boessenkool <segher@kernel.crashing.org>
6640
6641 * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
6642 handle rs6000_single_float and rs6000_double_float specially for
6643 e500 family CPUs.
6644
6645 2018-02-16 Jeff Law <law@redhat.com>
6646
6647 * config/rx/rx.c (add_pop_cfi_notes): New function.;
6648 (pop_regs): Use it.
6649
6650 2018-02-16 Jakub Jelinek <jakub@redhat.com>
6651
6652 PR ipa/84425
6653 * ipa-inline.c (inline_small_functions): Fix a typo.
6654
6655 2018-02-16 Nathan Sidwell <nathan@acm.org>
6656
6657 * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
6658
6659 2018-02-16 Carl Love <cel@us.ibm.com>
6660
6661 * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
6662 Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
6663 from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
6664 * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
6665 expansion to P8V_BUILTIN_VEC_FLOAT2.
6666
6667 2018-02-16 Vladimir Makarov <vmakarov@redhat.com>
6668
6669 PR rtl-optimization/70023
6670 * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
6671 src_regno into account.
6672
6673 2018-02-16 Carl Love <cel@us.ibm.com>
6674
6675 * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
6676 * config/rs6000/rs6000-builtin.def: Remove macro expansion for
6677 VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
6678 * config/rs6000/rs6000.c: Remove case statements for
6679 P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
6680 P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
6681 and P9V_BUILTIN_VEC_VINSERT4B.
6682 * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
6683 P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
6684 * config/rs6000/vsx.md:
6685 * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
6686 vec_insert4b.
6687
6688 2018-02-16 Carl Love <cel@us.ibm.com>
6689
6690 * config/rs6000/altivec.h: Add builtin names vec_extract4b
6691 vec_insert4b.
6692 * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
6693 definitions.
6694 * config/rs6000/rs6000-c.c: Add the definitions for
6695 P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
6696 * config/rs6000/rs6000.c (altivec_expand_builtin): Add
6697 P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
6698 * config/rs6000/vsx.md: Add define_insn extract4b. Add define_expand
6699 definition for insert4b and define insn *insert3b_internal.
6700 * doc/extend.texi: Add documentation for vec_extract4b.
6701
6702 2018-02-16 Nathan Sidwell <nathan@acm.org>
6703
6704 * doc/extend.texi (Backwards Compatibility): Mention friend
6705 injection. Note for-scope is deprecated.
6706 * doc/invoke.texi (-ffriend-injection): Deprecate.
6707
6708 2018-02-16 Segher Boessenkool <segher@kernel.crashing.org>
6709
6710 * combine.c (try_combine): When adjusting LOG_LINKS for the destination
6711 that moved to I2, also allow destinations that are a paradoxical
6712 subreg (instead of a normal reg).
6713
6714 2018-02-16 Oleg Endo <olegendo@gcc.gnu.org>
6715
6716 PR target/83831
6717 * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
6718 to QImode.
6719
6720 2018-02-16 Richard Biener <rguenther@suse.de>
6721
6722 PR tree-optimization/84037
6723 PR tree-optimization/84016
6724 PR target/82862
6725 * config/i386/i386.c (ix86_builtin_vectorization_cost):
6726 Adjust vec_construct for the fact we need additional higher latency
6727 128bit inserts for AVX256 and AVX512 vector builds.
6728 (ix86_add_stmt_cost): Scale vector construction cost for
6729 elementwise loads.
6730
6731 2018-02-16 Richard Biener <rguenther@suse.de>
6732
6733 PR tree-optimization/84417
6734 * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
6735 the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
6736 (non_rewritable_lvalue_p): Likewise, use poly-ints.
6737
6738 2018-02-16 Martin Liska <mliska@suse.cz>
6739
6740 PR sanitizer/84307
6741 * internal-fn.def (ASAN_CHECK): Set proper flags.
6742 (ASAN_MARK): Likewise.
6743
6744 2018-02-16 Julia Koval <julia.koval@intel.com>
6745
6746 * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
6747 from PTA_CANNONLAKE.
6748
6749 2018-02-16 Jakub Jelinek <jakub@redhat.com>
6750
6751 PR target/84272
6752 * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
6753 Use ++iter rather than iter++ for std::list iterators.
6754 (func_fma_steering::dfs): Likewise. Don't delete nodes right away,
6755 defer deleting them until all nodes in the forest are processed. Do
6756 free even leaf nodes. Change to_process into auto_vec.
6757
6758 PR bootstrap/84405
6759 * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
6760 * vec.h (vec_default_construct): Use memset instead of placement new
6761 if BROKEN_VALUE_INITIALIZATION is defined.
6762 * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
6763 memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
6764 is defined.
6765
6766 PR rtl-optimization/83723
6767 * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
6768 * lra.c (lra_substitute_pseudo): Likewise. If true, use
6769 gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to
6770 recursive calls.
6771 (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
6772 callers.
6773 * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
6774
6775 2018-02-16 Eric Botcazou <ebotcazou@adacore.com>
6776
6777 PR rtl-optimization/81443
6778 * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
6779 from inner REGs to paradoxical SUBREGs.
6780
6781 2018-02-16 Richard Biener <rguenther@suse.de>
6782
6783 PR tree-optimization/84399
6784 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
6785 For operands we can analyze at their definition make sure we can
6786 analyze them at each use as well.
6787
6788 2018-02-16 Richard Biener <rguenther@suse.de>
6789
6790 PR tree-optimization/84190
6791 * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
6792 volatile accesses if the decl isn't volatile.
6793
6794 2018-02-15 Jason Merrill <jason@redhat.com>
6795
6796 PR c++/84314 - ICE with templates and fastcall attribute.
6797 * attribs.c (build_type_attribute_qual_variant): Don't clobber
6798 TYPE_CANONICAL on an existing type.
6799
6800 2018-02-15 Jakub Jelinek <jakub@redhat.com>
6801
6802 PR tree-optimization/84383
6803 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
6804 dstoff nor call operand_equal_p if dstbase is NULL.
6805
6806 PR tree-optimization/84334
6807 * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
6808 also a CONSTANT_CLASS_P, punt.
6809
6810 2018-02-14 Jim Wilson <jimw@sifive.com>
6811
6812 * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
6813 first SMALL_OPERAND check. New local min_second_step. Move assert
6814 to where locals are set. Add TARGET_RVC support.
6815 * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
6816
6817 2018-02-14 Indu Bhagat <indu.bhagat@oracle.com>
6818
6819 * doc/invoke.texi: Correct -Wformat-overflow code sample.
6820
6821 2018-02-14 Martin Sebor <msebor@redhat.com>
6822
6823 PR tree-optimization/83698
6824 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
6825 arrays constrain the offset range to their bounds.
6826 (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
6827 (builtin_access::overlap): Avoid setting the size of overlap if it's
6828 already been set.
6829 (maybe_diag_overlap): Also consider arrays when deciding what values
6830 of offsets to include in diagnostics.
6831
6832 2018-02-14 Martin Sebor <msebor@redhat.com>
6833
6834 PR c/84108
6835 * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
6836 that correspond to the kind of a declaration.
6837
6838 2018-02-14 John David Anglin <danglin@gcc.gnu.org>
6839
6840 PR target/83984
6841 * config/pa/pa.md: Load address of PIC label using the linkage table
6842 if the label is nonlocal.
6843
6844 2018-02-14 Kelvin Nilsen <kelvin@gcc.gnu.org>
6845
6846 * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
6847 warning message if user requests -maltivec=be.
6848 * doc/invoke.texi: Document deprecation of -maltivec=be.
6849
6850 2018-02-14 Will Schmidt <will_schmidt@vnet.ibm.com>
6851
6852 PR target/84220
6853 * config/rs6000/rs6000-c.c: Update definitions for
6854 ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
6855 VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
6856
6857 2018-02-14 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
6858
6859 PR target/84239
6860 * config/i386/cetintrin.h: Remove _rdssp[d|q] and
6861 add _get_ssp intrinsics. Remove argument from
6862 __builtin_ia32_rdssp[d|q].
6863 * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
6864 * config/i386/i386-builtin.def: Remove argument from
6865 __builtin_ia32_rdssp[d|q].
6866 * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
6867 ix86_expand_special_args_builtin for _rdssp[d|q].
6868 * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
6869 Clear register before usage.
6870 * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
6871 Add documentation for new _get_ssp and _inc_ssp intrinsics.
6872
6873 2018-02-14 Richard Sandiford <richard.sandiford@linaro.org>
6874
6875 PR tree-optimization/84357
6876 * tree-data-ref.c (object_address_invariant_in_loop_p): Check
6877 operand 1 of an ARRAY_REF too.
6878
6879 2018-02-14 Oleg Endo <olegendo@gcc.gnu.org>
6880
6881 PR target/83831
6882 * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
6883 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6884 declarations.
6885 (set_of_reg): New struct.
6886 (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
6887 * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
6888 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6889 functions.
6890 * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
6891 Split into bitclr, bitset, bitinvert patterns if appropriate.
6892 (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
6893 use rx_fuse_in_memory_bitop.
6894 (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
6895 to named insn, correct maximum insn length.
6896
6897 2018-02-14 Jozef Lawrynowicz <jozefl.gcc@gmail.com>
6898
6899 PR target/79242
6900 * machmode.def: Define a complex mode for PARTIAL_INT.
6901 * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
6902 MODE_PARTIAL_INT.
6903 * doc/rtl.texi: Document CSPImode.
6904 * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
6905 handling.
6906 (msp430_hard_regno_nregs_with_padding): Likewise.
6907
6908 2018-02-13 Peter Bergner <bergner@vnet.ibm.com>
6909
6910 PR target/84279
6911 * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
6912
6913 2018-02-13 Segher Boessenkool <segher@kernel.crashing.org>
6914
6915 PR rtl-optimization/84169
6916 * combine.c (try_combine): New variable split_i2i3. Set it to true if
6917 we generated a parallel as new i3 and we split that to new i2 and i3
6918 instructions. Handle split_i2i3 similar to swap_i2i3: scan the
6919 LOG_LINKs of i3 to see which of those need to link to i2 now. Link
6920 those to i2, not i1. Partially rewrite this scan code.
6921
6922 2018-02-13 Jakub Jelinek <jakub@redhat.com>
6923
6924 PR c/82210
6925 * stor-layout.c (place_field): For variable length fields, adjust
6926 offset_align afterwards not just based on the field's alignment,
6927 but also on the size.
6928
6929 PR middle-end/84309
6930 * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
6931 of exps and logs in the use_exp2 case.
6932
6933 2018-02-13 Jeff Law <law@redhat.com>
6934
6935 * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
6936 entry for "vector".
6937
6938 * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
6939 ARGS as unused.
6940
6941 2018-02-13 Alexandre Oliva <aoliva@redhat.com>
6942
6943 PR debug/84342
6944 PR debug/84319
6945 * common.opt (gas-loc-support, gas-locview-support): New.
6946 (ginline-points, ginternal-reset-location-views): New.
6947 * doc/invoke.texi: Document them. Use @itemx where intended.
6948 (gvariable-location-views): Adjust.
6949 * target.def (reset_location_view): New.
6950 * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
6951 (TARGET_RESET_LOCATION_VIEW): New.
6952 * doc/tm.texi: Rebuilt.
6953 * dwarf2out.c (dwarf2out_default_as_loc_support): New.
6954 (dwarf2out_default_as_locview_support): New.
6955 (output_asm_line_debug_info): Use option variables.
6956 (dwarf2out_maybe_output_loclist_view_pair): Likewise.
6957 (output_loc_list): Likewise.
6958 (add_high_low_attributes): Check option variables.
6959 Don't output entry view attribute in strict mode.
6960 (gen_inlined_subroutine_die): Check option variables.
6961 (dwarf2out_inline_entry): Likewise.
6962 (init_sections_and_labels): Likewise.
6963 (dwarf2out_early_finish): Likewise.
6964 (maybe_reset_location_view): New, from...
6965 (dwarf2out_var_location): ... here. Call it.
6966 * debug.h (dwarf2out_default_as_loc_support): Declare.
6967 (dwarf2out_default_as_locview_support): Declare.
6968 * hooks.c (hook_int_rtx_insn_0): New.
6969 * hooks.h (hook_int_rtx_insn_0): Declare.
6970 * toplev.c (process_options): Take -gas-loc-support and
6971 -gas-locview-support from dwarf2out. Enable
6972 -gvariable-location-views by default only with locview
6973 assembler support. Enable -ginternal-reset-location-views by
6974 default only if the target defines the corresponding hook.
6975 Enable -ginline-points by default if location views are
6976 enabled; force it disabled if statement frontiers are
6977 disabled.
6978 * tree-inline.c (expand_call_inline): Check option variables.
6979 * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
6980
6981 2018-02-13 Richard Sandiford <richard.sandiford@linaro.org>
6982
6983 PR tree-optimization/84321
6984 * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
6985 handling. Also check whether the anti-range contains any values
6986 that satisfy the mask; switch to a VR_RANGE if not.
6987
6988 2018-02-13 Paolo Bonzini <bonzini@gnu.org>
6989
6990 PR sanitizer/84340
6991 * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
6992
6993 2018-02-13 Martin Jambor <mjambor@suse.cz>
6994
6995 PR c++/83990
6996 * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
6997 of call statements, also set location of a load to a temporary.
6998
6999 2018-02-13 Sebastian Perta <sebastian.perta@renesas.com>
7000
7001 * config/rl78/rl78.c (add_vector_labels): New function.
7002 * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
7003 * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
7004 * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert
7005 which checks that no arguments are passed.
7006 * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
7007 * doc/extend.texi: Documentation for the new attribute.
7008
7009 2018-02-13 Andreas Schwab <schwab@suse.de>
7010
7011 * config/riscv/linux.h (CPP_SPEC): Define.
7012
7013 2018-02-13 Jakub Jelinek <jakub@redhat.com>
7014
7015 PR target/84335
7016 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
7017 OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
7018 OPTION_MASK_ISA_AES as first argument to def_builtin_const
7019 for AES builtins. Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
7020 instead of OPTION_MASK_ISA_PCLMUL as first argument to
7021 def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
7022 * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
7023 temporarily for AES and PCLMUL builtins.
7024
7025 PR tree-optimization/84339
7026 * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
7027 ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
7028 Formatting fixes.
7029
7030 PR middle-end/84309
7031 * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
7032 exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
7033 * generic-match-head.c (canonicalize_math_after_vectorization_p): New
7034 inline function.
7035 * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
7036 inline function.
7037 * omp-simd-clone.h: New file.
7038 * omp-simd-clone.c: Include omp-simd-clone.h.
7039 (expand_simd_clones): No longer static.
7040 * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
7041 cgraph.h and omp-simd-clone.h.
7042 (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
7043 (vect_recog_widen_shift_pattern): Formatting fix.
7044 (vect_pattern_recog_1): Don't check optab for calls.
7045
7046 PR target/84336
7047 * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
7048 operands[2] into a REG before using gen_lowpart on it.
7049
7050 2018-02-12 Jeff Law <law@redhat.com>
7051
7052 PR target/83760
7053 * config/sh/sh.c (find_barrier): Consider a sibling call
7054 a barrier as well.
7055
7056 * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
7057 successfully back substituting a reg.
7058
7059 2018-02-12 Richard Biener <rguenther@suse.de>
7060
7061 PR tree-optimization/84037
7062 * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
7063 parameter, move visited init to caller.
7064 (vect_slp_analyze_operations): Separate cost from validity
7065 check, initialize visited once for all instances.
7066 (vect_schedule_slp): Analyze map to CSE vectorized nodes once
7067 for all instances.
7068 * tree-vect-stmts.c (vect_model_simple_cost): Make early
7069 out an assert.
7070 (vect_model_promotion_demotion_cost): Likewise.
7071 (vectorizable_bswap): Guard cost modeling with !slp_node
7072 instead of !PURE_SLP_STMT to avoid double-counting on hybrid
7073 SLP stmts.
7074 (vectorizable_call): Likewise.
7075 (vectorizable_conversion): Likewise.
7076 (vectorizable_assignment): Likewise.
7077 (vectorizable_shift): Likewise.
7078 (vectorizable_operation): Likewise.
7079 (vectorizable_store): Likewise.
7080 (vectorizable_load): Likewise.
7081 (vectorizable_condition): Likewise.
7082 (vectorizable_comparison): Likewise.
7083
7084 2018-02-12 Paolo Bonzini <bonzini@gnu.org>
7085
7086 PR sanitizer/84307
7087 * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
7088 (ASAN_MARK): Fix fnspec to account for return value, change pointer
7089 argument from 'R' to 'W' so that the pointed-to datum is clobbered.
7090
7091 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
7092
7093 PR middle-end/83665
7094 * params.def (inline-min-speedup): Increase from 8 to 15.
7095 (max-inline-insns-auto): Decrease from 40 to 30.
7096 * ipa-split.c (consider_split): Add some buffer for function to
7097 be considered inlining candidate.
7098 * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
7099 default values.
7100
7101 2018-02-12 Richard Biener <rguenther@suse.de>
7102
7103 PR tree-optimization/84037
7104 * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
7105 matched stmts if we cannot swap the non-matched ones.
7106
7107 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
7108
7109 * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
7110 _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
7111 _mm_maskz_scalef_round_ss): New intrinsics.
7112 (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
7113 * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
7114 __builtin_ia32_scalefss_round): Remove.
7115 (__builtin_ia32_scalefsd_mask_round,
7116 __builtin_ia32_scalefss_mask_round): New intrinsics.
7117 * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
7118 (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
7119 ((match_operand:VF_128 2 "<round_nimm_predicate>"
7120 "<round_constraint>")): Changed to ...
7121 ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
7122 "<round_scalar_constraint>")): ... this.
7123 ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
7124 %0, %1, %2<round_op3>}"): Changed to ...
7125 ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
7126 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
7127 %2<round_scalar_mask_op3>}"): ... this.
7128 * config/i386/subst.md (round_scalar_nimm_predicate): New.
7129
7130 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
7131
7132 * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
7133 (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
7134 (_mm_maskz_sqrt_round_ss): New intrinsics.
7135 (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
7136 (__builtin_ia32_sqrtsd_mask_round)
7137 (__builtin_ia32_sqrtss_mask_round): New builtins.
7138 * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
7139 (__builtin_ia32_sqrtss_round): Remove.
7140 (__builtin_ia32_sqrtsd_mask_round)
7141 (__builtin_ia32_sqrtss_mask_round): New builtins.
7142 * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
7143 (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
7144 ((match_operand:VF_128 1 "vector_operand"
7145 "xBm,<round_constraint>")): Changed to ...
7146 ((match_operand:VF_128 1 "vector_operand"
7147 "xBm,<round_scalar_constraint>")): ... this.
7148 (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
7149 %0, %2, %<iptr>1<round_op3>}): Changed to ...
7150 (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
7151 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
7152 %<iptr>1<round_scalar_mask_op3>}): ... this.
7153 ((set_attr "prefix" "<round_prefix>")): Changed to ...
7154 ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
7155
7156 2018-02-11 Steven Munroe <munroesj@gcc.gnu.org>
7157
7158 PR target/84266
7159 * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
7160 Cast vec_cmpeq result to correct type.
7161 * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
7162 Cast vec_cmpgt result to correct type.
7163
7164 2018-02-11 Alexandre Oliva <aoliva@redhat.com>
7165
7166 * final.c (final_scan_insn_1): Renamed from...
7167 (final_scan_insn): ... this. New wrapper, to recover
7168 seen from the outermost call in recursive ones.
7169 * config/sparc/sparc.c (output_return): Drop seen from call.
7170 (output_sibcall): Likewise.
7171 * config/visium/visium.c (output_branch): Likewise.
7172
7173 2018-02-10 John David Anglin <danglin@gcc.gnu.org>
7174
7175 * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
7176 function label.
7177
7178 2018-02-10 Alan Modra <amodra@gmail.com>
7179
7180 PR target/84300
7181 * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
7182 Specify LR as an input.
7183
7184 2018-02-10 Jakub Jelinek <jakub@redhat.com>
7185
7186 PR sanitizer/83987
7187 * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
7188 remove_member_access_dummy_vars): New functions.
7189 (lower_omp_for, lower_omp_taskreg, lower_omp_target,
7190 lower_omp_1, execute_lower_omp): Use them.
7191
7192 PR rtl-optimization/84308
7193 * shrink-wrap.c (spread_components): Release todo vector.
7194
7195 2018-02-09 Vladimir Makarov <vmakarov@redhat.com>
7196
7197 PR rtl-optimization/57193
7198 * ira-color.c (struct allocno_color_data): Add member
7199 conflict_allocno_hard_prefs.
7200 (update_conflict_allocno_hard_prefs): New.
7201 (bucket_allocno_compare_func): Add a preference based on
7202 conflict_allocno_hard_prefs.
7203 (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
7204 (color_allocnos): Remove a dead code. Initiate
7205 conflict_allocno_hard_prefs. Call update_costs_from_prefs.
7206
7207 2018-02-09 Jakub Jelinek <jakub@redhat.com>
7208
7209 PR target/84226
7210 * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
7211 constraint from =wa to wa. Avoid a subreg on the output operand,
7212 instead use a pseudo and subreg it in a move.
7213 (p9_xxbrd_<mode>): Changed to ...
7214 (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
7215 (p9_xxbrd_v2df): New expander.
7216 (p9_xxbrw_<mode>): Changed to ...
7217 (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
7218 (p9_xxbrw_v4sf): New expander.
7219
7220 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
7221
7222 * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
7223
7224 2018-02-09 Peter Bergner <bergner@vnet.ibm.com>
7225
7226 PR target/83926
7227 * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
7228 multiply in 32-bit mode.
7229 (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
7230 (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
7231 mode.
7232
7233 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
7234
7235 * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
7236 to allow or block "symbol_ref" depending on the value of TARGET_JSR.
7237 * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
7238 * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
7239
7240 2018-02-09 Pierre-Marie de Rodat <derodat@adacore.com>
7241
7242 PR lto/84213
7243 * dwarf2out.c (is_trivial_indirect_ref): New function.
7244 (dwarf2out_late_global_decl): Do not generate a location
7245 attribute for variables that have a non-trivial DECL_VALUE_EXPR
7246 and that are not defined in the current unit.
7247
7248 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
7249
7250 * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
7251 instead of a libcall for UNORDERED.
7252
7253 2018-02-09 Tamar Christina <tamar.christina@arm.com>
7254
7255 PR target/82641
7256 * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
7257 __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
7258
7259 2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
7260
7261 PR target/PR84295
7262 * config/s390/s390.c (s390_set_current_function): Invoke
7263 s390_indirect_branch_settings also if fndecl didn't change.
7264
7265 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
7266
7267 * config/rs6000/rs6000.md (blockage): Set length to zero.
7268
7269 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
7270
7271 * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
7272
7273 2018-02-09 Jakub Jelinek <jakub@redhat.com>
7274
7275 PR sanitizer/84285
7276 * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
7277 STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
7278 -static-lib*san.
7279
7280 PR debug/84252
7281 * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
7282 PARALLEL incoming that failed vt_get_decl_and_offset check.
7283
7284 PR middle-end/84237
7285 * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
7286 * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
7287 TREE_READONLY bit.
7288 (get_variable_section): For decls in named .bss* sections pass true as
7289 second argument to bss_initializer_p.
7290
7291 2018-02-09 Marek Polacek <polacek@redhat.com>
7292 Jakub Jelinek <jakub@redhat.com>
7293
7294 PR c++/83659
7295 * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
7296 Formatting fixes. Verify first that tree_fits_poly_int64_p (op01).
7297 Sync some changes from cxx_fold_indirect_ref.
7298
7299 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
7300
7301 * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
7302 markers.
7303 * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
7304 (BLOCK_INLINE_ENTRY_LABEL): New.
7305 (dwarf2out_var_location): Disregard inline entry markers.
7306 (inline_entry_data): New struct.
7307 (inline_entry_data_hasher): New hashtable type.
7308 (inline_entry_data_hasher::hash): New.
7309 (inline_entry_data_hasher::equal): New.
7310 (inline_entry_data_table): New variable.
7311 (add_high_low_attributes): Add DW_AT_entry_pc and
7312 DW_AT_GNU_entry_view attributes if a pending entry is found
7313 in inline_entry_data_table. Add old entry_pc attribute only
7314 if debug nonbinding markers are disabled.
7315 (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
7316 markers are enabled.
7317 (block_within_block_p, dwarf2out_inline_entry): New.
7318 (dwarf2out_finish): Check that no entries remained in
7319 inline_entry_data_table.
7320 * final.c (reemit_insn_block_notes): Handle inline entry notes.
7321 (final_scan_insn, notice_source_line): Likewise.
7322 (rest_of_clean_state): Skip inline entry markers.
7323 * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
7324 markers.
7325 * gimple.c (gimple_build_debug_inline_entry): New.
7326 * gimple.h (enum gimple_debug_subcode): Add
7327 GIMPLE_DEBUG_INLINE_ENTRY.
7328 (gimple_build_debug_inline_entry): Declare.
7329 (gimple_debug_inline_entry_p): New.
7330 (gimple_debug_nonbind_marker_p): Adjust.
7331 * insn-notes.def (INLINE_ENTRY): New.
7332 * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
7333 inline entry marker notes.
7334 (print_insn): Likewise.
7335 * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
7336 (INSN_DEBUG_MARKER_KIND): Likewise.
7337 (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
7338 * tree-inline.c (expand_call_inline): Build and insert
7339 debug_inline_entry stmt.
7340 * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
7341 inline entry blocks early, if nonbind markers are enabled.
7342 (dump_scope_block): Dump fragment info.
7343 * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
7344 * doc/gimple.texi (gimple_debug_inline_entry_p): New.
7345 (gimple_build_debug_inline_entry): New.
7346 * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
7347 Enable/disable inline entry points too.
7348 * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
7349 (DEBUG_INSN): Describe inline entry markers.
7350
7351 * common.opt (gvariable-location-views): New.
7352 (gvariable-location-views=incompat5): New.
7353 * config.in: Rebuilt.
7354 * configure: Rebuilt.
7355 * configure.ac: Test assembler for view support.
7356 * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
7357 * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
7358 * dwarf2out.c (var_loc_view): New typedef.
7359 (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
7360 (dwarf2out_locviews_in_attribute): New.
7361 (dwarf2out_locviews_in_loclist): New.
7362 (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
7363 (enum dw_line_info_opcode): Add LI_adv_address.
7364 (struct dw_line_info_table): Add view.
7365 (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
7366 (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
7367 (zero_view_p): New variable.
7368 (ZERO_VIEW_P): New macro.
7369 (output_asm_line_debug_info): New.
7370 (struct var_loc_node): Add view.
7371 (add_AT_view_list, AT_loc_list): New.
7372 (add_var_loc_to_decl): Add view param. Test it against last.
7373 (new_loc_list): Add view params. Record them.
7374 (AT_loc_list_ptr): Handle loc and view lists.
7375 (view_list_to_loc_list_val_node): New.
7376 (print_dw_val): Handle dw_val_class_view_list.
7377 (size_of_die): Likewise.
7378 (value_format): Likewise.
7379 (loc_list_has_views): New.
7380 (gen_llsym): Set vl_symbol too.
7381 (maybe_gen_llsym, skip_loc_list_entry): New.
7382 (dwarf2out_maybe_output_loclist_view_pair): New.
7383 (output_loc_list): Output view list or entries too.
7384 (output_view_list_offset): New.
7385 (output_die): Handle dw_val_class_view_list.
7386 (output_dwarf_version): New.
7387 (output_compilation_unit_header): Use it.
7388 (output_skeleton_debug_sections): Likewise.
7389 (output_rnglists, output_line_info): Likewise.
7390 (output_pubnames, output_aranges): Update version comments.
7391 (output_one_line_info_table): Output view numbers in asm comments.
7392 (dw_loc_list): Determine current endview, pass it to new_loc_list.
7393 Call maybe_gen_llsym.
7394 (loc_list_from_tree_1): Adjust.
7395 (add_AT_location_description): Create view list attribute if
7396 needed, check it's absent otherwise.
7397 (convert_cfa_to_fb_loc_list): Adjust.
7398 (maybe_emit_file): Call output_asm_line_debug_info for test.
7399 (dwarf2out_var_location): Reset views as needed. Precompute
7400 add_var_loc_to_decl args. Call get_attr_min_length only if we have the
7401 attribute. Set view.
7402 (new_line_info_table): Reset next view.
7403 (set_cur_line_info_table): Call output_asm_line_debug_info for test.
7404 (dwarf2out_source_line): Likewise. Output view resets and labels to
7405 the assembler, or select appropriate line info opcodes.
7406 (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
7407 (optimize_string_length): Catch it. Adjust.
7408 (resolve_addr): Copy vl_symbol along with ll_symbol. Handle
7409 dw_val_class_view_list, and remove it if no longer needed.
7410 (hash_loc_list): Hash view numbers.
7411 (loc_list_hasher::equal): Compare them.
7412 (optimize_location_lists): Check whether a view list symbol is
7413 needed, and whether the locview attribute is present, and
7414 whether they match. Remove the locview attribute if no longer
7415 needed.
7416 (index_location_lists): Call skip_loc_list_entry for test.
7417 (dwarf2out_finish): Call output_asm_line_debug_info for test.
7418 Use output_dwarf_version.
7419 * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
7420 (struct dw_val_node): Add val_view_list.
7421 * final.c (SEEN_NEXT_VIEW): New.
7422 (set_next_view_needed): New.
7423 (clear_next_view_needed): New.
7424 (maybe_output_next_view): New.
7425 (final_start_function): Rename to...
7426 (final_start_function_1): ... this. Take pointer to FIRST,
7427 add SEEN parameter. Emit param bindings in the initial view.
7428 (final_start_function): Reintroduce SEEN-less interface.
7429 (final): Rename to...
7430 (final_1): ... this. Take SEEN parameter. Output final pending
7431 next view at the end.
7432 (final): Reintroduce seen-less interface.
7433 (final_scan_insn): Output pending next view before switching
7434 sections or ending a block. Mark the next view as needed when
7435 outputting variable locations. Notify debug backend of section
7436 changes, and of location view changes.
7437 (rest_of_handle_final): Adjust.
7438 * toplev.c (process_options): Autodetect value for debug variable
7439 location views option. Warn on incompat5 without -gdwarf-5.
7440 * doc/invoke.texi (gvariable-location-views): New.
7441 (gvariable-location-views=incompat5): New.
7442 (gno-variable-location-views): New.
7443
7444 2018-02-08 David Malcolm <dmalcolm@redhat.com>
7445
7446 PR tree-optimization/84136
7447 * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
7448 that the result of find_edge is non-NULL.
7449
7450 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
7451
7452 PR target/83008
7453 * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
7454 storing integer register in SImode. Fix cost of 256 and 512
7455 byte aligned SSE register store.
7456
7457 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
7458
7459 * config/i386/i386.c (ix86_multiplication_cost): Fix
7460 multiplication cost for TARGET_AVX512DQ.
7461
7462 2018-02-08 Marek Polacek <polacek@redhat.com>
7463
7464 PR tree-optimization/84238
7465 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
7466 get_range_strlen.
7467
7468 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
7469
7470 PR tree-optimization/84265
7471 * tree-vect-stmts.c (vectorizable_store): Don't treat
7472 VMAT_CONTIGUOUS accesses as grouped.
7473 (vectorizable_load): Likewise.
7474
7475 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
7476
7477 PR tree-optimization/81635
7478 * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
7479 * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
7480 (test_round_for_mask): New functions.
7481 (wide_int_cc_tests): Call test_round_for_mask.
7482 * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
7483 * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
7484 * tree-data-ref.c (split_constant_offset_1): Use it to refine the
7485 range returned by get_range_info.
7486
7487 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
7488
7489 PR ipa/81360
7490 * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
7491 * symtab.c: Include builtins.h
7492 (symtab_node::output_to_lto_symbol_table_p): Move here
7493 from lto-streamer-out.c:output_symbol_p.
7494 * lto-streamer-out.c (write_symbol): Turn early exit to assert.
7495 (output_symbol_p): Move all logic to symtab.c
7496 (produce_symtab): Update.
7497
7498 2018-02-08 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
7499
7500 * config/s390/s390-opts.h (enum indirect_branch): Define.
7501 * config/s390/s390-protos.h (s390_return_addr_from_memory)
7502 (s390_indirect_branch_via_thunk)
7503 (s390_indirect_branch_via_inline_thunk): Add function prototypes.
7504 (enum s390_indirect_branch_type): Define.
7505 * config/s390/s390.c (struct s390_frame_layout, struct
7506 machine_function): Remove.
7507 (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
7508 (indirect_branch_table_label_no, indirect_branch_table_name):
7509 Define variables.
7510 (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
7511 (enum s390_indirect_branch_option): Define.
7512 (s390_return_addr_from_memory): New function.
7513 (s390_handle_string_attribute): New function.
7514 (s390_attribute_table): Add new attribute handler.
7515 (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
7516 (s390_indirect_branch_via_thunk): New function.
7517 (s390_indirect_branch_via_inline_thunk): New function.
7518 (s390_function_ok_for_sibcall): When jumping via thunk disallow
7519 sibling call optimization for non z10 compiles.
7520 (s390_emit_call): Force indirect branch target to be a single
7521 register. Add r1 clobber for non-z10 compiles.
7522 (s390_emit_epilogue): Emit return jump via return_use expander.
7523 (s390_reorg): Handle JUMP_INSNs as execute targets.
7524 (s390_option_override_internal): Perform validity checks for the
7525 new command line options.
7526 (s390_indirect_branch_attrvalue): New function.
7527 (s390_indirect_branch_settings): New function.
7528 (s390_set_current_function): Invoke s390_indirect_branch_settings.
7529 (s390_output_indirect_thunk_function): New function.
7530 (s390_code_end): Implement target hook.
7531 (s390_case_values_threshold): Implement target hook.
7532 (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
7533 macros.
7534 * config/s390/s390.h (struct s390_frame_layout)
7535 (struct machine_function): Move here from s390.c.
7536 (TARGET_INDIRECT_BRANCH_NOBP_RET)
7537 (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
7538 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
7539 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
7540 (TARGET_INDIRECT_BRANCH_NOBP_CALL)
7541 (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
7542 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
7543 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
7544 (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
7545 * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
7546 (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
7547 (mnemonic attribute): Add values which aren't recognized
7548 automatically.
7549 ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
7550 pattern for branch conversion. Fix mnemonic attribute.
7551 ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
7552 indirect branch via thunk if requested.
7553 ("indirect_jump", "<code>"): Expand patterns for branch conversion.
7554 ("*indirect_jump"): Disable for branch conversion using out of
7555 line thunks.
7556 ("indirect_jump_via_thunk<mode>_z10")
7557 ("indirect_jump_via_thunk<mode>")
7558 ("indirect_jump_via_inlinethunk<mode>_z10")
7559 ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
7560 ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
7561 ("casesi_jump_via_inlinethunk<mode>_z10")
7562 ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
7563 ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
7564 ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
7565 ("*indirect2_jump"): Disable for branch conversion.
7566 ("casesi_jump"): Turn into expander and expand patterns for branch
7567 conversion.
7568 ("return_use"): New expander.
7569 ("*return"): Emit return via thunk and rename it to ...
7570 ("*return<mode>"): ... this one.
7571 * config/s390/s390.opt: Add new options and and enum for the
7572 option values.
7573
7574 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
7575
7576 * lra-constraints.c (match_reload): Unconditionally use
7577 gen_lowpart_SUBREG, rather than selecting between that
7578 and equivalent gen_rtx_SUBREG code.
7579
7580 2018-02-08 Richard Biener <rguenther@suse.de>
7581
7582 PR tree-optimization/84233
7583 * tree-ssa-phiprop.c (propagate_with_phi): Use separate
7584 changed flag instead of boguously re-using phi_inserted.
7585
7586 2018-02-08 Martin Jambor <mjambor@suse.cz>
7587
7588 * hsa-gen.c (get_symbol_for_decl): Set program allocation for
7589 static local variables.
7590
7591 2018-02-08 Richard Biener <rguenther@suse.de>
7592
7593 PR tree-optimization/84278
7594 * tree-vect-stmts.c (vectorizable_store): When looking for
7595 smaller vector types to perform grouped strided loads/stores
7596 make sure the mode is supported by the target.
7597 (vectorizable_load): Likewise.
7598
7599 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
7600
7601 * config/aarch64/aarch64.c (aarch64_components_for_bb):
7602 Increase LDP/STP opportunities by adding adjacent callee-saves.
7603
7604 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
7605
7606 PR rtl-optimization/84068
7607 PR rtl-optimization/83459
7608 * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
7609
7610 2018-02-08 Aldy Hernandez <aldyh@redhat.com>
7611
7612 PR tree-optimization/84224
7613 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
7614 * calls.c (gimple_alloca_call_p): Only return TRUE when we have
7615 non-zero arguments.
7616
7617 2018-02-07 Iain Sandoe <iain@codesourcery.com>
7618
7619 PR target/84113
7620 * config/rs6000/altivec.md (*restore_world): Remove LR use.
7621 * config/rs6000/predicates.md (restore_world_operation): Adjust op
7622 count, remove one USE.
7623
7624 2018-02-07 Michael Meissner <meissner@linux.vnet.ibm.com>
7625
7626 * doc/install.texi (Configuration): Document the
7627 --with-long-double-format={ibm,ieee} PowerPC configuration
7628 options.
7629
7630 PR target/84154
7631 * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
7632 Convert from define_expand to be define_insn_and_split. Rework
7633 float/double/_Float128 conversions to QI/HI/SImode to work with
7634 both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where
7635 conversions to QI/HImode types did a store and then a load to
7636 truncate the value. For conversions to VSX registers, don't split
7637 the insn, instead emit the code directly. Use the code iterator
7638 any_fix to combine signed and unsigned conversions.
7639 (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
7640 (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
7641 (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
7642 (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
7643 (fix_<mode>di2_hw): Likewise.
7644 (fixuns_<mode>di2_hw): Likewise.
7645 (fix_<mode>si2_hw): Likewise.
7646 (fixuns_<mode>si2_hw): Likewise.
7647 (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
7648 (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
7649 (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
7650 fix<uns>_trunc<SFDF:mode>si2_p8.
7651 (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
7652 used.
7653 (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
7654 (fix<uns>_<mode>_mem): Likewise.
7655 (fctiw<u>z_<mode>_mem): Likewise.
7656 (fix<uns>_<mode>_mem): Likewise.
7657 (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
7658 the register allocator from doing a direct move to the GPRs to do
7659 a store, and instead use the ISA 3.0 store byte/half-word from
7660 vector register instruction. For IEEE 128-bit floating point,
7661 also optimize stores of 32-bit ints.
7662 (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
7663
7664 2018-02-07 Alan Hayward <alan.hayward@arm.com>
7665
7666 * genextract.c (push_pathstr_operand): New function to support
7667 [a-zA-Z].
7668 (walk_rtx): Call push_pathstr_operand.
7669 (print_path): Support [a-zA-Z].
7670
7671 2018-02-07 Richard Biener <rguenther@suse.de>
7672
7673 PR tree-optimization/84037
7674 * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
7675 (cse_and_gimplify_to_preheader): Declare.
7676 (vect_get_place_in_interleaving_chain): Likewise.
7677 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
7678 ivexpr_map.
7679 (_loop_vec_info::~_loop_vec_info): Delete it.
7680 (cse_and_gimplify_to_preheader): New function.
7681 * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
7682 * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
7683 (vectorizable_load): Likewise. For grouped stores always base
7684 the IV on the first element.
7685 * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
7686 condition before gimplifying.
7687
7688 2018-02-07 Jakub Jelinek <jakub@redhat.com>
7689
7690 * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
7691 *DIV_EXPR and *MOD_EXPR.
7692
7693 2018-02-07 H.J. Lu <hongjiu.lu@intel.com>
7694
7695 PR target/84248
7696 * config/i386/i386.c (ix86_option_override_internal): Mask out
7697 the CF_SET bit when checking -fcf-protection.
7698
7699 2018-02-07 Tom de Vries <tom@codesourcery.com>
7700
7701 PR libgomp/84217
7702 * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
7703 enough.
7704
7705 2018-02-07 Richard Biener <rguenther@suse.de>
7706
7707 PR tree-optimization/84204
7708 * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
7709 this place.
7710
7711 PR tree-optimization/84205
7712 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
7713 special-case isl_ast_op_zdiv_r.
7714
7715 PR tree-optimization/84223
7716 * graphite-scop-detection.c (gather_bbs::before_dom_children):
7717 Only add conditions from within the region.
7718 (gather_bbs::after_dom_children): Adjust.
7719
7720 2018-02-07 Georg-Johann Lay <avr@gjlay.de>
7721
7722 PR target/84209
7723 * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
7724 * config/avr/avr.md: Only post-reload split REG-REG moves if
7725 either register is GENERAL_REG_P.
7726
7727 2018-02-07 Jakub Jelinek <jakub@redhat.com>
7728
7729 PR tree-optimization/84235
7730 * tree-ssa-scopedtables.c
7731 (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
7732 if the subtraction is performed in floating point type where NaNs are
7733 honored. For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
7734 build 1. Formatting fix.
7735
7736 2018-02-06 Jakub Jelinek <jakub@redhat.com>
7737
7738 PR target/84146
7739 * config/i386/i386.c (rest_of_insert_endbranch): Only skip
7740 NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
7741 and skip it regardless of bb boundaries. Use CALL_P macro,
7742 don't test INSN_P (insn) together with CALL_P or JUMP_P check
7743 unnecessarily, formatting fix.
7744
7745 2018-02-06 Michael Collison <michael.collison@arm.com>
7746
7747 * config/arm/thumb2.md:
7748 (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
7749 (*thumb_mov_notscc): Ditto.
7750
7751 2018-02-06 Michael Meissner <meissner@linux.vnet.ibm.com>
7752
7753 PR target/84154
7754 * config/rs6000/rs6000.md (su code attribute): Use "u" for
7755 unsigned_fix, not "s".
7756
7757 2018-02-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
7758
7759 * configure.ac (gcc_fn_eh_frame_ro): New function.
7760 (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
7761 correct .eh_frame permissions.
7762 * configure: Regenerate.
7763
7764 2018-02-06 Andrew Jenner <andrew@codeourcery.com>
7765
7766 * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
7767 irrelevant options.
7768
7769 2018-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
7770
7771 * config/rs6000/rs6000.c (rs6000_option_override_internal):
7772 Display warning message for -mno-speculate-indirect-jumps.
7773
7774 2018-02-06 Andrew Jenner <andrew@codesourcery.com>
7775
7776 * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
7777 Undocumented.
7778 * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
7779
7780 2018-02-06 Aldy Hernandez <aldyh@redhat.com>
7781
7782 PR tree-optimization/84225
7783 * tree-eh.c (find_trapping_overflow): Only call
7784 operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
7785
7786 2018-02-06 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
7787
7788 PR target/84145
7789 * config/i386/i386.c: Reimplement the check of possible options
7790 -mibt/-mshstk conbination. Change error messages.
7791 * doc/invoke.texi: Fix a typo: remove extra '='.
7792
7793 2018-02-06 Marek Polacek <polacek@redhat.com>
7794
7795 PR tree-optimization/84228
7796 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
7797
7798 2018-02-06 Tamar Christina <tamar.christina@arm.com>
7799
7800 PR target/82641
7801 * config/arm/arm.c (arm_print_asm_arch_directives): Record already
7802 emitted arch directives.
7803 * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
7804 __ARM_FEATURE_COPROC before changing architectures.
7805
7806 2018-02-06 Richard Biener <rguenther@suse.de>
7807
7808 * config/i386/i386.c (print_reg): Fix typo.
7809 (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
7810
7811 2018-02-06 Eric Botcazou <ebotcazou@adacore.com>
7812
7813 * configure: Regenerate.
7814
7815 2018-02-05 Martin Sebor <msebor@redhat.com>
7816
7817 PR tree-optimization/83369
7818 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
7819 inlining context.
7820
7821 2018-02-05 Martin Liska <mliska@suse.cz>
7822
7823 * doc/invoke.texi: Cherry-pick upstream r323995.
7824
7825 2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
7826
7827 * ira.c (ira_init_register_move_cost): Adjust comment.
7828
7829 2018-02-05 Martin Liska <mliska@suse.cz>
7830
7831 PR gcov-profile/84137
7832 * doc/gcov.texi: Fix typo in documentation.
7833
7834 2018-02-05 Martin Liska <mliska@suse.cz>
7835
7836 PR gcov-profile/83879
7837 * doc/gcov.texi: Document necessity of --dynamic-list-data when
7838 using dlopen functionality.
7839
7840 2018-02-05 Olga Makhotina <olga.makhotina@intel.com>
7841
7842 * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
7843 _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
7844 _mm_maskz_range_ss, _mm_mask_range_round_ss,
7845 _mm_maskz_range_round_ss): New intrinsics.
7846 (__builtin_ia32_rangesd128_round)
7847 (__builtin_ia32_rangess128_round): Remove.
7848 (__builtin_ia32_rangesd128_mask_round,
7849 __builtin_ia32_rangess128_mask_round): New builtins.
7850 * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
7851 __builtin_ia32_rangess128_round): Remove.
7852 (__builtin_ia32_rangesd128_mask_round,
7853 __builtin_ia32_rangess128_mask_round): New builtins.
7854 * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
7855 (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
7856 ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
7857 "<round_saeonly_constraint>")): Changed to ...
7858 ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
7859 "<round_saeonly_scalar_constraint>")): ... this.
7860 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
7861 %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
7862 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
7863 %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
7864 %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
7865
7866 2018-02-02 Andrew Jenner <andrew@codesourcery.com>
7867
7868 * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
7869 options.
7870 * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
7871 Remove all values except native, 8540 and 8548.
7872
7873 2018-02-02 H.J. Lu <hongjiu.lu@intel.com>
7874
7875 * config/i386/i386.c (ix86_output_function_return): Pass
7876 INVALID_REGNUM, instead of -1, as invalid register number to
7877 indirect_thunk_name and output_indirect_thunk.
7878
7879 2018-02-02 Julia Koval <julia.koval@intel.com>
7880
7881 * config.gcc: Add -march=icelake.
7882 * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
7883 * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
7884 * config/i386/i386.c (processor_costs): Add m_ICELAKE.
7885 (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
7886 PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
7887 (processor_target_table): Add icelake.
7888 (ix86_option_override_internal): Handle new PTAs.
7889 (get_builtin_code_for_version): Handle icelake.
7890 (M_INTEL_COREI7_ICELAKE): New.
7891 (fold_builtin_cpu): Handle icelake.
7892 * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
7893 * doc/invoke.texi: Add -march=icelake.
7894
7895 2018-02-02 Julia Koval <julia.koval@intel.com>
7896
7897 * config/i386/i386.c (ix86_option_override_internal): Change flags type
7898 to wide_int_bitmask.
7899 * wide-int-bitmask.h: New.
7900
7901 2018-02-02 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
7902
7903 PR target/84066
7904 * config/i386/i386.md: Replace Pmode with word_mode in
7905 builtin_setjmp_setup and builtin_longjmp to support x32.
7906
7907 2018-02-01 Peter Bergner <bergner@vnet.ibm.com>
7908
7909 PR target/56010
7910 PR target/83743
7911 * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
7912 #include "opts.h".
7913 (rs6000_supported_cpu_names): New static variable.
7914 (linux_cpu_translation_table): Likewise.
7915 (elf_platform) <cpu>: Define new static variable and use it.
7916 Translate kernel AT_PLATFORM name to canonical name if needed.
7917 Error if platform name is unknown.
7918
7919 2018-02-01 Aldy Hernandez <aldyh@redhat.com>
7920
7921 PR target/84089
7922 * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
7923
7924 2018-02-01 Jeff Law <law@redhat.com>
7925
7926 PR target/84128
7927 * config/i386/i386.c (release_scratch_register_on_entry): Add new
7928 OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore
7929 the scratch if RELEASE_VIA_POP is false.
7930 (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
7931 If we have to save a temporary register, decrement SIZE appropriately.
7932 Pass new arguments to release_scratch_register_on_entry.
7933 (ix86_adjust_stack_and_probe): Likewise.
7934 (ix86_emit_probe_stack_range): Pass new arguments to
7935 release_scratch_register_on_entry.
7936
7937 2018-02-01 Uros Bizjak <ubizjak@gmail.com>
7938
7939 PR rtl-optimization/84157
7940 * combine.c (change_zero_ext): Use REG_P predicate in
7941 front of HARD_REGISTER_P predicate.
7942
7943 2018-02-01 Georg-Johann Lay <avr@gjlay.de>
7944
7945 * config/avr/avr.c (avr_option_override): Move disabling of
7946 -fdelete-null-pointer-checks to...
7947 * common/config/avr/avr-common.c (avr_option_optimization_table):
7948 ...here.
7949
7950 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7951
7952 PR tree-optimization/81635
7953 * tree-data-ref.c (split_constant_offset_1): For types that
7954 wrap on overflow, try to use range info to prove that wrapping
7955 cannot occur.
7956
7957 2018-02-01 Renlin Li <renlin.li@arm.com>
7958
7959 PR target/83370
7960 * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
7961 TAILCALL_ADDR_REGS.
7962 (aarch64_register_move_cost): Likewise.
7963 * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
7964 TAILCALL_ADDR_REGS.
7965 (REG_CLASS_NAMES): Likewise.
7966 (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
7967 TAILCALL_ADDR_REGS. Remove IP registers.
7968 * config/aarch64/aarch64.md (Ucs): Update register constraint.
7969
7970 2018-02-01 Richard Biener <rguenther@suse.de>
7971
7972 * domwalk.h (dom_walker::dom_walker): Add additional constructor
7973 for specifying RPO order and allow NULL for that.
7974 * domwalk.c (dom_walker::dom_walker): Likewise.
7975 (dom_walker::walk): Handle NULL RPO order.
7976 * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
7977 in RPO order.
7978 (rewrite_update_dom_walker): Likewise.
7979 (mark_def_dom_walker): Likewise.
7980
7981 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7982
7983 * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
7984 (aarch64_maybe_expand_sve_subreg_move): Declare.
7985 * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
7986 * config/aarch64/predicates.md (aarch64_any_register_operand): New
7987 predicate.
7988 * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
7989 that are semantically a reverse operation.
7990 (*aarch64_sve_mov<mode>_subreg_be): New pattern.
7991 * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
7992 (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
7993 functions.
7994 (aarch64_can_change_mode_class): For big-endian, forbid changes
7995 between two SVE modes if they have different element sizes.
7996
7997 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7998
7999 * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
8000 the TImode handling for big-endian targets.
8001
8002 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
8003
8004 * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
8005 (*sve_ld1rq<Vesize>): ... this new pattern. Handle all element sizes,
8006 not just bytes.
8007 * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
8008 Remove BSWAP handing for big-endian targets and use the form of
8009 LD1RQ appropariate for the mode.
8010
8011 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
8012
8013 * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
8014 all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
8015 duplicated element.
8016
8017 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
8018
8019 PR tearget/83845
8020 * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
8021 check for operands that need to go through aarch64_sve_reload_be.
8022
8023 2018-02-01 Jakub Jelinek <jakub@redhat.com>
8024
8025 PR tree-optimization/81661
8026 PR tree-optimization/84117
8027 * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
8028 * tree-eh.c: Include gimplify.h.
8029 (find_trapping_overflow, replace_trapping_overflow,
8030 rewrite_to_non_trapping_overflow): New functions.
8031 * tree-vect-loop.c: Include tree-eh.h.
8032 (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
8033 * tree-data-ref.c: Include tree-eh.h.
8034 (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
8035
8036 2018-01-31 Uros Bizjak <ubizjak@gmail.com>
8037
8038 PR rtl-optimization/84123
8039 * combine.c (change_zero_ext): Check if hard register satisfies
8040 can_change_dest_mode before calling gen_lowpart_SUBREG.
8041
8042 2018-01-31 Vladimir Makarov <vmakarov@redhat.com>
8043
8044 PR target/82444
8045 * ira.c (ira_init_register_move_cost): Remove assert.
8046
8047 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
8048
8049 PR rtl-optimization/84071
8050 * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
8051 * doc/tm.texi: Regenerate.
8052
8053 2018-01-31 Richard Biener <rguenther@suse.de>
8054
8055 PR tree-optimization/84132
8056 * tree-data-ref.c (analyze_miv_subscript): Properly
8057 check whether evolution_function_is_affine_multivariate_p
8058 before calling gcd_of_steps_may_divide_p.
8059
8060 2018-01-31 Julia Koval <julia.koval@intel.com>
8061
8062 PR target/83618
8063 * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
8064 * config/i386/i386.md (rdpid_rex64) New.
8065 (rdpid): Make 32bit only.
8066
8067 2018-01-29 Aldy Hernandez <aldyh@redhat.com>
8068
8069 PR lto/84105
8070 * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
8071 an IDENTIFIER_NODE for FUNCTION_TYPE's.
8072
8073 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
8074
8075 Revert
8076 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
8077
8078 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
8079
8080 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
8081
8082 PR rtl-optimization/84071
8083 * combine.c (record_dead_and_set_regs_1): Record the source unmodified
8084 for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
8085
8086 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
8087
8088 * config/arc/arc.c (arc_handle_aux_attribute): New function.
8089 (arc_attribute_table): Add 'aux' attribute.
8090 (arc_in_small_data_p): Consider aux like variables.
8091 (arc_is_aux_reg_p): New function.
8092 (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
8093 (arc_get_aux_arg): New function.
8094 (prepare_move_operands): Handle aux-register access.
8095 (arc_handle_aux_attribute): New function.
8096 * doc/extend.texi (ARC Variable attributes): Add subsection.
8097
8098 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
8099
8100 * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
8101 * config/arc/arc.c (arc_handle_uncached_attribute): New function.
8102 (arc_attribute_table): Add 'uncached' attribute.
8103 (arc_print_operand): Print '.di' flag for uncached memory
8104 accesses.
8105 (arc_in_small_data_p): Do not consider for small data the uncached
8106 types.
8107 (arc_is_uncached_mem_p): New function.
8108 * config/arc/predicates.md (compact_store_memory_operand): Check
8109 for uncached memory accesses.
8110 (nonvol_nonimm_operand): Likewise.
8111 * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
8112
8113 2018-01-31 Jakub Jelinek <jakub@redhat.com>
8114
8115 PR c/84100
8116 * common.opt (falign-functions=, falign-jumps=, falign-labels=,
8117 falign-loops=): Add Optimization flag.
8118
8119 2018-01-30 Jeff Law <law@redhat.com>
8120
8121 PR target/84064
8122 * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
8123 INT_REGISTERS_SAVED. Check it prior to calling
8124 get_scratch_register_on_entry.
8125 (ix86_adjust_stack_and_probe): Similarly.
8126 (ix86_emit_probe_stack_range): Similarly.
8127 (ix86_expand_prologue): Corresponding changes.
8128
8129 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8130
8131 PR target/40411
8132 * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
8133 -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
8134
8135 2018-01-30 Vladimir Makarov <vmakarov@redhat.com>
8136
8137 PR target/84112
8138 * lra-constraints.c (curr_insn_transform): Process AND in the
8139 address.
8140
8141 2018-01-30 Jakub Jelinek <jakub@redhat.com>
8142
8143 PR rtl-optimization/83986
8144 * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
8145 dependence against last_pending_memory_flush in addition to
8146 pending_jump_insns.
8147
8148 2018-01-30 Alexandre Oliva <aoliva@redhat.com>
8149
8150 PR tree-optimization/81611
8151 * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
8152 copies.
8153
8154 2018-01-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
8155
8156 PR target/83758
8157 * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
8158 a reg rtx.
8159
8160 2018-01-30 Richard Biener <rguenther@suse.de>
8161 Jakub Jelinek <jakub@redhat.com>
8162
8163 PR tree-optimization/84111
8164 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
8165 inner loops added during recursion, as they don't have up-to-date
8166 SSA form.
8167
8168 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
8169
8170 PR ipa/81360
8171 * ipa-inline.c (can_inline_edge_p): Break out late tests to...
8172 (can_inline_edge_by_limits_p): ... here.
8173 (can_early_inline_edge_p, check_callers,
8174 update_caller_keys, update_callee_keys, recursive_inlining,
8175 add_new_edges_to_heap, speculation_useful_p,
8176 inline_small_functions,
8177 inline_small_functions, flatten_function,
8178 inline_to_all_callers_1): Update.
8179
8180 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
8181
8182 * profile-count.c (profile_count::combine_with_ipa_count): Handle
8183 zeros correctly.
8184
8185 2018-01-30 Richard Biener <rguenther@suse.de>
8186
8187 PR tree-optimization/83008
8188 * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
8189 invariant and constant vector uses in stmts when they need
8190 more than one stmt.
8191
8192 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8193
8194 PR bootstrap/84017
8195 * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
8196 * configure: Regenerate.
8197
8198 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
8199
8200 * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
8201 pattern.
8202 (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
8203 Use gen_rtx_REG rather than gen_lowpart.
8204
8205 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
8206
8207 * lra-constraints.c (match_reload): Use subreg_lowpart_offset
8208 rather than 0 when creating partial subregs.
8209
8210 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
8211
8212 * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
8213 of usage.
8214
8215 2018-01-29 Michael Meissner <meissner@linux.vnet.ibm.com>
8216
8217 PR target/81550
8218 * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
8219 and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
8220 -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
8221 flags. This restores the settings used before the 2017-07-24.
8222 Turning off pre increment/decrement/modify allows IVOPTS to
8223 optimize DF/SF loops where the index is an int.
8224
8225 2018-01-29 Richard Biener <rguenther@suse.de>
8226 Kelvin Nilsen <kelvin@gcc.gnu.org>
8227
8228 PR bootstrap/80867
8229 * tree-vect-stmts.c (vectorizable_call): Don't call
8230 targetm.vectorize_builtin_md_vectorized_function if callee is
8231 NULL.
8232
8233 2018-01-22 Carl Love <cel@us.ibm.com>
8234
8235 * doc/extend.tex: Fix typo in second arg in
8236 __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
8237
8238 2018-01-29 Richard Biener <rguenther@suse.de>
8239
8240 PR tree-optimization/84086
8241 * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
8242 (flush_ssaname_freelist): When SSA names were released reset
8243 the SCEV hash table.
8244
8245 2018-01-29 Richard Biener <rguenther@suse.de>
8246
8247 PR tree-optimization/84057
8248 * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
8249 removed paths when removing edges.
8250
8251 2018-01-27 H.J. Lu <hongjiu.lu@intel.com>
8252
8253 * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
8254 -mfunction-return=@var{choice}.
8255
8256 2018-01-27 Bernd Edlinger <bernd.edlinger@hotmail.de>
8257
8258 PR diagnostic/84034
8259 * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
8260 Handle CR like TAB.
8261 (layout::print_source_line): Likewise.
8262 (test_get_line_width_without_trailing_whitespace): Add test cases.
8263
8264 2018-01-27 Jakub Jelinek <jakub@redhat.com>
8265
8266 PR middle-end/84040
8267 * sched-deps.c (sched_macro_fuse_insns): Return immediately for
8268 debug insns.
8269
8270 2018-01-26 Jim Wilson <jimw@sifive.com>
8271
8272 * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
8273
8274 * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
8275 specified.
8276
8277 2018-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8278
8279 * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
8280 and CMP + SUB-immediate -> SUBS.
8281
8282 2018-01-26 Martin Sebor <msebor@redhat.com>
8283
8284 PR tree-optimization/83896
8285 * tree-ssa-strlen.c (get_string_len): Rename...
8286 (get_string_cst_length): ...to this. Return HOST_WIDE_INT.
8287 Avoid assuming length is constant.
8288 (handle_char_store): Use HOST_WIDE_INT for string length.
8289
8290 2018-01-26 Uros Bizjak <ubizjak@gmail.com>
8291
8292 PR target/81763
8293 * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
8294 to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
8295
8296 2018-01-26 Richard Biener <rguenther@suse.de>
8297
8298 PR rtl-optimization/84003
8299 * dse.c (record_store): Only record redundant stores when
8300 the earlier store aliases at least all accesses the later one does.
8301
8302 2018-01-26 Jakub Jelinek <jakub@redhat.com>
8303
8304 PR rtl-optimization/83985
8305 * dce.c (deletable_insn_p): Return false for separate shrink wrapping
8306 REG_CFA_RESTORE insns.
8307 (delete_unmarked_insns): Don't ignore separate shrink wrapping
8308 REG_CFA_RESTORE insns here.
8309
8310 PR c/83989
8311 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
8312 use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
8313
8314 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8315
8316 * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
8317 * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
8318 (arc_init): Likewise.
8319 (arc_override_options): Likewise.
8320 (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
8321 value.
8322 (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
8323 support.
8324 * config/arc/arc.h (TARGET_DBNZ): Define.
8325 * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
8326 properly set the tune attribute.
8327 (dbnz): Use TARGET_DBNZ guard.
8328 * config/arc/arc.opt (mtune): Add core3 option.
8329
8330 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8331
8332 * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
8333 recognize new pic like addresses.
8334 (arc_delegitimize_address): Clean up.
8335
8336 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8337
8338 * config/arc/arc-arches.def: Option mrf16 valid for all
8339 architectures.
8340 * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
8341 * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
8342 * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
8343 * config/arc/arc-tables.opt: Regenerate.
8344 * config/arc/arc.c (arc_conditional_register_usage): Handle
8345 reduced register file case.
8346 (arc_file_start): Set must have build attributes.
8347 * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
8348 mrf16 option value.
8349 * config/arc/arc.opt (mrf16): Add new option.
8350 * config/arc/elf.h (ATTRIBUTE_PCS): Define.
8351 * config/arc/genmultilib.awk: Handle new mrf16 option.
8352 * config/arc/linux.h (ATTRIBUTE_PCS): Define.
8353 * config/arc/t-multilib: Regenerate.
8354 * doc/invoke.texi (ARC Options): Document mrf16 option.
8355
8356 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8357
8358 * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
8359 * config/arc/arc.c (arc_handle_secure_attribute): New function.
8360 (arc_attribute_table): Add 'secure_call' attribute.
8361 (arc_print_operand): Print secure call operand.
8362 (arc_function_ok_for_sibcall): Don't optimize tail calls when
8363 secure.
8364 (arc_is_secure_call_p): New function. * config/arc/arc.md
8365 (call_i): Add support for sjli instruction.
8366 (call_value_i): Likewise.
8367 * config/arc/constraints.md (Csc): New constraint.
8368
8369 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8370 John Eric Martin <John.Martin@emmicro-us.com>
8371
8372 * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
8373 * config/arc/arc.c (_arc_jli_section): New struct.
8374 (arc_jli_section): New type.
8375 (rc_jli_sections): New static variable.
8376 (arc_handle_jli_attribute): New function.
8377 (arc_attribute_table): Add jli_always and jli_fixed attribute.
8378 (arc_file_end): New function.
8379 (TARGET_ASM_FILE_END): Define.
8380 (arc_print_operand): Reuse 'S' letter for JLI output instruction.
8381 (arc_add_jli_section): New function.
8382 (jli_call_scan): Likewise.
8383 (arc_reorg): Call jli_call_scan.
8384 (arc_output_addsi): Remove 'S' from printing asm operand.
8385 (arc_is_jli_call_p): New function.
8386 * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
8387 operand.
8388 (movhi_insn): Likewise.
8389 (movsi_insn): Likewise.
8390 (movsi_set_cc_insn): Likewise.
8391 (loadqi_update): Likewise.
8392 (load_zeroextendqisi_update): Likewise.
8393 (load_signextendqisi_update): Likewise.
8394 (loadhi_update): Likewise.
8395 (load_zeroextendhisi_update): Likewise.
8396 (load_signextendhisi_update): Likewise.
8397 (loadsi_update): Likewise.
8398 (loadsf_update): Likewise.
8399 (movsicc_insn): Likewise.
8400 (bset_insn): Likewise.
8401 (bxor_insn): Likewise.
8402 (bclr_insn): Likewise.
8403 (bmsk_insn): Likewise.
8404 (bicsi3_insn): Likewise.
8405 (cmpsi_cc_c_insn): Likewise.
8406 (movsi_ne): Likewise.
8407 (movsi_cond_exec): Likewise.
8408 (clrsbsi2): Likewise.
8409 (norm_f): Likewise.
8410 (normw): Likewise.
8411 (swap): Likewise.
8412 (divaw): Likewise.
8413 (flag): Likewise.
8414 (sr): Likewise.
8415 (kflag): Likewise.
8416 (ffs): Likewise.
8417 (ffs_f): Likewise.
8418 (fls): Likewise.
8419 (call_i): Remove 'S' asm letter, add jli instruction.
8420 (call_value_i): Likewise.
8421 * config/arc/arc.op (mjli-always): New option.
8422 * config/arc/constraints.md (Cji): New constraint.
8423 * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
8424 operand.
8425 (subsf3_fpx): Likewise.
8426 (mulsf3_fpx): Likewise.
8427 * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
8428 asm operand.
8429 * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
8430 function attrbutes.
8431 * doc/invoke.texi (ARC): Document mjli-always option.
8432
8433 2018-01-26 Sebastian Perta <sebastian.perta@renesas.com>
8434
8435 * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const
8436 avoid addition with 0 and use incw and decw where possible.
8437
8438 2018-01-26 Richard Biener <rguenther@suse.de>
8439
8440 PR tree-optimization/81082
8441 * fold-const.c (fold_plusminus_mult_expr): Do not perform the
8442 association if it requires casting to unsigned.
8443 * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
8444 from fold_plusminus_mult_expr to catch important cases late when
8445 range info is available.
8446
8447 2018-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8448
8449 * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
8450 * configure.ac (hidden_linkonce): New test.
8451 * configure: Regenerate.
8452 * config.in: Regenerate.
8453
8454 2018-01-26 Julia Koval <julia.koval@intel.com>
8455
8456 * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
8457 _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
8458 _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
8459 _mm_mask_bitshuffle_epi64_mask): Fix type.
8460 * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
8461 USI_FTYPE_V4DI_V4DI_USI): Remove.
8462 * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
8463 __builtin_ia32_vpshufbitqmb256_mask,
8464 __builtin_ia32_vpshufbitqmb128_mask): Fix types.
8465 * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
8466 * config/i386/sse.md (VI1_AVX512VLBW): Change types.
8467
8468 2018-01-26 Alan Modra <amodra@gmail.com>
8469
8470 PR target/84033
8471 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
8472 UNSPEC_VBPERMQ. Sort other unspecs.
8473
8474 2018-01-25 David Edelsohn <dje.gcc@gmail.com>
8475
8476 * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
8477
8478 2018-01-25 Jan Hubicka <hubicka@ucw.cz>
8479
8480 PR middle-end/83055
8481 * predict.c (drop_profile): Do not push/pop cfun; update also
8482 node->count.
8483 (handle_missing_profiles): Fix logic looking for zero profiles.
8484
8485 2018-01-25 Jakub Jelinek <jakub@redhat.com>
8486
8487 PR middle-end/83977
8488 * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
8489 on functions with #pragma omp declare simd or functions with simd
8490 attribute.
8491 * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
8492 * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
8493 Remove trailing \n from warning_at calls.
8494
8495 2018-01-25 Tom de Vries <tom@codesourcery.com>
8496
8497 PR target/84028
8498 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
8499 for neutered workers.
8500
8501 2018-01-24 Joseph Myers <joseph@codesourcery.com>
8502
8503 PR target/68467
8504 * config/m68k/m68k.c (m68k_promote_function_mode): New function.
8505 (TARGET_PROMOTE_FUNCTION_MODE): New macro.
8506
8507 2018-01-24 Jeff Law <law@redhat.com>
8508
8509 PR target/83994
8510 * i386.c (get_probe_interval): Move to earlier point.
8511 (ix86_compute_frame_layout): If -fstack-clash-protection and
8512 the frame is larger than the probe interval, then use pushes
8513 to save registers rather than reg->mem moves.
8514 (ix86_expand_prologue): Remove conditional for int_registers_saved
8515 assertion.
8516
8517 2018-01-24 Vladimir Makarov <vmakarov@redhat.com>
8518
8519 PR target/84014
8520 * ira-build.c (setup_min_max_allocno_live_range_point): Set up
8521 min/max for never referenced object.
8522
8523 2018-01-24 Jakub Jelinek <jakub@redhat.com>
8524
8525 PR middle-end/83977
8526 * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
8527 here.
8528 * omp-low.c (create_omp_child_function): Remove "omp declare simd"
8529 attributes from DECL_ATTRIBUTES (decl) without affecting
8530 DECL_ATTRIBUTES (current_function_decl).
8531 * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
8532 functions with non-NULL DECL_ABSTRACT_ORIGIN.
8533
8534 2018-01-24 Richard Sandiford <richard.sandiford@linaro.org>
8535
8536 PR tree-optimization/83979
8537 * fold-const.c (fold_comparison): Use constant_boolean_node
8538 instead of boolean_{true,false}_node.
8539
8540 2018-01-24 Jan Hubicka <hubicka@ucw.cz>
8541
8542 * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
8543 with zero counts.
8544
8545 2018-01-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
8546
8547 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8548 Simplify the clause that sets the length attribute.
8549 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8550 (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
8551 clause that sets the length attribute.
8552 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8553
8554 2018-01-24 Tom de Vries <tom@codesourcery.com>
8555
8556 PR target/83589
8557 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
8558 (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
8559 Add strict parameter.
8560 (prevent_branch_around_nothing): Insert dummy insn between branch to
8561 label and label with no ptx insn inbetween.
8562 * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
8563
8564 2018-01-24 Tom de Vries <tom@codesourcery.com>
8565
8566 PR target/81352
8567 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
8568 for neutered threads in warp.
8569 * config/nvptx/nvptx.md (define_insn "exit"): New insn.
8570
8571 2018-01-24 Richard Biener <rguenther@suse.de>
8572
8573 PR tree-optimization/83176
8574 * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
8575 operands.
8576
8577 2018-01-24 Richard Biener <rguenther@suse.de>
8578
8579 PR tree-optimization/82819
8580 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
8581 code generating pluses that are no-ops in the target precision.
8582
8583 2018-01-24 Richard Biener <rguenther@suse.de>
8584
8585 PR middle-end/84000
8586 * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
8587
8588 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
8589
8590 * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
8591 to merge probabilities.
8592 * predict.c (probably_never_executed): Also mark as cold functions
8593 with global 0 profile and guessed local profile.
8594 * profile-count.c (profile_probability::combine_with_count): New
8595 member function.
8596 * profile-count.h (profile_probability::operator*,
8597 profile_probability::operator*=, profile_probability::operator/,
8598 profile_probability::operator/=): Reduce precision to adjusted
8599 and set value to guessed on contradictory divisions.
8600 (profile_probability::combine_with_freq): Remove.
8601 (profile_probability::combine_wiht_count): Declare.
8602 (profile_count::force_nonzero):: Set to adjusted.
8603 (profile_count::probability_in):: Set quality to adjusted.
8604 * tree-ssa-tail-merge.c (replace_block_by): Use
8605 combine_with_count.
8606
8607 2018-01-23 Andrew Waterman <andrew@sifive.com>
8608 Jim Wilson <jimw@sifive.com>
8609
8610 * config/riscv/riscv.c (riscv_stack_boundary): New.
8611 (riscv_option_override): Set riscv_stack_boundary. Handle
8612 riscv_preferred_stack_boundary_arg.
8613 * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
8614 (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
8615 (STACK_BOUNDARY): Set to riscv_stack_boundary.
8616 (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
8617 * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
8618 * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
8619
8620 2018-01-23 H.J. Lu <hongjiu.lu@intel.com>
8621
8622 PR target/83905
8623 * config/i386/i386.c (ix86_expand_prologue): Use cost reference
8624 of struct ix86_frame.
8625 (ix86_expand_epilogue): Likewise. Add a local variable for
8626 the reg_save_offset field in struct ix86_frame.
8627
8628 2018-01-23 Bin Cheng <bin.cheng@arm.com>
8629
8630 PR tree-optimization/82604
8631 * tree-loop-distribution.c (enum partition_kind): New enum item
8632 PKIND_PARTIAL_MEMSET.
8633 (partition_builtin_p): Support above new enum item.
8634 (generate_code_for_partition): Ditto.
8635 (compute_access_range): Differentiate cases that equality can be
8636 proven at all loops, the innermost loops or no loops.
8637 (classify_builtin_st, classify_builtin_ldst): Adjust call to above
8638 function. Set PKIND_PARTIAL_MEMSET for partition appropriately.
8639 (finalize_partitions, distribute_loop): Don't fuse partition of
8640 PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
8641 (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
8642 parloop is enabled.
8643
8644 2018-01-23 Martin Liska <mliska@suse.cz>
8645
8646 * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
8647 order to ignore the predictor.
8648 (PRED_POLYMORPHIC_CALL): Likewise.
8649 (PRED_RECURSIVE_CALL): Likewise.
8650
8651 2018-01-23 Martin Liska <mliska@suse.cz>
8652
8653 * tree-profile.c (tree_profiling): Print function header to
8654 aware reader which function we are working on.
8655 * value-prof.c (gimple_find_values_to_profile): Do not print
8656 not interesting value histograms.
8657
8658 2018-01-23 Martin Liska <mliska@suse.cz>
8659
8660 * profile-count.h (enum profile_quality): Add
8661 profile_uninitialized as the first value. Do not number values
8662 as they are zero based.
8663 (profile_count::verify): Update sanity check.
8664 (profile_probability::verify): Likewise.
8665
8666 2018-01-23 Nathan Sidwell <nathan@acm.org>
8667
8668 * doc/invoke.texi (ffor-scope): Deprecate.
8669
8670 2018-01-23 David Malcolm <dmalcolm@redhat.com>
8671
8672 PR tree-optimization/83510
8673 * domwalk.c (set_all_edges_as_executable): New function.
8674 (dom_walker::dom_walker): Convert bool param
8675 "skip_unreachable_blocks" to enum reachability. Move setup of
8676 edge flags to set_all_edges_as_executable and only do it when
8677 reachability is REACHABLE_BLOCKS.
8678 * domwalk.h (enum dom_walker::reachability): New enum.
8679 (dom_walker::dom_walker): Convert bool param
8680 "skip_unreachable_blocks" to enum reachability.
8681 (set_all_edges_as_executable): New decl.
8682 * graphite-scop-detection.c (gather_bbs::gather_bbs): Convert
8683 from false for "skip_unreachable_blocks" to ALL_BLOCKS for
8684 "reachability".
8685 * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
8686 but converting true to REACHABLE_BLOCKS.
8687 * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
8688 * tree-vrp.c
8689 (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
8690 Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
8691 (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
8692 REACHABLE_BLOCKS.
8693 (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
8694 if check_all_array_refs will be called.
8695
8696 2018-01-23 David Malcolm <dmalcolm@redhat.com>
8697
8698 * tree.c (selftest::test_location_wrappers): Add more test
8699 coverage.
8700
8701 2018-01-23 David Malcolm <dmalcolm@redhat.com>
8702
8703 * sbitmap.c (selftest::test_set_range): Fix memory leaks.
8704 (selftest::test_bit_in_range): Likewise.
8705
8706 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
8707
8708 PR testsuite/83888
8709 * doc/sourcebuild.texi (vect_float): Say that the selector
8710 only describes the situation when -funsafe-math-optimizations is on.
8711 (vect_float_strict): Document.
8712
8713 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
8714
8715 PR tree-optimization/83965
8716 * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
8717 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
8718 instead of checking only for a reduction.
8719 (vect_recog_widen_sum_pattern): Likewise.
8720
8721 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
8722
8723 * predict.c (probably_never_executed): Only use precise profile info.
8724 (compute_function_frequency): Skip after inlining hack since we now
8725 have quality checking.
8726
8727 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
8728
8729 * profile-count.h (profile_probability::very_unlikely,
8730 profile_probability::unlikely, profile_probability::even): Set
8731 precision to guessed.
8732
8733 2018-01-23 Richard Biener <rguenther@suse.de>
8734
8735 PR tree-optimization/83963
8736 * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
8737 Properly terminate dominator walk when crossing the exit edge not
8738 when visiting its source block.
8739
8740 2018-01-23 Jakub Jelinek <jakub@redhat.com>
8741
8742 PR c++/83918
8743 * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
8744 VIEW_CONVERT_EXPR to wrap CONST_DECLs.
8745
8746 2018-01-22 Jakub Jelinek <jakub@redhat.com>
8747
8748 PR tree-optimization/83957
8749 * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs. Remove
8750 semicolon after for body surrounded by braces.
8751
8752 PR tree-optimization/83081
8753 * profile-count.h (profile_probability::split): New method.
8754 * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
8755 Use profile_probability::split.
8756 (do_compare_rtx_and_jump): Fix adjustment of probabilities
8757 when splitting a single conditional jump into 2.
8758
8759 2018-01-22 David Malcolm <dmalcolm@redhat.com>
8760
8761 PR tree-optimization/69452
8762 * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
8763 decl.
8764
8765 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8766
8767 * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
8768 * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
8769 * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
8770
8771 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8772
8773 * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
8774 * config/rl78/rl78.md (movdi): New define_expand.
8775 * config/rl78/rl78.c (rl78_split_movdi): New function.
8776
8777 2018-01-22 Michael Meissner <meissner@linux.vnet.ibm.com>
8778
8779 PR target/83862
8780 * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
8781 no longer used.
8782 * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
8783 * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
8784 128-bit to produce an UNSPEC move to get the double word with the
8785 signbit and then a shift directly to do signbit.
8786 (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
8787 implementation with a new version that just does either a direct
8788 move or a regular move. Move memory interface to separate insns.
8789 Move insns so they are next to the expander.
8790 (signbit<mode>2_dm_mem_be): New combiner insns to combine load
8791 with signbit move. Split big and little endian case.
8792 (signbit<mode>2_dm_mem_le): Likewise.
8793 (signbit<mode>2_dm_<su>ext): Delete, no longer used.
8794 (signbit<mode>2_dm2): Likewise.
8795
8796 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8797
8798 * config/rl78/rl78.md (anddi3): New define_expand.
8799
8800 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8801
8802 * config/rl78/rl78.md (umindi3): New define_expand.
8803
8804 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8805
8806 * config/rl78/rl78.md (smindi3): New define_expand.
8807
8808 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8809
8810 * config/rl78/rl78.md (smaxdi3): New define_expand.
8811
8812 2018-01-22 Carl Love <cel@us.ibm.com>
8813
8814 * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
8815 LVX_V1TI): Add macro expansion.
8816 * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
8817 definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
8818 VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
8819 * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
8820 Change check to determine if the instruction is a byte reversing
8821 entry. Fix typo in comment.
8822 * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
8823 for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
8824 Add def_builtin calls for new builtins.
8825 * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
8826 Add define_insn expansion.
8827
8828 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8829
8830 * config/rl78/rl78.md (umaxdi3): New define_expand.
8831
8832 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8833
8834 * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
8835 for non-QImode registers.
8836
8837 2018-01-22 Richard Biener <rguenther@suse.de>
8838
8839 PR tree-optimization/83963
8840 * graphite-scop-detection.c (scop_detection::get_sese): Delay
8841 including the loop exit block.
8842 (scop_detection::merge_sese): Likewise.
8843 (scop_detection::add_scop): Do it here instead.
8844
8845 2018-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8846
8847 * doc/sourcebuild.texi (arm_softfloat): Document.
8848
8849 2018-01-21 John David Anglin <danglin@gcc.gnu.org>
8850
8851 PR gcc/77734
8852 * config/pa/pa.c (pa_function_ok_for_sibcall): Use
8853 targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
8854 Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
8855
8856 2018-01-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
8857 David Edelsohn <dje.gcc@gmail.com>
8858
8859 PR target/83946
8860 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8861 Change "crset eq" to "crset 2".
8862 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8863 (*call_indirect_aix<mode>_nospec): Likewise.
8864 (*call_value_indirect_aix<mode>_nospec): Likewise.
8865 (*call_indirect_elfv2<mode>_nospec): Likewise.
8866 (*call_value_indirect_elfv2<mode>_nospec): Likewise.
8867 (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
8868 change assembly output from . to $.
8869 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8870 (indirect_jump<mode>_nospec): Change assembly output from . to $.
8871 (*tablejump<mode>_internal1_nospec): Likewise.
8872
8873 2018-01-21 Oleg Endo <olegendo@gcc.gnu.org>
8874
8875 PR target/80870
8876 * config/sh/sh_optimize_sett_clrt.cc:
8877 Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
8878
8879 2018-01-20 Richard Sandiford <richard.sandiford@linaro.org>
8880
8881 PR tree-optimization/83940
8882 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
8883 offset_dt to vect_constant_def rather than vect_unknown_def_type.
8884 (vect_check_load_store_mask): Add a mask_dt_out parameter and
8885 use it to pass back the definition type.
8886 (vect_check_store_rhs): Likewise rhs_dt_out.
8887 (vect_build_gather_load_calls): Add a mask_dt argument and use
8888 it instead of a call to vect_is_simple_use.
8889 (vectorizable_store): Update calls to vect_check_load_store_mask
8890 and vect_check_store_rhs. Use the dt returned by the latter instead
8891 of scatter_src_dt. Use the cached mask_dt and gs_info.offset_dt
8892 instead of calls to vect_is_simple_use. Pass the scalar rather
8893 than the vector operand to vect_is_simple_use when handling
8894 second and subsequent copies of an rhs value.
8895 (vectorizable_load): Update calls to vect_check_load_store_mask
8896 and vect_build_gather_load_calls. Use the cached mask_dt and
8897 gs_info.offset_dt instead of calls to vect_is_simple_use.
8898
8899 2018-01-20 Jakub Jelinek <jakub@redhat.com>
8900
8901 PR middle-end/83945
8902 * tree-emutls.c: Include gimplify.h.
8903 (lower_emutls_2): New function.
8904 (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
8905 with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
8906 it before further processing.
8907
8908 PR target/83930
8909 * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
8910 UINTVAL (trueop1) instead of INTVAL (op1).
8911
8912 2018-01-19 Jakub Jelinek <jakub@redhat.com>
8913
8914 PR debug/81570
8915 PR debug/83728
8916 * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
8917 INCOMING_FRAME_SP_OFFSET if not defined.
8918 (scan_trace): Add ENTRY argument. If true and
8919 DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
8920 emit a note to adjust the CFA offset.
8921 (create_cfi_notes): Adjust scan_trace callers.
8922 (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
8923 INCOMING_FRAME_SP_OFFSET in the CIE.
8924 * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
8925 * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
8926 Likewise.
8927 * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
8928 * doc/tm.texi: Regenerated.
8929
8930 2018-01-19 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
8931
8932 PR rtl-optimization/83147
8933 * lra-constraints.c (remove_inheritance_pseudos): Use
8934 lra_substitute_pseudo_within_insn.
8935
8936 2018-01-19 Tom de Vries <tom@codesourcery.com>
8937 Cesar Philippidis <cesar@codesourcery.com>
8938
8939 PR target/83920
8940 * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
8941
8942 2018-01-19 Cesar Philippidis <cesar@codesourcery.com>
8943
8944 PR target/83790
8945 * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
8946 spaces for function labels.
8947
8948 2018-01-19 Martin Liska <mliska@suse.cz>
8949
8950 * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
8951 (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
8952 (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
8953 (PRED_OPCODE_POSITIVE): Change from 64 to 59.
8954 (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
8955 (PRED_CONST_RETURN): Change from 69 to 65.
8956 (PRED_NULL_RETURN): Change from 91 to 71.
8957 (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
8958 (PRED_LOOP_GUARD): Change from 66 to 73.
8959
8960 2018-01-19 Martin Liska <mliska@suse.cz>
8961
8962 * predict.c (predict_insn_def): Add new assert.
8963 (struct branch_predictor): Change type to signed integer.
8964 (test_prediction_value_range): Amend test to cover
8965 PROB_UNINITIALIZED.
8966 * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
8967 (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
8968 (PRED_LOOP_ITERATIONS_MAX): Likewise.
8969 (PRED_LOOP_IV_COMPARE): Likewise.
8970 * predict.h (PROB_UNINITIALIZED): Define new constant.
8971
8972 2018-01-19 Martin Liska <mliska@suse.cz>
8973
8974 * predict.c (dump_prediction): Add new format for
8975 analyze_brprob.py script which is enabled with -details
8976 suboption.
8977 * profile-count.h (precise_p): New function.
8978
8979 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
8980
8981 PR tree-optimization/83922
8982 * tree-vect-loop.c (vect_verify_full_masking): Return false if
8983 there are no statements that need masking.
8984 (vect_active_double_reduction_p): New function.
8985 (vect_analyze_loop_operations): Use it when handling phis that
8986 are not in the loop header.
8987
8988 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
8989
8990 PR tree-optimization/83914
8991 * tree-vect-loop.c (vectorizable_induction): Don't convert
8992 init_expr or apply the peeling adjustment for inductions
8993 that are nested within the vectorized loop.
8994
8995 2018-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8996
8997 * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
8998 instead of NEG.
8999
9000 2018-01-18 Jakub Jelinek <jakub@redhat.com>
9001
9002 PR sanitizer/81715
9003 PR testsuite/83882
9004 * function.h (gimplify_parameters): Add gimple_seq * argument.
9005 * function.c: Include gimple.h and options.h.
9006 (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
9007 for the added local temporaries if needed.
9008 * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
9009 if there are any parameter cleanups, wrap whole body into a
9010 try/finally with the cleanups.
9011
9012 2018-01-18 Wilco Dijkstra <wdijkstr@arm.com>
9013
9014 PR target/82964
9015 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
9016 Use GET_MODE_CLASS for scalar floating point.
9017
9018 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
9019
9020 PR ipa/82256
9021 patch by PaX Team
9022 * cgraphclones.c (cgraph_node::create_version_clone_with_body):
9023 Fix call of call_cgraph_insertion_hooks.
9024
9025 2018-01-18 Martin Sebor <msebor@redhat.com>
9026
9027 * doc/invoke.texi (-Wclass-memaccess): Tweak text.
9028
9029 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
9030
9031 PR ipa/83619
9032 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
9033 frequencies.
9034
9035 2018-01-18 Boris Kolpackov <boris@codesynthesis.com>
9036
9037 PR other/70268
9038 * common.opt: (-ffile-prefix-map): New option.
9039 * opts.c (common_handle_option): Defer it.
9040 * opts-global.c (handle_common_deferred_options): Handle it.
9041 * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
9042 * file-prefix-map.h: New file.
9043 (remap_debug_filename, add_debug_prefix_map): ...here.
9044 (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
9045 * final.c (debug_prefix_map, add_debug_prefix_map
9046 remap_debug_filename): Move to...
9047 * file-prefix-map.c: New file.
9048 (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
9049 generalize, get rid of alloca(), use strrchr() instead of strchr().
9050 (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
9051 Implement in terms of add_prefix_map().
9052 (remap_macro_filename, remap_debug_filename): Implement in term of
9053 remap_filename().
9054 * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
9055 * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
9056 * dbxout.c: Include file-prefix-map.h.
9057 * varasm.c: Likewise.
9058 * vmsdbgout.c: Likewise.
9059 * xcoffout.c: Likewise.
9060 * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
9061 * doc/cppopts.texi (-fmacro-prefix-map): Document.
9062 * doc/invoke.texi (-ffile-prefix-map): Document.
9063 (-fdebug-prefix-map): Update description.
9064
9065 2018-01-18 Martin Liska <mliska@suse.cz>
9066
9067 * config/i386/i386.c (indirect_thunk_name): Document that also
9068 lfence is emitted.
9069 (output_indirect_thunk): Document why both instructions
9070 (pause and lfence) are generated.
9071
9072 2018-01-18 Richard Biener <rguenther@suse.de>
9073
9074 PR tree-optimization/83887
9075 * graphite-scop-detection.c
9076 (scop_detection::get_nearest_dom_with_single_entry): Remove.
9077 (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
9078 (scop_detection::merge_sese): Re-implement with a flood-fill
9079 algorithm that properly finds a SESE region if it exists.
9080
9081 2018-01-18 Jakub Jelinek <jakub@redhat.com>
9082
9083 PR c/61240
9084 * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
9085 pointer_diff optimizations use view_convert instead of convert.
9086
9087 2018-01-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
9088
9089 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
9090 Generate different code for -mno-speculate-indirect-jumps.
9091 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
9092 (*call_indirect_aix<mode>): Disable for
9093 -mno-speculate-indirect-jumps.
9094 (*call_indirect_aix<mode>_nospec): New define_insn.
9095 (*call_value_indirect_aix<mode>): Disable for
9096 -mno-speculate-indirect-jumps.
9097 (*call_value_indirect_aix<mode>_nospec): New define_insn.
9098 (*sibcall_nonlocal_sysv<mode>): Generate different code for
9099 -mno-speculate-indirect-jumps.
9100 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
9101
9102 2018-01-17 Michael Meissner <meissner@linux.vnet.ibm.com>
9103
9104 * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
9105 long double type, set the flags for noting the default long double
9106 type, even if we don't pass or return a long double type.
9107
9108 2018-01-17 Jan Hubicka <hubicka@ucw.cz>
9109
9110 PR ipa/83051
9111 * ipa-inline.c (flatten_function): Do not overwrite final inlining
9112 failure.
9113
9114 2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com>
9115
9116 * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
9117 support for merge[hl].
9118 (fold_mergehl_helper): New helper function.
9119 (tree-vector-builder.h): New #include for tree_vector_builder usage.
9120 * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
9121 (altivec_vmrglw_direct): Add xxmrglw insn.
9122
9123 2018-01-17 Andrew Waterman <andrew@sifive.com>
9124
9125 * config/riscv/riscv.c (riscv_conditional_register_usage): If
9126 UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
9127
9128 2018-01-17 David Malcolm <dmalcolm@redhat.com>
9129
9130 PR lto/83121
9131 * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
9132 call the lto_location_cache before reading the
9133 DECL_SOURCE_LOCATION of the types.
9134
9135 2018-01-17 Wilco Dijkstra <wdijkstr@arm.com>
9136 Richard Sandiford <richard.sandiford@linaro.org>
9137
9138 * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
9139 * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
9140 (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
9141 SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
9142 * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
9143 Add declaration.
9144 * config/aarch64/constraints.md (aarch64_movti_operand):
9145 Limit immediates.
9146 * config/aarch64/predicates.md (Uti): Add new constraint.
9147
9148 2018-01-17 Carl Love <cel@us.ibm.com>
9149
9150 * config/rs6000/vsx.md (define_expand xl_len_r,
9151 define_expand stxvl, define_expand *stxvl): Add match_dup argument.
9152 (define_insn): Add, match_dup 1 argument to define_insn stxvll and
9153 lxvll.
9154 (define_expand, define_insn): Move the shift left from the
9155 define_insn to the define_expand for lxvl and stxvl instructions.
9156 * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
9157 and XL_LEN_R definitions to PURE.
9158
9159 2018-01-17 Uros Bizjak <ubizjak@gmail.com>
9160
9161 * config/i386/i386.c (indirect_thunk_name): Declare regno
9162 as unsigned int. Compare regno with INVALID_REGNUM.
9163 (output_indirect_thunk): Ditto.
9164 (output_indirect_thunk_function): Ditto.
9165 (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM
9166 in the call to output_indirect_thunk_function.
9167
9168 2018-01-17 Richard Sandiford <richard.sandiford@linaro.org>
9169
9170 PR middle-end/83884
9171 * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
9172 rather than the size of inner_type to determine the stack slot size
9173 when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
9174
9175 2018-01-16 Sebastian Peryt <sebastian.peryt@intel.com>
9176
9177 PR target/83546
9178 * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
9179 to PTA_SILVERMONT.
9180
9181 2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com>
9182
9183 * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
9184 endian Linux systems to optionally enable multilibs for selecting
9185 the long double type if the user configured an explicit type.
9186 * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
9187 have no long double multilibs if not defined.
9188 * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
9189 warn if the user used -mabi={ieee,ibm}longdouble and we built
9190 multilibs for long double.
9191 * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
9192 appropriate multilib option.
9193 (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
9194 multilib options.
9195 * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
9196 for building long double multilibs.
9197 * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
9198
9199 2018-01-16 John David Anglin <danglin@gcc.gnu.org>
9200
9201 * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
9202 copies.
9203
9204 * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
9205 64 bits.
9206 * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
9207 128 bits.
9208
9209 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
9210 variables.
9211
9212 * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
9213 return value.
9214
9215 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
9216
9217 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
9218 ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
9219
9220 2018-01-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
9221
9222 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
9223 different rtl trees depending on TARGET_64BIT.
9224 (rs6000_gen_lvx): Likewise.
9225
9226 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
9227
9228 * config/visium/visium.md (nop): Tweak comment.
9229 (hazard_nop): Likewise.
9230
9231 2018-01-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
9232
9233 * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
9234 -mspeculate-indirect-jumps.
9235 * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
9236 for -mno-speculate-indirect-jumps.
9237 (*call_indirect_elfv2<mode>_nospec): New define_insn.
9238 (*call_value_indirect_elfv2<mode>): Disable for
9239 -mno-speculate-indirect-jumps.
9240 (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
9241 (indirect_jump): Emit different RTL for
9242 -mno-speculate-indirect-jumps.
9243 (*indirect_jump<mode>): Disable for
9244 -mno-speculate-indirect-jumps.
9245 (*indirect_jump<mode>_nospec): New define_insn.
9246 (tablejump): Emit different RTL for
9247 -mno-speculate-indirect-jumps.
9248 (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
9249 (tablejumpsi_nospec): New define_expand.
9250 (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
9251 (tablejumpdi_nospec): New define_expand.
9252 (*tablejump<mode>_internal1): Disable for
9253 -mno-speculate-indirect-jumps.
9254 (*tablejump<mode>_internal1_nospec): New define_insn.
9255 * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
9256 option.
9257
9258 2018-01-16 Artyom Skrobov tyomitch@gmail.com
9259
9260 * caller-save.c (insert_save): Drop unnecessary parameter. All
9261 callers updated.
9262
9263 2018-01-16 Jakub Jelinek <jakub@redhat.com>
9264 Richard Biener <rguenth@suse.de>
9265
9266 PR libgomp/83590
9267 * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
9268 return early, inline manually is_gimple_sizepos. Make sure if we
9269 call gimplify_expr we don't end up with a gimple constant.
9270 * tree.c (variably_modified_type_p): Don't return true for
9271 is_gimple_constant (_t). Inline manually is_gimple_sizepos.
9272 * gimplify.h (is_gimple_sizepos): Remove.
9273
9274 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9275
9276 PR tree-optimization/83857
9277 * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
9278 vectorizable_live_operation for pure SLP statements.
9279 (vectorizable_live_operation): Handle PHIs.
9280
9281 2018-01-16 Richard Biener <rguenther@suse.de>
9282
9283 PR tree-optimization/83867
9284 * tree-vect-stmts.c (vect_transform_stmt): Precompute
9285 nested_in_vect_loop_p since the scalar stmt may get invalidated.
9286
9287 2018-01-16 Jakub Jelinek <jakub@redhat.com>
9288
9289 PR c/83844
9290 * stor-layout.c (handle_warn_if_not_align): Use byte_position and
9291 multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
9292 If off is not INTEGER_CST, issue a may not be aligned warning
9293 rather than isn't aligned. Use isn%'t rather than isn't.
9294 * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
9295 into MULT_EXPR.
9296 <case MULT_EXPR>: Improve the case when bottom and one of the
9297 MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
9298 operand, in that case check if the other operand is multiple of
9299 bottom divided by the INTEGER_CST operand.
9300
9301 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9302
9303 PR target/83858
9304 * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
9305 * config/pa/pa-protos.h (pa_function_arg_size): Declare.
9306 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
9307 pa_function_arg_size instead of FUNCTION_ARG_SIZE.
9308 * config/pa/pa.c (pa_function_arg_advance): Likewise.
9309 (pa_function_arg, pa_arg_partial_bytes): Likewise.
9310 (pa_function_arg_size): New function.
9311
9312 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9313
9314 * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
9315 in a separate statement.
9316
9317 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9318
9319 PR tree-optimization/83847
9320 * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
9321 group gathers and scatters.
9322
9323 2018-01-16 Jakub Jelinek <jakub@redhat.com>
9324
9325 PR rtl-optimization/86620
9326 * params.def (max-sched-ready-insns): Bump minimum value to 1.
9327
9328 PR rtl-optimization/83213
9329 * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
9330 to last if both are JUMP_INSNs.
9331
9332 PR tree-optimization/83843
9333 * gimple-ssa-store-merging.c
9334 (imm_store_chain_info::output_merged_store): Handle bit_not_p on
9335 store_immediate_info for bswap/nop orig_stores.
9336
9337 2018-01-15 Andrew Waterman <andrew@sifive.com>
9338
9339 * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
9340 !TARGET_MUL.
9341 <UDIV>: Increase cost if !TARGET_DIV.
9342
9343 2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
9344
9345 * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
9346 (define_attr "cr_logical_3op"): New.
9347 (cceq_ior_compare): Adjust.
9348 (cceq_ior_compare_complement): Adjust.
9349 (*cceq_rev_compare): Adjust.
9350 * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
9351 (is_cracked_insn): Adjust.
9352 (insn_must_be_first_in_group): Adjust.
9353 * config/rs6000/40x.md: Adjust.
9354 * config/rs6000/440.md: Adjust.
9355 * config/rs6000/476.md: Adjust.
9356 * config/rs6000/601.md: Adjust.
9357 * config/rs6000/603.md: Adjust.
9358 * config/rs6000/6xx.md: Adjust.
9359 * config/rs6000/7450.md: Adjust.
9360 * config/rs6000/7xx.md: Adjust.
9361 * config/rs6000/8540.md: Adjust.
9362 * config/rs6000/cell.md: Adjust.
9363 * config/rs6000/e300c2c3.md: Adjust.
9364 * config/rs6000/e500mc.md: Adjust.
9365 * config/rs6000/e500mc64.md: Adjust.
9366 * config/rs6000/e5500.md: Adjust.
9367 * config/rs6000/e6500.md: Adjust.
9368 * config/rs6000/mpc.md: Adjust.
9369 * config/rs6000/power4.md: Adjust.
9370 * config/rs6000/power5.md: Adjust.
9371 * config/rs6000/power6.md: Adjust.
9372 * config/rs6000/power7.md: Adjust.
9373 * config/rs6000/power8.md: Adjust.
9374 * config/rs6000/power9.md: Adjust.
9375 * config/rs6000/rs64.md: Adjust.
9376 * config/rs6000/titan.md: Adjust.
9377
9378 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9379
9380 * config/i386/predicates.md (indirect_branch_operand): Rewrite
9381 ix86_indirect_branch_register logic.
9382
9383 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9384
9385 * config/i386/constraints.md (Bs): Update
9386 ix86_indirect_branch_register check. Don't check
9387 ix86_indirect_branch_register with GOT_memory_operand.
9388 (Bw): Likewise.
9389 * config/i386/predicates.md (GOT_memory_operand): Don't check
9390 ix86_indirect_branch_register here.
9391 (GOT32_symbol_operand): Likewise.
9392
9393 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9394
9395 * config/i386/predicates.md (constant_call_address_operand):
9396 Rewrite ix86_indirect_branch_register logic.
9397 (sibcall_insn_operand): Likewise.
9398
9399 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9400
9401 * config/i386/constraints.md (Bs): Replace
9402 ix86_indirect_branch_thunk_register with
9403 ix86_indirect_branch_register.
9404 (Bw): Likewise.
9405 * config/i386/i386.md (indirect_jump): Likewise.
9406 (tablejump): Likewise.
9407 (*sibcall_memory): Likewise.
9408 (*sibcall_value_memory): Likewise.
9409 Peepholes of indirect call and jump via memory: Likewise.
9410 * config/i386/i386.opt: Likewise.
9411 * config/i386/predicates.md (indirect_branch_operand): Likewise.
9412 (GOT_memory_operand): Likewise.
9413 (call_insn_operand): Likewise.
9414 (sibcall_insn_operand): Likewise.
9415 (GOT32_symbol_operand): Likewise.
9416
9417 2018-01-15 Jakub Jelinek <jakub@redhat.com>
9418
9419 PR middle-end/83837
9420 * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
9421 type rather than type addr's type points to.
9422 (expand_omp_atomic_mutex): Likewise.
9423 (expand_omp_atomic): Likewise.
9424
9425 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9426
9427 PR target/83839
9428 * config/i386/i386.c (output_indirect_thunk_function): Use
9429 ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
9430 for __x86_return_thunk.
9431
9432 2018-01-15 Richard Biener <rguenther@suse.de>
9433
9434 PR middle-end/83850
9435 * expmed.c (extract_bit_field_1): Fix typo.
9436
9437 2018-01-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9438
9439 PR target/83687
9440 * config/arm/iterators.md (VF): New mode iterator.
9441 * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
9442 Remove integer-related logic from pattern.
9443 (neon_vabd<mode>_3): Likewise.
9444
9445 2018-01-15 Jakub Jelinek <jakub@redhat.com>
9446
9447 PR middle-end/82694
9448 * common.opt (fstrict-overflow): No longer an alias.
9449 (fwrapv-pointer): New option.
9450 * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
9451 also for pointer types based on flag_wrapv_pointer.
9452 * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
9453 opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
9454 opts->x_flag_wrapv got set.
9455 * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
9456 changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
9457 POINTER_TYPE_OVERFLOW_UNDEFINED.
9458 * match.pd: Likewise in address comparison pattern.
9459 * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
9460
9461 2018-01-15 Richard Biener <rguenther@suse.de>
9462
9463 PR lto/83804
9464 * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
9465 from TYPE_FIELDS. Free TYPE_BINFO if not used by devirtualization.
9466 Reset type names to their identifier if their TYPE_DECL doesn't
9467 have linkage (and thus is used for ODR and devirt).
9468 (save_debug_info_for_decl): Remove.
9469 (save_debug_info_for_type): Likewise.
9470 (add_tree_to_fld_list): Adjust.
9471 * tree-pretty-print.c (dump_generic_node): Make dumping of
9472 type names more robust.
9473
9474 2018-01-15 Richard Biener <rguenther@suse.de>
9475
9476 * BASE-VER: Bump to 8.0.1.
9477
9478 2018-01-14 Martin Sebor <msebor@redhat.com>
9479
9480 PR other/83508
9481 * builtins.c (check_access): Avoid warning when the no-warning bit
9482 is set.
9483
9484 2018-01-14 Cory Fields <cory-nospam-@coryfields.com>
9485
9486 * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
9487 * ira-color (allocno_hard_regs_compare): Likewise.
9488
9489 2018-01-14 Nathan Rossi <nathan@nathanrossi.com>
9490
9491 PR target/83013
9492 * config/microblaze/microblaze.c (microblaze_asm_output_ident):
9493 Use .pushsection/.popsection.
9494
9495 2018-01-14 Martin Sebor <msebor@redhat.com>
9496
9497 PR c++/81327
9498 * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
9499
9500 2018-01-14 Jakub Jelinek <jakub@redhat.com>
9501
9502 * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
9503 entry from extra_headers.
9504 (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
9505 extra_headers, make the list bitwise identical to the i?86-*-* one.
9506
9507 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9508
9509 * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
9510 -mcmodel=large with -mindirect-branch=thunk,
9511 -mindirect-branch=thunk-extern, -mfunction-return=thunk and
9512 -mfunction-return=thunk-extern.
9513 * doc/invoke.texi: Document -mcmodel=large is incompatible with
9514 -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
9515 -mfunction-return=thunk and -mfunction-return=thunk-extern.
9516
9517 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9518
9519 * config/i386/i386.c (print_reg): Print the name of the full
9520 integer register without '%'.
9521 (ix86_print_operand): Handle 'V'.
9522 * doc/extend.texi: Document 'V' modifier.
9523
9524 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9525
9526 * config/i386/constraints.md (Bs): Disallow memory operand for
9527 -mindirect-branch-register.
9528 (Bw): Likewise.
9529 * config/i386/predicates.md (indirect_branch_operand): Likewise.
9530 (GOT_memory_operand): Likewise.
9531 (call_insn_operand): Likewise.
9532 (sibcall_insn_operand): Likewise.
9533 (GOT32_symbol_operand): Likewise.
9534 * config/i386/i386.md (indirect_jump): Call convert_memory_address
9535 for -mindirect-branch-register.
9536 (tablejump): Likewise.
9537 (*sibcall_memory): Likewise.
9538 (*sibcall_value_memory): Likewise.
9539 Disallow peepholes of indirect call and jump via memory for
9540 -mindirect-branch-register.
9541 (*call_pop): Replace m with Bw.
9542 (*call_value_pop): Likewise.
9543 (*sibcall_pop_memory): Replace m with Bs.
9544 * config/i386/i386.opt (mindirect-branch-register): New option.
9545 * doc/invoke.texi: Document -mindirect-branch-register option.
9546
9547 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9548
9549 * config/i386/i386-protos.h (ix86_output_function_return): New.
9550 * config/i386/i386.c (ix86_set_indirect_branch_type): Also
9551 set function_return_type.
9552 (indirect_thunk_name): Add ret_p to indicate thunk for function
9553 return.
9554 (output_indirect_thunk_function): Pass false to
9555 indirect_thunk_name.
9556 (ix86_output_indirect_branch_via_reg): Likewise.
9557 (ix86_output_indirect_branch_via_push): Likewise.
9558 (output_indirect_thunk_function): Create alias for function
9559 return thunk if regno < 0.
9560 (ix86_output_function_return): New function.
9561 (ix86_handle_fndecl_attribute): Handle function_return.
9562 (ix86_attribute_table): Add function_return.
9563 * config/i386/i386.h (machine_function): Add
9564 function_return_type.
9565 * config/i386/i386.md (simple_return_internal): Use
9566 ix86_output_function_return.
9567 (simple_return_internal_long): Likewise.
9568 * config/i386/i386.opt (mfunction-return=): New option.
9569 (indirect_branch): Mention -mfunction-return=.
9570 * doc/extend.texi: Document function_return function attribute.
9571 * doc/invoke.texi: Document -mfunction-return= option.
9572
9573 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9574
9575 * config/i386/i386-opts.h (indirect_branch): New.
9576 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
9577 * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
9578 with local indirect jump when converting indirect call and jump.
9579 (ix86_set_indirect_branch_type): New.
9580 (ix86_set_current_function): Call ix86_set_indirect_branch_type.
9581 (indirectlabelno): New.
9582 (indirect_thunk_needed): Likewise.
9583 (indirect_thunk_bnd_needed): Likewise.
9584 (indirect_thunks_used): Likewise.
9585 (indirect_thunks_bnd_used): Likewise.
9586 (INDIRECT_LABEL): Likewise.
9587 (indirect_thunk_name): Likewise.
9588 (output_indirect_thunk): Likewise.
9589 (output_indirect_thunk_function): Likewise.
9590 (ix86_output_indirect_branch_via_reg): Likewise.
9591 (ix86_output_indirect_branch_via_push): Likewise.
9592 (ix86_output_indirect_branch): Likewise.
9593 (ix86_output_indirect_jmp): Likewise.
9594 (ix86_code_end): Call output_indirect_thunk_function if needed.
9595 (ix86_output_call_insn): Call ix86_output_indirect_branch if
9596 needed.
9597 (ix86_handle_fndecl_attribute): Handle indirect_branch.
9598 (ix86_attribute_table): Add indirect_branch.
9599 * config/i386/i386.h (machine_function): Add indirect_branch_type
9600 and has_local_indirect_jump.
9601 * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
9602 to true.
9603 (tablejump): Likewise.
9604 (*indirect_jump): Use ix86_output_indirect_jmp.
9605 (*tablejump_1): Likewise.
9606 (simple_return_indirect_internal): Likewise.
9607 * config/i386/i386.opt (mindirect-branch=): New option.
9608 (indirect_branch): New.
9609 (keep): Likewise.
9610 (thunk): Likewise.
9611 (thunk-inline): Likewise.
9612 (thunk-extern): Likewise.
9613 * doc/extend.texi: Document indirect_branch function attribute.
9614 * doc/invoke.texi: Document -mindirect-branch= option.
9615
9616 2018-01-14 Jan Hubicka <hubicka@ucw.cz>
9617
9618 PR ipa/83051
9619 * ipa-inline.c (edge_badness): Tolerate roundoff errors.
9620
9621 2018-01-14 Richard Sandiford <richard.sandiford@linaro.org>
9622
9623 * ipa-inline.c (want_inline_small_function_p): Return false if
9624 inlining has already failed with CIF_FINAL_ERROR.
9625 (update_caller_keys): Call want_inline_small_function_p before
9626 can_inline_edge_p.
9627 (update_callee_keys): Likewise.
9628
9629 2018-01-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
9630
9631 * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
9632 New function.
9633 (rs6000_quadword_masked_address_p): Likewise.
9634 (quad_aligned_load_p): Likewise.
9635 (quad_aligned_store_p): Likewise.
9636 (const_load_sequence_p): Add comment to describe the outer-most loop.
9637 (mimic_memory_attributes_and_flags): New function.
9638 (rs6000_gen_stvx): Likewise.
9639 (replace_swapped_aligned_store): Likewise.
9640 (rs6000_gen_lvx): Likewise.
9641 (replace_swapped_aligned_load): Likewise.
9642 (replace_swapped_load_constant): Capitalize argument name in
9643 comment describing this function.
9644 (rs6000_analyze_swaps): Add a third pass to search for vector loads
9645 and stores that access quad-word aligned addresses and replace
9646 with stvx or lvx instructions when appropriate.
9647 * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
9648 New function prototype.
9649 (rs6000_quadword_masked_address_p): Likewise.
9650 (rs6000_gen_lvx): Likewise.
9651 (rs6000_gen_stvx): Likewise.
9652 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
9653 VSX_D (V2DF, V2DI), modify this split to select lvx instruction
9654 when memory address is aligned.
9655 (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
9656 this split to select lvx instruction when memory address is aligned.
9657 (*vsx_le_perm_load_v8hi): Modify this split to select lvx
9658 instruction when memory address is aligned.
9659 (*vsx_le_perm_load_v16qi): Likewise.
9660 (four unnamed splitters): Modify to select the stvx instruction
9661 when memory is aligned.
9662
9663 2018-01-13 Jan Hubicka <hubicka@ucw.cz>
9664
9665 * predict.c (determine_unlikely_bbs): Handle correctly BBs
9666 which appears in the queue multiple times.
9667
9668 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9669 Alan Hayward <alan.hayward@arm.com>
9670 David Sherwood <david.sherwood@arm.com>
9671
9672 * tree-vectorizer.h (vec_lower_bound): New structure.
9673 (_loop_vec_info): Add check_nonzero and lower_bounds.
9674 (LOOP_VINFO_CHECK_NONZERO): New macro.
9675 (LOOP_VINFO_LOWER_BOUNDS): Likewise.
9676 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
9677 * tree-data-ref.h (dr_with_seg_len): Add access_size and align
9678 fields. Make seg_len the distance travelled, not including the
9679 access size.
9680 (dr_direction_indicator): Declare.
9681 (dr_zero_step_indicator): Likewise.
9682 (dr_known_forward_stride_p): Likewise.
9683 * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
9684 tree-ssanames.h.
9685 (runtime_alias_check_p): Allow runtime alias checks with
9686 variable strides.
9687 (operator ==): Compare access_size and align.
9688 (prune_runtime_alias_test_list): Rework for new distinction between
9689 the access_size and seg_len.
9690 (create_intersect_range_checks_index): Likewise. Cope with polynomial
9691 segment lengths.
9692 (get_segment_min_max): New function.
9693 (create_intersect_range_checks): Use it.
9694 (dr_step_indicator): New function.
9695 (dr_direction_indicator): Likewise.
9696 (dr_zero_step_indicator): Likewise.
9697 (dr_known_forward_stride_p): Likewise.
9698 * tree-loop-distribution.c (data_ref_segment_size): Return
9699 DR_STEP * (niters - 1).
9700 (compute_alias_check_pairs): Update call to the dr_with_seg_len
9701 constructor.
9702 * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
9703 (vect_preserves_scalar_order_p): New function, split out from...
9704 (vect_analyze_data_ref_dependence): ...here. Check for zero steps.
9705 (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
9706 (vect_vfa_access_size): New function.
9707 (vect_vfa_align): Likewise.
9708 (vect_compile_time_alias): Take access_size_a and access_b arguments.
9709 (dump_lower_bound): New function.
9710 (vect_check_lower_bound): Likewise.
9711 (vect_small_gap_p): Likewise.
9712 (vectorizable_with_step_bound_p): Likewise.
9713 (vect_prune_runtime_alias_test_list): Ignore cross-iteration
9714 depencies if the vectorization factor is 1. Convert the checks
9715 for nonzero steps into checks on the bounds of DR_STEP. Try using
9716 a bunds check for variable steps if the minimum required step is
9717 relatively small. Update calls to the dr_with_seg_len
9718 constructor and to vect_compile_time_alias.
9719 * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
9720 function.
9721 (vect_loop_versioning): Call it.
9722 * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
9723 when retrying.
9724 (vect_estimate_min_profitable_iters): Account for any bounds checks.
9725
9726 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9727 Alan Hayward <alan.hayward@arm.com>
9728 David Sherwood <david.sherwood@arm.com>
9729
9730 * doc/sourcebuild.texi (vect_scatter_store): Document.
9731 * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
9732 optabs.
9733 * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
9734 Document.
9735 * genopinit.c (main): Add supports_vec_scatter_store and
9736 supports_vec_scatter_store_cached to target_optabs.
9737 * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
9738 IFN_MASK_SCATTER_STORE.
9739 * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
9740 functions.
9741 * internal-fn.h (internal_store_fn_p): Declare.
9742 (internal_fn_stored_value_index): Likewise.
9743 * internal-fn.c (scatter_store_direct): New macro.
9744 (expand_scatter_store_optab_fn): New function.
9745 (direct_scatter_store_optab_supported_p): New macro.
9746 (internal_store_fn_p): New function.
9747 (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
9748 IFN_MASK_SCATTER_STORE.
9749 (internal_fn_mask_index): Likewise.
9750 (internal_fn_stored_value_index): New function.
9751 (internal_gather_scatter_fn_supported_p): Adjust operand numbers
9752 for scatter stores.
9753 * optabs-query.h (supports_vec_scatter_store_p): Declare.
9754 * optabs-query.c (supports_vec_scatter_store_p): New function.
9755 * tree-vectorizer.h (vect_get_store_rhs): Declare.
9756 * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
9757 true for scatter stores.
9758 (vect_gather_scatter_fn_p): Handle scatter stores too.
9759 (vect_check_gather_scatter): Consider using scatter stores if
9760 supports_vec_scatter_store_p.
9761 * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
9762 scatter stores too.
9763 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9764 internal_fn_stored_value_index.
9765 (check_load_store_masking): Handle scatter stores too.
9766 (vect_get_store_rhs): Make public.
9767 (vectorizable_call): Use internal_store_fn_p.
9768 (vectorizable_store): Handle scatter store internal functions.
9769 (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
9770 when deciding whether the end of the group has been reached.
9771 * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
9772 * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
9773 (mask_scatter_store<mode>): New insns.
9774
9775 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9776 Alan Hayward <alan.hayward@arm.com>
9777 David Sherwood <david.sherwood@arm.com>
9778
9779 * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
9780 * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
9781 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
9782 function.
9783 (vect_use_strided_gather_scatters_p): Take a masked_p argument.
9784 Use vect_truncate_gather_scatter_offset if we can't treat the
9785 operation as a normal gather load or scatter store.
9786 (get_group_load_store_type): Take the gather_scatter_info
9787 as argument. Try using a gather load or scatter store for
9788 single-element groups.
9789 (get_load_store_type): Update calls to get_group_load_store_type
9790 and vect_use_strided_gather_scatters_p.
9791
9792 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9793 Alan Hayward <alan.hayward@arm.com>
9794 David Sherwood <david.sherwood@arm.com>
9795
9796 * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
9797 optional tree argument.
9798 * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
9799 null target hooks.
9800 (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
9801 but continue to use the current value as a fallback.
9802 (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
9803 to compare the updates.
9804 * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
9805 (get_load_store_type): Use it when handling a strided access.
9806 (vect_get_strided_load_store_ops): New function.
9807 (vect_get_data_ptr_increment): Likewise.
9808 (vectorizable_load): Handle strided gather loads. Always pass
9809 a step to vect_create_data_ref_ptr and bump_vector_ptr.
9810
9811 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9812 Alan Hayward <alan.hayward@arm.com>
9813 David Sherwood <david.sherwood@arm.com>
9814
9815 * doc/md.texi (gather_load@var{m}): Document.
9816 (mask_gather_load@var{m}): Likewise.
9817 * genopinit.c (main): Add supports_vec_gather_load and
9818 supports_vec_gather_load_cached to target_optabs.
9819 * optabs-tree.c (init_tree_optimization_optabs): Use
9820 ggc_cleared_alloc to allocate target_optabs.
9821 * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
9822 * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
9823 functions.
9824 * internal-fn.h (internal_load_fn_p): Declare.
9825 (internal_gather_scatter_fn_p): Likewise.
9826 (internal_fn_mask_index): Likewise.
9827 (internal_gather_scatter_fn_supported_p): Likewise.
9828 * internal-fn.c (gather_load_direct): New macro.
9829 (expand_gather_load_optab_fn): New function.
9830 (direct_gather_load_optab_supported_p): New macro.
9831 (direct_internal_fn_optab): New function.
9832 (internal_load_fn_p): Likewise.
9833 (internal_gather_scatter_fn_p): Likewise.
9834 (internal_fn_mask_index): Likewise.
9835 (internal_gather_scatter_fn_supported_p): Likewise.
9836 * optabs-query.c (supports_at_least_one_mode_p): New function.
9837 (supports_vec_gather_load_p): Likewise.
9838 * optabs-query.h (supports_vec_gather_load_p): Declare.
9839 * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
9840 and memory_type field.
9841 (NUM_PATTERNS): Bump to 15.
9842 * tree-vect-data-refs.c: Include internal-fn.h.
9843 (vect_gather_scatter_fn_p): New function.
9844 (vect_describe_gather_scatter_call): Likewise.
9845 (vect_check_gather_scatter): Try using internal functions for
9846 gather loads. Recognize existing calls to a gather load function.
9847 (vect_analyze_data_refs): Consider using gather loads if
9848 supports_vec_gather_load_p.
9849 * tree-vect-patterns.c (vect_get_load_store_mask): New function.
9850 (vect_get_gather_scatter_offset_type): Likewise.
9851 (vect_convert_mask_for_vectype): Likewise.
9852 (vect_add_conversion_to_patterm): Likewise.
9853 (vect_try_gather_scatter_pattern): Likewise.
9854 (vect_recog_gather_scatter_pattern): New pattern recognizer.
9855 (vect_vect_recog_func_ptrs): Add it.
9856 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9857 internal_fn_mask_index and internal_gather_scatter_fn_p.
9858 (check_load_store_masking): Take the gather_scatter_info as an
9859 argument and handle gather loads.
9860 (vect_get_gather_scatter_ops): New function.
9861 (vectorizable_call): Check internal_load_fn_p.
9862 (vectorizable_load): Likewise. Handle gather load internal
9863 functions.
9864 (vectorizable_store): Update call to check_load_store_masking.
9865 * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
9866 * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
9867 * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
9868 (aarch64_gather_scale_operand_d): New predicates.
9869 * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
9870 (mask_gather_load<mode>): New insns.
9871
9872 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9873 Alan Hayward <alan.hayward@arm.com>
9874 David Sherwood <david.sherwood@arm.com>
9875
9876 * optabs.def (fold_left_plus_optab): New optab.
9877 * doc/md.texi (fold_left_plus_@var{m}): Document.
9878 * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
9879 * internal-fn.c (fold_left_direct): Define.
9880 (expand_fold_left_optab_fn): Likewise.
9881 (direct_fold_left_optab_supported_p): Likewise.
9882 * fold-const-call.c (fold_const_fold_left): New function.
9883 (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
9884 * tree-parloops.c (valid_reduction_p): New function.
9885 (gather_scalar_reductions): Use it.
9886 * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
9887 (vect_finish_replace_stmt): Declare.
9888 * tree-vect-loop.c (fold_left_reduction_fn): New function.
9889 (needs_fold_left_reduction_p): New function, split out from...
9890 (vect_is_simple_reduction): ...here. Accept reductions that
9891 forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
9892 (vect_force_simple_reduction): Also store the reduction type in
9893 the assignment's STMT_VINFO_REDUC_TYPE.
9894 (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
9895 (merge_with_identity): New function.
9896 (vect_expand_fold_left): Likewise.
9897 (vectorize_fold_left_reduction): Likewise.
9898 (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION. Leave the
9899 scalar phi in place for it. Check for target support and reject
9900 cases that would reassociate the operation. Defer the transform
9901 phase to vectorize_fold_left_reduction.
9902 * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
9903 * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
9904 (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
9905
9906 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9907
9908 * tree-if-conv.c (predicate_mem_writes): Remove redundant
9909 call to ifc_temp_var.
9910
9911 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9912 Alan Hayward <alan.hayward@arm.com>
9913 David Sherwood <david.sherwood@arm.com>
9914
9915 * target.def (legitimize_address_displacement): Take the original
9916 offset as a poly_int.
9917 * targhooks.h (default_legitimize_address_displacement): Update
9918 accordingly.
9919 * targhooks.c (default_legitimize_address_displacement): Likewise.
9920 * doc/tm.texi: Regenerate.
9921 * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
9922 as an argument, moving assert of ad->disp == ad->disp_term to...
9923 (process_address_1): ...here. Update calls to base_plus_disp_to_reg.
9924 Try calling targetm.legitimize_address_displacement before expanding
9925 the address rather than afterwards, and adjust for the new interface.
9926 * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
9927 Match the new hook interface. Handle SVE addresses.
9928 * config/sh/sh.c (sh_legitimize_address_displacement): Make the
9929 new hook interface.
9930
9931 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9932
9933 * Makefile.in (OBJS): Add early-remat.o.
9934 * target.def (select_early_remat_modes): New hook.
9935 * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
9936 * doc/tm.texi: Regenerate.
9937 * targhooks.h (default_select_early_remat_modes): Declare.
9938 * targhooks.c (default_select_early_remat_modes): New function.
9939 * timevar.def (TV_EARLY_REMAT): New timevar.
9940 * passes.def (pass_early_remat): New pass.
9941 * tree-pass.h (make_pass_early_remat): Declare.
9942 * early-remat.c: New file.
9943 * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
9944 function.
9945 (TARGET_SELECT_EARLY_REMAT_MODES): Define.
9946
9947 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9948 Alan Hayward <alan.hayward@arm.com>
9949 David Sherwood <david.sherwood@arm.com>
9950
9951 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
9952 vfm1 with a bound_epilog parameter.
9953 (vect_do_peeling): Update calls accordingly, and move the prologue
9954 call earlier in the function. Treat the base bound_epilog as 0 for
9955 fully-masked loops and retain vf - 1 for other loops. Add 1 to
9956 this base when peeling for gaps.
9957 * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
9958 with fully-masked loops.
9959 (vect_estimate_min_profitable_iters): Handle the single peeled
9960 iteration in that case.
9961
9962 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9963 Alan Hayward <alan.hayward@arm.com>
9964 David Sherwood <david.sherwood@arm.com>
9965
9966 * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
9967 single-element interleaving even if the size is not a power of 2.
9968 * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
9969 accesses for single-element interleaving if the group size is
9970 not a power of 2.
9971
9972 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9973 Alan Hayward <alan.hayward@arm.com>
9974 David Sherwood <david.sherwood@arm.com>
9975
9976 * doc/md.texi (fold_extract_last_@var{m}): Document.
9977 * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
9978 * optabs.def (fold_extract_last_optab): New optab.
9979 * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
9980 * internal-fn.c (fold_extract_direct): New macro.
9981 (expand_fold_extract_optab_fn): Likewise.
9982 (direct_fold_extract_optab_supported_p): Likewise.
9983 * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
9984 * tree-vect-loop.c (vect_model_reduction_cost): Handle
9985 EXTRACT_LAST_REDUCTION.
9986 (get_initial_def_for_reduction): Do not create an initial vector
9987 for EXTRACT_LAST_REDUCTION reductions.
9988 (vectorizable_reduction): Leave the scalar phi in place for
9989 EXTRACT_LAST_REDUCTIONs. Try using EXTRACT_LAST_REDUCTION
9990 ahead of INTEGER_INDUC_COND_REDUCTION. Do not check for an
9991 epilogue code for EXTRACT_LAST_REDUCTION and defer the
9992 transform phase to vectorizable_condition.
9993 * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
9994 split out from...
9995 (vect_finish_stmt_generation): ...here.
9996 (vect_finish_replace_stmt): New function.
9997 (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
9998 * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
9999 pattern.
10000 * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
10001
10002 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10003 Alan Hayward <alan.hayward@arm.com>
10004 David Sherwood <david.sherwood@arm.com>
10005
10006 * doc/md.texi (extract_last_@var{m}): Document.
10007 * optabs.def (extract_last_optab): New optab.
10008 * internal-fn.def (EXTRACT_LAST): New internal function.
10009 * internal-fn.c (cond_unary_direct): New macro.
10010 (expand_cond_unary_optab_fn): Likewise.
10011 (direct_cond_unary_optab_supported_p): Likewise.
10012 * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
10013 loops using EXTRACT_LAST.
10014 * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
10015 (extract_last_<mode>): ...this optab.
10016 (vec_extract<mode><Vel>): Update accordingly.
10017
10018 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10019 Alan Hayward <alan.hayward@arm.com>
10020 David Sherwood <david.sherwood@arm.com>
10021
10022 * target.def (empty_mask_is_expensive): New hook.
10023 * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
10024 * doc/tm.texi: Regenerate.
10025 * targhooks.h (default_empty_mask_is_expensive): Declare.
10026 * targhooks.c (default_empty_mask_is_expensive): New function.
10027 * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
10028 if the target says that empty masks are expensive.
10029 * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
10030 New function.
10031 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
10032
10033 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10034 Alan Hayward <alan.hayward@arm.com>
10035 David Sherwood <david.sherwood@arm.com>
10036
10037 * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
10038 (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
10039 (vect_use_loop_mask_for_alignment_p): New function.
10040 (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
10041 * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
10042 niters_skip argument. Make sure that the first niters_skip elements
10043 of the first iteration are inactive.
10044 (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
10045 Update call to vect_set_loop_masks_directly.
10046 (get_misalign_in_elems): New function, split out from...
10047 (vect_gen_prolog_loop_niters): ...here.
10048 (vect_update_init_of_dr): Take a code argument that specifies whether
10049 the adjustment should be added or subtracted.
10050 (vect_update_init_of_drs): Likewise.
10051 (vect_prepare_for_masked_peels): New function.
10052 (vect_do_peeling): Skip prologue peeling if we're using a mask
10053 instead. Update call to vect_update_inits_of_drs.
10054 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10055 mask_skip_niters.
10056 (vect_analyze_loop_2): Allow fully-masked loops with peeling for
10057 alignment. Do not include the number of peeled iterations in
10058 the minimum threshold in that case.
10059 (vectorizable_induction): Adjust the start value down by
10060 LOOP_VINFO_MASK_SKIP_NITERS iterations.
10061 (vect_transform_loop): Call vect_prepare_for_masked_peels.
10062 Take the number of skipped iterations into account when calculating
10063 the loop bounds.
10064 * tree-vect-stmts.c (vect_gen_while_not): New function.
10065
10066 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10067 Alan Hayward <alan.hayward@arm.com>
10068 David Sherwood <david.sherwood@arm.com>
10069
10070 * doc/sourcebuild.texi (vect_fully_masked): Document.
10071 * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
10072 default value to 0.
10073 * tree-vect-loop.c (vect_analyze_loop_costing): New function,
10074 split out from...
10075 (vect_analyze_loop_2): ...here. Don't check the vectorization
10076 factor against the number of loop iterations if the loop is
10077 fully-masked.
10078
10079 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10080 Alan Hayward <alan.hayward@arm.com>
10081 David Sherwood <david.sherwood@arm.com>
10082
10083 * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
10084 (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
10085 (dump_groups): Update accordingly.
10086 (iv_use::mem_type): New member variable.
10087 (address_p): New function.
10088 (record_use): Add a mem_type argument and initialize the new
10089 mem_type field.
10090 (record_group_use): Add a mem_type argument. Use address_p.
10091 Remove obsolete null checks of base_object. Update call to record_use.
10092 (find_interesting_uses_op): Update call to record_group_use.
10093 (find_interesting_uses_cond): Likewise.
10094 (find_interesting_uses_address): Likewise.
10095 (get_mem_type_for_internal_fn): New function.
10096 (find_address_like_use): Likewise.
10097 (find_interesting_uses_stmt): Try find_address_like_use before
10098 calling find_interesting_uses_op.
10099 (addr_offset_valid_p): Use the iv mem_type field as the type
10100 of the addressed memory.
10101 (add_autoinc_candidates): Likewise.
10102 (get_address_cost): Likewise.
10103 (split_small_address_groups_p): Use address_p.
10104 (split_address_groups): Likewise.
10105 (add_iv_candidate_for_use): Likewise.
10106 (autoinc_possible_for_pair): Likewise.
10107 (rewrite_groups): Likewise.
10108 (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
10109 (determine_group_iv_cost): Update after split of USE_ADDRESS.
10110 (get_alias_ptr_type_for_ptr_address): New function.
10111 (rewrite_use_address): Rewrite address uses in calls that were
10112 identified by find_address_like_use.
10113
10114 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10115 Alan Hayward <alan.hayward@arm.com>
10116 David Sherwood <david.sherwood@arm.com>
10117
10118 * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
10119 TARGET_MEM_REFs.
10120 * gimple-expr.h (is_gimple_addressable: Likewise.
10121 * gimple-expr.c (is_gimple_address): Likewise.
10122 * internal-fn.c (expand_call_mem_ref): New function.
10123 (expand_mask_load_optab_fn): Use it.
10124 (expand_mask_store_optab_fn): Likewise.
10125
10126 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10127 Alan Hayward <alan.hayward@arm.com>
10128 David Sherwood <david.sherwood@arm.com>
10129
10130 * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
10131 (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
10132 (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
10133 (cond_umax@var{mode}): Document.
10134 * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
10135 (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
10136 (cond_umin_optab, cond_umax_optab): New optabs.
10137 * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
10138 (COND_IOR, COND_XOR): New internal functions.
10139 * internal-fn.h (get_conditional_internal_fn): Declare.
10140 * internal-fn.c (cond_binary_direct): New macro.
10141 (expand_cond_binary_optab_fn): Likewise.
10142 (direct_cond_binary_optab_supported_p): Likewise.
10143 (get_conditional_internal_fn): New function.
10144 * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
10145 Cope with reduction statements that are vectorized as calls rather
10146 than assignments.
10147 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
10148 * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
10149 (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
10150 (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
10151 (UNSPEC_COND_EOR): New unspecs.
10152 (optab): Add mappings for them.
10153 (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
10154 (sve_int_op, sve_fp_op): New int attributes.
10155
10156 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10157 Alan Hayward <alan.hayward@arm.com>
10158 David Sherwood <david.sherwood@arm.com>
10159
10160 * optabs.def (while_ult_optab): New optab.
10161 * doc/md.texi (while_ult@var{m}@var{n}): Document.
10162 * internal-fn.def (WHILE_ULT): New internal function.
10163 * internal-fn.h (direct_internal_fn_supported_p): New override
10164 that takes two types as argument.
10165 * internal-fn.c (while_direct): New macro.
10166 (expand_while_optab_fn): New function.
10167 (convert_optab_supported_p): Likewise.
10168 (direct_while_optab_supported_p): New macro.
10169 * wide-int.h (wi::udiv_ceil): New function.
10170 * tree-vectorizer.h (rgroup_masks): New structure.
10171 (vec_loop_masks): New typedef.
10172 (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
10173 and fully_masked_p.
10174 (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
10175 (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
10176 (vect_max_vf): New function.
10177 (slpeel_make_loop_iterate_ntimes): Delete.
10178 (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
10179 (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
10180 (vect_record_loop_mask, vect_get_loop_mask): Likewise.
10181 * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
10182 internal-fn.h, stor-layout.h and optabs-query.h.
10183 (vect_set_loop_mask): New function.
10184 (add_preheader_seq): Likewise.
10185 (add_header_seq): Likewise.
10186 (interleave_supported_p): Likewise.
10187 (vect_maybe_permute_loop_masks): Likewise.
10188 (vect_set_loop_masks_directly): Likewise.
10189 (vect_set_loop_condition_masked): Likewise.
10190 (vect_set_loop_condition_unmasked): New function, split out from
10191 slpeel_make_loop_iterate_ntimes.
10192 (slpeel_make_loop_iterate_ntimes): Rename to..
10193 (vect_set_loop_condition): ...this. Use vect_set_loop_condition_masked
10194 for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
10195 (vect_do_peeling): Update call accordingly.
10196 (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
10197 loops.
10198 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10199 mask_compare_type, can_fully_mask_p and fully_masked_p.
10200 (release_vec_loop_masks): New function.
10201 (_loop_vec_info): Use it to free the loop masks.
10202 (can_produce_all_loop_masks_p): New function.
10203 (vect_get_max_nscalars_per_iter): Likewise.
10204 (vect_verify_full_masking): Likewise.
10205 (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
10206 retries, and free the mask rgroups before retrying. Check loop-wide
10207 reasons for disallowing fully-masked loops. Make the final decision
10208 about whether use a fully-masked loop or not.
10209 (vect_estimate_min_profitable_iters): Do not assume that peeling
10210 for the number of iterations will be needed for fully-masked loops.
10211 (vectorizable_reduction): Disable fully-masked loops.
10212 (vectorizable_live_operation): Likewise.
10213 (vect_halve_mask_nunits): New function.
10214 (vect_double_mask_nunits): Likewise.
10215 (vect_record_loop_mask): Likewise.
10216 (vect_get_loop_mask): Likewise.
10217 (vect_transform_loop): Handle the case in which the final loop
10218 iteration might handle a partial vector. Call vect_set_loop_condition
10219 instead of slpeel_make_loop_iterate_ntimes.
10220 * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
10221 (check_load_store_masking): New function.
10222 (prepare_load_store_mask): Likewise.
10223 (vectorizable_store): Handle fully-masked loops.
10224 (vectorizable_load): Likewise.
10225 (supportable_widening_operation): Use vect_halve_mask_nunits for
10226 booleans.
10227 (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
10228 (vect_gen_while): New function.
10229 * config/aarch64/aarch64.md (umax<mode>3): New expander.
10230 (aarch64_uqdec<mode>): New insn.
10231
10232 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10233 Alan Hayward <alan.hayward@arm.com>
10234 David Sherwood <david.sherwood@arm.com>
10235
10236 * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
10237 (reduc_xor_scal_optab): New optabs.
10238 * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
10239 (reduc_xor_scal_@var{m}): Document.
10240 * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
10241 * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
10242 internal functions.
10243 * fold-const-call.c (fold_const_call): Handle them.
10244 * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
10245 internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
10246 * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
10247 (*reduc_<bit_reduc>_scal_<mode>): New patterns.
10248 * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
10249 (UNSPEC_XORV): New unspecs.
10250 (optab): Add entries for them.
10251 (BITWISEV): New int iterator.
10252 (bit_reduc_op): New int attributes.
10253
10254 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10255 Alan Hayward <alan.hayward@arm.com>
10256 David Sherwood <david.sherwood@arm.com>
10257
10258 * doc/md.texi (vec_shl_insert_@var{m}): New optab.
10259 * internal-fn.def (VEC_SHL_INSERT): New internal function.
10260 * optabs.def (vec_shl_insert_optab): New optab.
10261 * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
10262 (duplicate_and_interleave): Likewise.
10263 * tree-vect-loop.c: Include internal-fn.h.
10264 (neutral_op_for_slp_reduction): New function, split out from
10265 get_initial_defs_for_reduction.
10266 (get_initial_def_for_reduction): Handle option 2 for variable-length
10267 vectors by loading the neutral value into a vector and then shifting
10268 the initial value into element 0.
10269 (get_initial_defs_for_reduction): Replace the code argument with
10270 the neutral value calculated by neutral_op_for_slp_reduction.
10271 Use gimple_build_vector for constant-length vectors.
10272 Use IFN_VEC_SHL_INSERT for variable-length vectors if all
10273 but the first group_size elements have a neutral value.
10274 Use duplicate_and_interleave otherwise.
10275 (vect_create_epilog_for_reduction): Take a neutral_op parameter.
10276 Update call to get_initial_defs_for_reduction. Handle SLP
10277 reductions for variable-length vectors by creating one vector
10278 result for each scalar result, with the elements associated
10279 with other scalar results stubbed out with the neutral value.
10280 (vectorizable_reduction): Call neutral_op_for_slp_reduction.
10281 Require IFN_VEC_SHL_INSERT for double reductions on
10282 variable-length vectors, or SLP reductions that have
10283 a neutral value. Require can_duplicate_and_interleave_p
10284 support for variable-length unchained SLP reductions if there
10285 is no neutral value, such as for MIN/MAX reductions. Also require
10286 the number of vector elements to be a multiple of the number of
10287 SLP statements when doing variable-length unchained SLP reductions.
10288 Update call to vect_create_epilog_for_reduction.
10289 * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
10290 and remove initial values.
10291 (duplicate_and_interleave): Make public.
10292 * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
10293 * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
10294
10295 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10296 Alan Hayward <alan.hayward@arm.com>
10297 David Sherwood <david.sherwood@arm.com>
10298
10299 * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
10300 (can_duplicate_and_interleave_p): New function.
10301 (vect_get_and_check_slp_defs): Take the vector of statements
10302 rather than just the current one. Remove excess parentheses.
10303 Restriction rejectinon of vect_constant_def and vect_external_def
10304 for variable-length vectors to boolean types, or types for which
10305 can_duplicate_and_interleave_p is false.
10306 (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
10307 (duplicate_and_interleave): New function.
10308 (vect_get_constant_vectors): Use gimple_build_vector for
10309 constant-length vectors and suitable variable-length constant
10310 vectors. Use duplicate_and_interleave for other variable-length
10311 vectors. Don't defer the update when inserting new statements.
10312
10313 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10314 Alan Hayward <alan.hayward@arm.com>
10315 David Sherwood <david.sherwood@arm.com>
10316
10317 * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
10318 min_profitable_iters doesn't go negative.
10319
10320 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10321 Alan Hayward <alan.hayward@arm.com>
10322 David Sherwood <david.sherwood@arm.com>
10323
10324 * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
10325 (vec_mask_store_lanes@var{m}@var{n}): Likewise.
10326 * optabs.def (vec_mask_load_lanes_optab): New optab.
10327 (vec_mask_store_lanes_optab): Likewise.
10328 * internal-fn.def (MASK_LOAD_LANES): New internal function.
10329 (MASK_STORE_LANES): Likewise.
10330 * internal-fn.c (mask_load_lanes_direct): New macro.
10331 (mask_store_lanes_direct): Likewise.
10332 (expand_mask_load_optab_fn): Handle masked operations.
10333 (expand_mask_load_lanes_optab_fn): New macro.
10334 (expand_mask_store_optab_fn): Handle masked operations.
10335 (expand_mask_store_lanes_optab_fn): New macro.
10336 (direct_mask_load_lanes_optab_supported_p): Likewise.
10337 (direct_mask_store_lanes_optab_supported_p): Likewise.
10338 * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
10339 parameter.
10340 (vect_load_lanes_supported): Likewise.
10341 * tree-vect-data-refs.c (strip_conversion): New function.
10342 (can_group_stmts_p): Likewise.
10343 (vect_analyze_data_ref_accesses): Use it instead of checking
10344 for a pair of assignments.
10345 (vect_store_lanes_supported): Take a masked_p parameter.
10346 (vect_load_lanes_supported): Likewise.
10347 * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
10348 vect_store_lanes_supported and vect_load_lanes_supported.
10349 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
10350 * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
10351 parameter. Don't allow gaps for masked accesses.
10352 Use vect_get_store_rhs. Update calls to vect_store_lanes_supported
10353 and vect_load_lanes_supported.
10354 (get_load_store_type): Take a masked_p parameter and update
10355 call to get_group_load_store_type.
10356 (vectorizable_store): Update call to get_load_store_type.
10357 Handle IFN_MASK_STORE_LANES.
10358 (vectorizable_load): Update call to get_load_store_type.
10359 Handle IFN_MASK_LOAD_LANES.
10360
10361 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10362 Alan Hayward <alan.hayward@arm.com>
10363 David Sherwood <david.sherwood@arm.com>
10364
10365 * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
10366 modes for SVE.
10367 * config/aarch64/aarch64-protos.h
10368 (aarch64_sve_struct_memory_operand_p): Declare.
10369 * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
10370 (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
10371 (VPRED, vpred): Handle SVE structure modes.
10372 * config/aarch64/constraints.md (Utx): New constraint.
10373 * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
10374 (aarch64_sve_struct_nonimmediate_operand): New predicates.
10375 * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
10376 * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
10377 (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
10378 structure modes. Split into pieces after RA.
10379 (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
10380 (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
10381 New patterns.
10382 * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
10383 SVE structure modes.
10384 (aarch64_classify_address): Likewise.
10385 (sizetochar): Move earlier in file.
10386 (aarch64_print_operand): Handle SVE register lists.
10387 (aarch64_array_mode): New function.
10388 (aarch64_sve_struct_memory_operand_p): Likewise.
10389 (TARGET_ARRAY_MODE): Redefine.
10390
10391 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10392 Alan Hayward <alan.hayward@arm.com>
10393 David Sherwood <david.sherwood@arm.com>
10394
10395 * target.def (array_mode): New target hook.
10396 * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
10397 * doc/tm.texi: Regenerate.
10398 * hooks.h (hook_optmode_mode_uhwi_none): Declare.
10399 * hooks.c (hook_optmode_mode_uhwi_none): New function.
10400 * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
10401 targetm.array_mode.
10402 * stor-layout.c (mode_for_array): Likewise. Support polynomial
10403 type sizes.
10404
10405 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10406 Alan Hayward <alan.hayward@arm.com>
10407 David Sherwood <david.sherwood@arm.com>
10408
10409 * fold-const.c (fold_binary_loc): Check the argument types
10410 rather than the result type when testing for a vector operation.
10411
10412 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10413
10414 * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
10415 * doc/tm.texi: Regenerate.
10416
10417 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10418 Alan Hayward <alan.hayward@arm.com>
10419 David Sherwood <david.sherwood@arm.com>
10420
10421 * doc/invoke.texi (-msve-vector-bits=): Document new option.
10422 (sve): Document new AArch64 extension.
10423 * doc/md.texi (w): Extend the description of the AArch64
10424 constraint to include SVE vectors.
10425 (Upl, Upa): Document new AArch64 predicate constraints.
10426 * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
10427 enum.
10428 * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
10429 (msve-vector-bits=): New option.
10430 * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
10431 SVE when these are disabled.
10432 (sve): New extension.
10433 * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
10434 modes. Adjust their number of units based on aarch64_sve_vg.
10435 (MAX_BITSIZE_MODE_ANY_MODE): Define.
10436 * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
10437 aarch64_addr_query_type.
10438 (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
10439 (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
10440 (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
10441 (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
10442 (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
10443 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
10444 (aarch64_simd_imm_zero_p): Delete.
10445 (aarch64_check_zero_based_sve_index_immediate): Declare.
10446 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
10447 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
10448 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
10449 (aarch64_sve_float_mul_immediate_p): Likewise.
10450 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
10451 rather than an rtx.
10452 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
10453 (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
10454 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
10455 (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
10456 (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
10457 (aarch64_regmode_natural_size): Likewise.
10458 * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
10459 (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
10460 left one place.
10461 (AARCH64_ISA_SVE, TARGET_SVE): New macros.
10462 (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
10463 for VG and the SVE predicate registers.
10464 (V_ALIASES): Add a "z"-prefixed alias.
10465 (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
10466 (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
10467 (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
10468 (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
10469 (REG_CLASS_NAMES): Add entries for them.
10470 (REG_CLASS_CONTENTS): Likewise. Update ALL_REGS to include VG
10471 and the predicate registers.
10472 (aarch64_sve_vg): Declare.
10473 (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
10474 (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
10475 (REGMODE_NATURAL_SIZE): Define.
10476 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
10477 SVE macros.
10478 * config/aarch64/aarch64.c: Include cfgrtl.h.
10479 (simd_immediate_info): Add a constructor for series vectors,
10480 and an associated step field.
10481 (aarch64_sve_vg): New variable.
10482 (aarch64_dbx_register_number): Handle VG and the predicate registers.
10483 (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
10484 (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
10485 (VEC_ANY_DATA, VEC_STRUCT): New constants.
10486 (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
10487 (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
10488 (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
10489 (aarch64_get_mask_mode): New functions.
10490 (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
10491 and FP_LO_REGS. Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
10492 (aarch64_hard_regno_mode_ok): Handle VG. Also handle the SVE
10493 predicate modes and predicate registers. Explicitly restrict
10494 GPRs to modes of 16 bytes or smaller. Only allow FP registers
10495 to store a vector mode if it is recognized by
10496 aarch64_classify_vector_mode.
10497 (aarch64_regmode_natural_size): New function.
10498 (aarch64_hard_regno_caller_save_mode): Return the original mode
10499 for predicates.
10500 (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
10501 (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
10502 (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
10503 (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
10504 functions.
10505 (aarch64_add_offset): Add a temp2 parameter. Assert that temp1
10506 does not overlap dest if the function is frame-related. Handle
10507 SVE constants.
10508 (aarch64_split_add_offset): New function.
10509 (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
10510 them aarch64_add_offset.
10511 (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
10512 and update call to aarch64_sub_sp.
10513 (aarch64_add_cfa_expression): New function.
10514 (aarch64_expand_prologue): Pass extra temporary registers to the
10515 functions above. Handle the case in which we need to emit new
10516 DW_CFA_expressions for registers that were originally saved
10517 relative to the stack pointer, but now have to be expressed
10518 relative to the frame pointer.
10519 (aarch64_output_mi_thunk): Pass extra temporary registers to the
10520 functions above.
10521 (aarch64_expand_epilogue): Likewise. Prevent inheritance of
10522 IP0 and IP1 values for SVE frames.
10523 (aarch64_expand_vec_series): New function.
10524 (aarch64_expand_sve_widened_duplicate): Likewise.
10525 (aarch64_expand_sve_const_vector): Likewise.
10526 (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
10527 Handle SVE constants. Use emit_move_insn to move a force_const_mem
10528 into the register, rather than emitting a SET directly.
10529 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
10530 (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
10531 (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
10532 (offset_9bit_signed_scaled_p): New functions.
10533 (aarch64_replicate_bitmask_imm): New function.
10534 (aarch64_bitmask_imm): Use it.
10535 (aarch64_cannot_force_const_mem): Reject expressions involving
10536 a CONST_POLY_INT. Update call to aarch64_classify_symbol.
10537 (aarch64_classify_index): Handle SVE indices, by requiring
10538 a plain register index with a scale that matches the element size.
10539 (aarch64_classify_address): Handle SVE addresses. Assert that
10540 the mode of the address is VOIDmode or an integer mode.
10541 Update call to aarch64_classify_symbol.
10542 (aarch64_classify_symbolic_expression): Update call to
10543 aarch64_classify_symbol.
10544 (aarch64_const_vec_all_in_range_p): New function.
10545 (aarch64_print_vector_float_operand): Likewise.
10546 (aarch64_print_operand): Handle 'N' and 'C'. Use "zN" rather than
10547 "vN" for FP registers with SVE modes. Handle (const ...) vectors
10548 and the FP immediates 1.0 and 0.5.
10549 (aarch64_print_address_internal): Handle SVE addresses.
10550 (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
10551 (aarch64_regno_regclass): Handle predicate registers.
10552 (aarch64_secondary_reload): Handle big-endian reloads of SVE
10553 data modes.
10554 (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
10555 (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
10556 (aarch64_convert_sve_vector_bits): New function.
10557 (aarch64_override_options): Use it to handle -msve-vector-bits=.
10558 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
10559 rather than an rtx.
10560 (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
10561 Handle SVE vector and predicate modes. Accept VL-based constants
10562 that need only one temporary register, and VL offsets that require
10563 no temporary registers.
10564 (aarch64_conditional_register_usage): Mark the predicate registers
10565 as fixed if SVE isn't available.
10566 (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
10567 Return true for SVE vector and predicate modes.
10568 (aarch64_simd_container_mode): Take the number of bits as a poly_int64
10569 rather than an unsigned int. Handle SVE modes.
10570 (aarch64_preferred_simd_mode): Update call accordingly. Handle
10571 SVE modes.
10572 (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
10573 if SVE is enabled.
10574 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
10575 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
10576 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
10577 (aarch64_sve_float_mul_immediate_p): New functions.
10578 (aarch64_sve_valid_immediate): New function.
10579 (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
10580 Explicitly reject structure modes. Check for INDEX constants.
10581 Handle PTRUE and PFALSE constants.
10582 (aarch64_check_zero_based_sve_index_immediate): New function.
10583 (aarch64_simd_imm_zero_p): Delete.
10584 (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
10585 vector modes. Accept constants in the range of CNT[BHWD].
10586 (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
10587 ask for an Advanced SIMD mode.
10588 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
10589 (aarch64_simd_vector_alignment): Handle SVE predicates.
10590 (aarch64_vectorize_preferred_vector_alignment): New function.
10591 (aarch64_simd_vector_alignment_reachable): Use it instead of
10592 the vector size.
10593 (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
10594 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
10595 functions.
10596 (MAX_VECT_LEN): Delete.
10597 (expand_vec_perm_d): Add a vec_flags field.
10598 (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
10599 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
10600 (aarch64_evpc_ext): Don't apply a big-endian lane correction
10601 for SVE modes.
10602 (aarch64_evpc_rev): Rename to...
10603 (aarch64_evpc_rev_local): ...this. Use a predicated operation for SVE.
10604 (aarch64_evpc_rev_global): New function.
10605 (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
10606 (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
10607 MAX_VECT_LEN.
10608 (aarch64_evpc_sve_tbl): New function.
10609 (aarch64_expand_vec_perm_const_1): Update after rename of
10610 aarch64_evpc_rev. Handle SVE permutes too, trying
10611 aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
10612 than aarch64_evpc_tbl.
10613 (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
10614 (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
10615 (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
10616 (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
10617 (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
10618 (aarch64_expand_sve_vcond): New functions.
10619 (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
10620 of aarch64_vector_mode_p.
10621 (aarch64_dwarf_poly_indeterminate_value): New function.
10622 (aarch64_compute_pressure_classes): Likewise.
10623 (aarch64_can_change_mode_class): Likewise.
10624 (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
10625 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
10626 (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
10627 (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
10628 (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
10629 (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
10630 * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
10631 (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
10632 constraints.
10633 (Dn, Dl, Dr): Accept const as well as const_vector.
10634 (Dz): Likewise. Compare against CONST0_RTX.
10635 * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
10636 of "vector" where appropriate.
10637 (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
10638 (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
10639 (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
10640 (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
10641 (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
10642 (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
10643 (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
10644 (v_int_equiv): Extend to SVE modes.
10645 (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
10646 mode attributes.
10647 (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
10648 (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
10649 (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
10650 (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
10651 (SVE_COND_FP_CMP): New int iterators.
10652 (perm_hilo): Handle the new unpack unspecs.
10653 (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
10654 attributes.
10655 * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
10656 (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
10657 (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
10658 (aarch64_equality_operator, aarch64_constant_vector_operand)
10659 (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
10660 (aarch64_sve_nonimmediate_operand): Likewise.
10661 (aarch64_sve_general_operand): Likewise.
10662 (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
10663 (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
10664 (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
10665 (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
10666 (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
10667 (aarch64_sve_float_arith_immediate): Likewise.
10668 (aarch64_sve_float_arith_with_sub_immediate): Likewise.
10669 (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
10670 (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
10671 (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
10672 (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
10673 (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
10674 (aarch64_sve_float_arith_operand): Likewise.
10675 (aarch64_sve_float_arith_with_sub_operand): Likewise.
10676 (aarch64_sve_float_mul_operand): Likewise.
10677 (aarch64_sve_vec_perm_operand): Likewise.
10678 (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
10679 (aarch64_mov_operand): Accept const_poly_int and const_vector.
10680 (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
10681 as well as const_vector.
10682 (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
10683 in file. Use CONST0_RTX and CONSTM1_RTX.
10684 (aarch64_simd_or_scalar_imm_zero): Likewise. Add match_codes.
10685 (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
10686 Use aarch64_simd_imm_zero.
10687 * config/aarch64/aarch64-sve.md: New file.
10688 * config/aarch64/aarch64.md: Include it.
10689 (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
10690 (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
10691 (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
10692 (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
10693 (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
10694 (sve): New attribute.
10695 (enabled): Disable instructions with the sve attribute unless
10696 TARGET_SVE.
10697 (movqi, movhi): Pass CONST_POLY_INT operaneds through
10698 aarch64_expand_mov_immediate.
10699 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
10700 CNT[BHSD] immediates.
10701 (movti): Split CONST_POLY_INT moves into two halves.
10702 (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
10703 Split additions that need a temporary here if the destination
10704 is the stack pointer.
10705 (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
10706 (*add<mode>3_poly_1): New instruction.
10707 (set_clobber_cc): New expander.
10708
10709 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10710
10711 * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
10712 parameter and use it instead of GET_MODE_SIZE (innermode). Use
10713 inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
10714 Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
10715 GET_MODE_NUNITS (innermode). Also add a first_elem parameter.
10716 Change innermode from fixed_mode_size to machine_mode.
10717 (simplify_subreg): Update call accordingly. Handle a constant-sized
10718 subreg of a variable-length CONST_VECTOR.
10719
10720 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10721 Alan Hayward <alan.hayward@arm.com>
10722 David Sherwood <david.sherwood@arm.com>
10723
10724 * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
10725 (add_offset_to_base): New function, split out from...
10726 (create_mem_ref): ...here. When handling a scale other than 1,
10727 check first whether the address is valid without the offset.
10728 Add it into the base if so, leaving the index and scale as-is.
10729
10730 2018-01-12 Jakub Jelinek <jakub@redhat.com>
10731
10732 PR c++/83778
10733 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
10734 fold_for_warn before checking if arg2 is INTEGER_CST.
10735
10736 2018-01-12 Segher Boessenkool <segher@kernel.crashing.org>
10737
10738 * config/rs6000/predicates.md (load_multiple_operation): Delete.
10739 (store_multiple_operation): Delete.
10740 * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
10741 * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
10742 * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
10743 guarded by TARGET_STRING.
10744 (rs6000_output_load_multiple): Delete.
10745 * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
10746 OPTION_MASK_STRING / TARGET_STRING handling.
10747 (print_operand) <'N', 'O'>: Add comment that these are unused now.
10748 (const rs6000_opt_masks) <"string">: Change mask to 0.
10749 * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
10750 (MASK_STRING): Delete.
10751 * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
10752 parts. Simplify.
10753 (load_multiple): Delete.
10754 (*ldmsi8): Delete.
10755 (*ldmsi7): Delete.
10756 (*ldmsi6): Delete.
10757 (*ldmsi5): Delete.
10758 (*ldmsi4): Delete.
10759 (*ldmsi3): Delete.
10760 (store_multiple): Delete.
10761 (*stmsi8): Delete.
10762 (*stmsi7): Delete.
10763 (*stmsi6): Delete.
10764 (*stmsi5): Delete.
10765 (*stmsi4): Delete.
10766 (*stmsi3): Delete.
10767 (movmemsi_8reg): Delete.
10768 (corresponding unnamed define_insn): Delete.
10769 (movmemsi_6reg): Delete.
10770 (corresponding unnamed define_insn): Delete.
10771 (movmemsi_4reg): Delete.
10772 (corresponding unnamed define_insn): Delete.
10773 (movmemsi_2reg): Delete.
10774 (corresponding unnamed define_insn): Delete.
10775 (movmemsi_1reg): Delete.
10776 (corresponding unnamed define_insn): Delete.
10777 * config/rs6000/rs6000.opt (mno-string): New.
10778 (mstring): Replace by deprecation warning stub.
10779 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
10780
10781 2018-01-12 Jakub Jelinek <jakub@redhat.com>
10782
10783 * regrename.c (regrename_do_replace): If replacing the same
10784 reg multiple times, try to reuse last created gen_raw_REG.
10785
10786 PR debug/81155
10787 * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
10788 main to workaround a bug in GDB.
10789
10790 2018-01-12 Tom de Vries <tom@codesourcery.com>
10791
10792 PR target/83737
10793 * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
10794
10795 2018-01-12 Vladimir Makarov <vmakarov@redhat.com>
10796
10797 PR rtl-optimization/80481
10798 * ira-color.c (get_cap_member): New function.
10799 (allocnos_conflict_by_live_ranges_p): Use it.
10800 (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
10801 (setup_slot_coalesced_allocno_live_ranges): Ditto.
10802
10803 2018-01-12 Uros Bizjak <ubizjak@gmail.com>
10804
10805 PR target/83628
10806 * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
10807 (*saddl_se_1): Ditto.
10808 (*ssubsi_1): Ditto.
10809 (*ssubl_se_1): Ditto.
10810
10811 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
10812
10813 * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
10814 rather than wi::to_widest for DR_INITs.
10815 * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
10816 wi::to_poly_offset rather than wi::to_offset for DR_INIT.
10817 (vect_analyze_data_ref_accesses): Require both DR_INITs to be
10818 INTEGER_CSTs.
10819 (vect_analyze_group_access_1): Note that here.
10820
10821 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
10822
10823 * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
10824 polynomial type sizes.
10825
10826 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
10827
10828 * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
10829 poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
10830 (gimple_add_tmp_var): Likewise.
10831
10832 2018-01-12 Martin Liska <mliska@suse.cz>
10833
10834 * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
10835 (gimple_alloc_sizes): Likewise.
10836 (dump_gimple_statistics): Use PRIu64 in printf format.
10837 * gimple.h: Change uint64_t to int.
10838
10839 2018-01-12 Martin Liska <mliska@suse.cz>
10840
10841 * tree-core.h: Use uint64_t instead of int.
10842 * tree.c (tree_node_counts): Likewise.
10843 (tree_node_sizes): Likewise.
10844 (dump_tree_statistics): Use PRIu64 in printf format.
10845
10846 2018-01-12 Martin Liska <mliska@suse.cz>
10847
10848 * Makefile.in: As qsort_chk is implemented in vec.c, add
10849 vec.o to linkage of gencfn-macros.
10850 * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
10851 passing the info to record_node_allocation_statistics.
10852 (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
10853 and pass the info.
10854 * ggc-common.c (struct ggc_usage): Add operator== and use
10855 it in operator< and compare function.
10856 * mem-stats.h (struct mem_usage): Likewise.
10857 * vec.c (struct vec_usage): Remove operator< and compare
10858 function. Can be simply inherited.
10859
10860 2018-01-12 Martin Jambor <mjambor@suse.cz>
10861
10862 PR target/81616
10863 * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
10864 * tree-ssa-math-opts.c: Include domwalk.h.
10865 (convert_mult_to_fma_1): New function.
10866 (fma_transformation_info): New type.
10867 (fma_deferring_state): Likewise.
10868 (cancel_fma_deferring): New function.
10869 (result_of_phi): Likewise.
10870 (last_fma_candidate_feeds_initial_phi): Likewise.
10871 (convert_mult_to_fma): Added deferring logic, split actual
10872 transformation to convert_mult_to_fma_1.
10873 (math_opts_dom_walker): New type.
10874 (math_opts_dom_walker::after_dom_children): New method, body moved
10875 here from pass_optimize_widening_mul::execute, added deferring logic
10876 bits.
10877 (pass_optimize_widening_mul::execute): Moved most of code to
10878 math_opts_dom_walker::after_dom_children.
10879 * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
10880 * config/i386/i386.c (ix86_option_override_internal): Added
10881 maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
10882
10883 2018-01-12 Richard Biener <rguenther@suse.de>
10884
10885 PR debug/83157
10886 * dwarf2out.c (gen_variable_die): Do not reset old_die for
10887 inline instance vars.
10888
10889 2018-01-12 Oleg Endo <olegendo@gcc.gnu.org>
10890
10891 PR target/81819
10892 * config/rx/rx.c (rx_is_restricted_memory_address):
10893 Handle SUBREG case.
10894
10895 2018-01-12 Richard Biener <rguenther@suse.de>
10896
10897 PR tree-optimization/80846
10898 * target.def (split_reduction): New target hook.
10899 * targhooks.c (default_split_reduction): New function.
10900 * targhooks.h (default_split_reduction): Declare.
10901 * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
10902 target requests first reduce vectors by combining low and high
10903 parts.
10904 * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
10905 (get_vectype_for_scalar_type_and_size): Export.
10906 * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
10907 * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
10908 * doc/tm.texi: Regenerate.
10909 * config/i386/i386.c (ix86_split_reduction): Implement
10910 TARGET_VECTORIZE_SPLIT_REDUCTION.
10911
10912 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
10913
10914 PR target/83368
10915 * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
10916 in PIC mode except for TARGET_VXWORKS_RTP.
10917 * config/sparc/sparc.c: Include cfgrtl.h.
10918 (TARGET_INIT_PIC_REG): Define.
10919 (TARGET_USE_PSEUDO_PIC_REG): Likewise.
10920 (sparc_pic_register_p): New predicate.
10921 (sparc_legitimate_address_p): Use it.
10922 (sparc_legitimize_pic_address): Likewise.
10923 (sparc_delegitimize_address): Likewise.
10924 (sparc_mode_dependent_address_p): Likewise.
10925 (gen_load_pcrel_sym): Remove 4th parameter.
10926 (load_got_register): Adjust call to above. Remove obsolete stuff.
10927 (sparc_expand_prologue): Do not call load_got_register here.
10928 (sparc_flat_expand_prologue): Likewise.
10929 (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
10930 (sparc_use_pseudo_pic_reg): New function.
10931 (sparc_init_pic_reg): Likewise.
10932 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
10933 (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
10934
10935 2018-01-12 Christophe Lyon <christophe.lyon@linaro.org>
10936
10937 * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
10938 Add item for branch_cost.
10939
10940 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
10941
10942 PR rtl-optimization/83565
10943 * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
10944 not extend the result to a larger mode for rotate operations.
10945 (num_sign_bit_copies1): Likewise.
10946
10947 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
10948
10949 PR target/40411
10950 * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
10951 -symbolic.
10952 Use values-Xc.o for -pedantic.
10953 Link with values-xpg4.o for C90, values-xpg6.o otherwise.
10954
10955 2018-01-12 Martin Liska <mliska@suse.cz>
10956
10957 PR ipa/83054
10958 * ipa-devirt.c (final_warning_record::grow_type_warnings):
10959 New function.
10960 (possible_polymorphic_call_targets): Use it.
10961 (ipa_devirt): Likewise.
10962
10963 2018-01-12 Martin Liska <mliska@suse.cz>
10964
10965 * profile-count.h (enum profile_quality): Use 0 as invalid
10966 enum value of profile_quality.
10967
10968 2018-01-12 Chung-Ju Wu <jasonwucj@gmail.com>
10969
10970 * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
10971 -mext-string options.
10972
10973 2018-01-12 Richard Biener <rguenther@suse.de>
10974
10975 * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
10976 DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
10977 * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
10978 Likewise.
10979 * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
10980
10981 2018-01-11 Michael Meissner <meissner@linux.vnet.ibm.com>
10982
10983 * configure.ac (--with-long-double-format): Add support for the
10984 configuration option to change the default long double format on
10985 PowerPC systems.
10986 * config.gcc (powerpc*-linux*-*): Likewise.
10987 * configure: Regenerate.
10988 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
10989 double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
10990 used without modification.
10991
10992 2018-01-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
10993
10994 * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
10995 (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
10996 * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
10997 MISC_BUILTIN_SPEC_BARRIER.
10998 (rs6000_init_builtins): Likewise.
10999 * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
11000 enum value.
11001 (speculation_barrier): New define_insn.
11002 * doc/extend.texi: Document __builtin_speculation_barrier.
11003
11004 2018-01-11 Jakub Jelinek <jakub@redhat.com>
11005
11006 PR target/83203
11007 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
11008 is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
11009 * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
11010 iterators.
11011 (ssescalarmodesuffix): Add 512-bit vectors. Use "d" or "q" for
11012 integral modes instead of "ss" and "sd".
11013 (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
11014 vectors with 32-bit and 64-bit elements.
11015 (vecdupssescalarmodesuffix): New mode attribute.
11016 (vec_dup<mode>): Use it.
11017
11018 2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
11019
11020 PR target/83330
11021 * config/i386/i386.c (ix86_compute_frame_layout): Align stack
11022 frame if argument is passed on stack.
11023
11024 2018-01-11 Jakub Jelinek <jakub@redhat.com>
11025
11026 PR target/82682
11027 * ree.c (combine_reaching_defs): Optimize also
11028 reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
11029 reg2=any_extend(exp); reg1=reg2;, formatting fix.
11030
11031 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
11032
11033 PR middle-end/83189
11034 * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
11035
11036 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
11037
11038 PR middle-end/83718
11039 * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
11040 after they are computed.
11041
11042 2018-01-11 Bin Cheng <bin.cheng@arm.com>
11043
11044 PR tree-optimization/83695
11045 * gimple-loop-linterchange.cc
11046 (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
11047 reset cached scev information after interchange.
11048 (pass_linterchange::execute): Remove call to scev_reset_htab.
11049
11050 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11051
11052 * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
11053 vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
11054 vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
11055 vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
11056 vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
11057 vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
11058 * config/arm/arm_neon_builtins.def (vfmal_lane_low,
11059 vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
11060 vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
11061 vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
11062 vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
11063 * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
11064 (V_lane_reg): Likewise.
11065 * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
11066 New define_expand.
11067 (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
11068 (vfmal_lane_low<mode>_intrinsic,
11069 vfmal_lane_low<vfmlsel2><mode>_intrinsic,
11070 vfmal_lane_high<vfmlsel2><mode>_intrinsic,
11071 vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
11072 vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
11073 vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
11074 vfmsl_lane_high<mode>_intrinsic): New define_insns.
11075
11076 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11077
11078 * config/arm/arm-cpus.in (fp16fml): New feature.
11079 (ALL_SIMD): Add fp16fml.
11080 (armv8.2-a): Add fp16fml as an option.
11081 (armv8.3-a): Likewise.
11082 (armv8.4-a): Add fp16fml as part of fp16.
11083 * config/arm/arm.h (TARGET_FP16FML): Define.
11084 * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
11085 when appropriate.
11086 * config/arm/arm-modes.def (V2HF): Define.
11087 * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
11088 vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
11089 vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
11090 * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
11091 vfmsl_low, vfmsl_high): New set of builtins.
11092 * config/arm/iterators.md (PLUSMINUS): New code iterator.
11093 (vfml_op): New code attribute.
11094 (VFMLHALVES): New int iterator.
11095 (VFML, VFMLSEL): New mode attributes.
11096 (V_reg): Define mapping for V2HF.
11097 (V_hi, V_lo): New mode attributes.
11098 (VF_constraint): Likewise.
11099 (vfml_half, vfml_half_selector): New int attributes.
11100 * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
11101 define_expand.
11102 (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
11103 vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
11104 New define_insn.
11105 * config/arm/t-arm-elf (v8_fps): Add fp16fml.
11106 * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
11107 * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
11108 * doc/invoke.texi (ARM Options): Document fp16fml. Update armv8.4-a
11109 documentation.
11110 * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
11111 Document new effective target and option set.
11112
11113 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11114
11115 * config/arm/arm-cpus.in (armv8_4): New feature.
11116 (ARMv8_4a): New fgroup.
11117 (armv8.4-a): New arch.
11118 * config/arm/arm-tables.opt: Regenerate.
11119 * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
11120 * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
11121 * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
11122 Add matching rules for -march=armv8.4-a and extensions.
11123 * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
11124
11125 2018-01-11 Oleg Endo <olegendo@gcc.gnu.org>
11126
11127 PR target/81821
11128 * config/rx/rx.md (BW): New mode attribute.
11129 (sync_lock_test_and_setsi): Add mode suffix to insn output.
11130
11131 2018-01-11 Richard Biener <rguenther@suse.de>
11132
11133 PR tree-optimization/83435
11134 * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
11135 * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
11136 * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
11137
11138 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11139 Alan Hayward <alan.hayward@arm.com>
11140 David Sherwood <david.sherwood@arm.com>
11141
11142 * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
11143 field.
11144 (aarch64_classify_address): Initialize it. Track polynomial offsets.
11145 (aarch64_print_address_internal): Use it to check for a zero offset.
11146
11147 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11148 Alan Hayward <alan.hayward@arm.com>
11149 David Sherwood <david.sherwood@arm.com>
11150
11151 * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
11152 * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
11153 Return a poly_int64 rather than a HOST_WIDE_INT.
11154 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
11155 rather than a HOST_WIDE_INT.
11156 * config/aarch64/aarch64.h (aarch64_frame): Protect with
11157 HAVE_POLY_INT_H rather than HOST_WIDE_INT. Change locals_offset,
11158 hard_fp_offset, frame_size, initial_adjust, callee_offset and
11159 final_offset from HOST_WIDE_INT to poly_int64.
11160 * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
11161 to_constant when getting the number of units in an Advanced SIMD
11162 mode.
11163 (aarch64_builtin_vectorized_function): Check for a constant number
11164 of units.
11165 * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
11166 GET_MODE_SIZE.
11167 (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
11168 attribute instead of GET_MODE_NUNITS.
11169 * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
11170 (aarch64_class_max_nregs): Use the constant_lowest_bound of the
11171 GET_MODE_SIZE for fixed-size registers.
11172 (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
11173 (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
11174 (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
11175 (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
11176 (aarch64_print_operand, aarch64_print_address_internal)
11177 (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
11178 (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
11179 (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
11180 Handle polynomial GET_MODE_SIZE.
11181 (aarch64_hard_regno_caller_save_mode): Likewise. Return modes
11182 wider than SImode without modification.
11183 (tls_symbolic_operand_type): Use strip_offset instead of split_const.
11184 (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
11185 (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
11186 passing and returning SVE modes.
11187 (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
11188 rather than GEN_INT.
11189 (aarch64_emit_probe_stack_range): Take the size as a poly_int64
11190 rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
11191 (aarch64_allocate_and_probe_stack_space): Likewise.
11192 (aarch64_layout_frame): Cope with polynomial offsets.
11193 (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
11194 start_offset as a poly_int64 rather than a HOST_WIDE_INT. Track
11195 polynomial offsets.
11196 (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
11197 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
11198 poly_int64 rather than a HOST_WIDE_INT.
11199 (aarch64_get_separate_components, aarch64_process_components)
11200 (aarch64_expand_prologue, aarch64_expand_epilogue)
11201 (aarch64_use_return_insn_p): Handle polynomial frame offsets.
11202 (aarch64_anchor_offset): New function, split out from...
11203 (aarch64_legitimize_address): ...here.
11204 (aarch64_builtin_vectorization_cost): Handle polynomial
11205 TYPE_VECTOR_SUBPARTS.
11206 (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
11207 GET_MODE_NUNITS.
11208 (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
11209 number of elements from the PARALLEL rather than the mode.
11210 (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
11211 rather than GET_MODE_BITSIZE.
11212 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
11213 (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
11214 (aarch64_expand_vec_perm_const_1): Handle polynomial
11215 d->perm.length () and d->perm elements.
11216 (aarch64_evpc_tbl): Likewise. Use nelt rather than GET_MODE_NUNITS.
11217 Apply to_constant to d->perm elements.
11218 (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
11219 polynomial CONST_VECTOR_NUNITS.
11220 (aarch64_move_pointer): Take amount as a poly_int64 rather
11221 than an int.
11222 (aarch64_progress_pointer): Avoid temporary variable.
11223 * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
11224 the mode attribute instead of GET_MODE.
11225
11226 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11227 Alan Hayward <alan.hayward@arm.com>
11228 David Sherwood <david.sherwood@arm.com>
11229
11230 * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
11231 x exists before using it.
11232 (aarch64_add_constant_internal): Rename to...
11233 (aarch64_add_offset_1): ...this. Replace regnum with separate
11234 src and dest rtxes. Handle the case in which they're different,
11235 including when the offset is zero. Replace scratchreg with an rtx.
11236 Use 2 additions if there is no spare register into which we can
11237 move a 16-bit constant.
11238 (aarch64_add_constant): Delete.
11239 (aarch64_add_offset): Replace reg with separate src and dest
11240 rtxes. Take a poly_int64 offset instead of a HOST_WIDE_INT.
11241 Use aarch64_add_offset_1.
11242 (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
11243 an rtx rather than an int. Take the delta as a poly_int64
11244 rather than a HOST_WIDE_INT. Use aarch64_add_offset.
11245 (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
11246 (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
11247 aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
11248 (aarch64_expand_epilogue): Update calls to aarch64_add_offset
11249 and aarch64_add_sp.
11250 (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
11251 aarch64_add_constant.
11252
11253 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11254
11255 * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
11256 Use scalar_float_mode.
11257
11258 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11259
11260 * config/aarch64/aarch64-simd.md
11261 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
11262 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
11263 (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
11264 (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
11265 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
11266 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
11267 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
11268 (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
11269 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
11270 (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
11271
11272 2018-01-11 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
11273
11274 PR target/83514
11275 * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
11276 targ_options->x_arm_arch_string is non NULL.
11277
11278 2018-01-11 Tamar Christina <tamar.christina@arm.com>
11279
11280 * config/aarch64/aarch64.h
11281 (AARCH64_FL_FOR_ARCH8_4): Add AARCH64_FL_DOTPROD.
11282
11283 2018-01-11 Sudakshina Das <sudi.das@arm.com>
11284
11285 PR target/82096
11286 * expmed.c (emit_store_flag_force): Swap if const op0
11287 and change VOIDmode to mode of op0.
11288
11289 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11290
11291 PR rtl-optimization/83761
11292 * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
11293 than bytes to mode_for_size.
11294
11295 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
11296
11297 PR middle-end/83189
11298 * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
11299 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
11300 profile.
11301
11302 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
11303
11304 PR middle-end/83575
11305 * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
11306 when in layout mode.
11307 (cfg_layout_finalize): Do not verify cfg before we are out of layout.
11308 * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
11309 partition fixup.
11310
11311 2018-01-10 Michael Collison <michael.collison@arm.com>
11312
11313 * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
11314 * config/aarch64/aarch64-option-extension.def: Add
11315 AARCH64_OPT_EXTENSION of 'fp16fml'.
11316 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11317 (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
11318 * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
11319 * config/aarch64/constraints.md (Ui7): New constraint.
11320 * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
11321 (VFMLA_SEL_W): Ditto.
11322 (f16quad): Ditto.
11323 (f16mac1): Ditto.
11324 (VFMLA16_LOW): New int iterator.
11325 (VFMLA16_HIGH): Ditto.
11326 (UNSPEC_FMLAL): New unspec.
11327 (UNSPEC_FMLSL): Ditto.
11328 (UNSPEC_FMLAL2): Ditto.
11329 (UNSPEC_FMLSL2): Ditto.
11330 (f16mac): New code attribute.
11331 * config/aarch64/aarch64-simd-builtins.def
11332 (aarch64_fmlal_lowv2sf): Ditto.
11333 (aarch64_fmlsl_lowv2sf): Ditto.
11334 (aarch64_fmlalq_lowv4sf): Ditto.
11335 (aarch64_fmlslq_lowv4sf): Ditto.
11336 (aarch64_fmlal_highv2sf): Ditto.
11337 (aarch64_fmlsl_highv2sf): Ditto.
11338 (aarch64_fmlalq_highv4sf): Ditto.
11339 (aarch64_fmlslq_highv4sf): Ditto.
11340 (aarch64_fmlal_lane_lowv2sf): Ditto.
11341 (aarch64_fmlsl_lane_lowv2sf): Ditto.
11342 (aarch64_fmlal_laneq_lowv2sf): Ditto.
11343 (aarch64_fmlsl_laneq_lowv2sf): Ditto.
11344 (aarch64_fmlalq_lane_lowv4sf): Ditto.
11345 (aarch64_fmlsl_lane_lowv4sf): Ditto.
11346 (aarch64_fmlalq_laneq_lowv4sf): Ditto.
11347 (aarch64_fmlsl_laneq_lowv4sf): Ditto.
11348 (aarch64_fmlal_lane_highv2sf): Ditto.
11349 (aarch64_fmlsl_lane_highv2sf): Ditto.
11350 (aarch64_fmlal_laneq_highv2sf): Ditto.
11351 (aarch64_fmlsl_laneq_highv2sf): Ditto.
11352 (aarch64_fmlalq_lane_highv4sf): Ditto.
11353 (aarch64_fmlsl_lane_highv4sf): Ditto.
11354 (aarch64_fmlalq_laneq_highv4sf): Ditto.
11355 (aarch64_fmlsl_laneq_highv4sf): Ditto.
11356 * config/aarch64/aarch64-simd.md:
11357 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
11358 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
11359 (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
11360 (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
11361 (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
11362 (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
11363 (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
11364 (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
11365 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
11366 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
11367 (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
11368 (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
11369 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
11370 (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
11371 (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
11372 (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
11373 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
11374 (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
11375 (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
11376 (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
11377 * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
11378 (vfmlsl_low_u32): Ditto.
11379 (vfmlalq_low_u32): Ditto.
11380 (vfmlslq_low_u32): Ditto.
11381 (vfmlal_high_u32): Ditto.
11382 (vfmlsl_high_u32): Ditto.
11383 (vfmlalq_high_u32): Ditto.
11384 (vfmlslq_high_u32): Ditto.
11385 (vfmlal_lane_low_u32): Ditto.
11386 (vfmlsl_lane_low_u32): Ditto.
11387 (vfmlal_laneq_low_u32): Ditto.
11388 (vfmlsl_laneq_low_u32): Ditto.
11389 (vfmlalq_lane_low_u32): Ditto.
11390 (vfmlslq_lane_low_u32): Ditto.
11391 (vfmlalq_laneq_low_u32): Ditto.
11392 (vfmlslq_laneq_low_u32): Ditto.
11393 (vfmlal_lane_high_u32): Ditto.
11394 (vfmlsl_lane_high_u32): Ditto.
11395 (vfmlal_laneq_high_u32): Ditto.
11396 (vfmlsl_laneq_high_u32): Ditto.
11397 (vfmlalq_lane_high_u32): Ditto.
11398 (vfmlslq_lane_high_u32): Ditto.
11399 (vfmlalq_laneq_high_u32): Ditto.
11400 (vfmlslq_laneq_high_u32): Ditto.
11401 * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
11402 (AARCH64_FL_FOR_ARCH8_4): New.
11403 (AARCH64_ISA_F16FML): New ISA flag.
11404 (TARGET_F16FML): New feature flag for fp16fml.
11405 (doc/invoke.texi): Document new fp16fml option.
11406
11407 2018-01-10 Michael Collison <michael.collison@arm.com>
11408
11409 * config/aarch64/aarch64-builtins.c:
11410 (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
11411 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11412 (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
11413 * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
11414 (AARCH64_ISA_SHA3): New ISA flag.
11415 (TARGET_SHA3): New feature flag for sha3.
11416 * config/aarch64/iterators.md (sha512_op): New int attribute.
11417 (CRYPTO_SHA512): New int iterator.
11418 (UNSPEC_SHA512H): New unspec.
11419 (UNSPEC_SHA512H2): Ditto.
11420 (UNSPEC_SHA512SU0): Ditto.
11421 (UNSPEC_SHA512SU1): Ditto.
11422 * config/aarch64/aarch64-simd-builtins.def
11423 (aarch64_crypto_sha512hqv2di): New builtin.
11424 (aarch64_crypto_sha512h2qv2di): Ditto.
11425 (aarch64_crypto_sha512su0qv2di): Ditto.
11426 (aarch64_crypto_sha512su1qv2di): Ditto.
11427 (aarch64_eor3qv8hi): Ditto.
11428 (aarch64_rax1qv2di): Ditto.
11429 (aarch64_xarqv2di): Ditto.
11430 (aarch64_bcaxqv8hi): Ditto.
11431 * config/aarch64/aarch64-simd.md:
11432 (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
11433 (aarch64_crypto_sha512su0qv2di): Ditto.
11434 (aarch64_crypto_sha512su1qv2di): Ditto.
11435 (aarch64_eor3qv8hi): Ditto.
11436 (aarch64_rax1qv2di): Ditto.
11437 (aarch64_xarqv2di): Ditto.
11438 (aarch64_bcaxqv8hi): Ditto.
11439 * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
11440 (vsha512h2q_u64): Ditto.
11441 (vsha512su0q_u64): Ditto.
11442 (vsha512su1q_u64): Ditto.
11443 (veor3q_u16): Ditto.
11444 (vrax1q_u64): Ditto.
11445 (vxarq_u64): Ditto.
11446 (vbcaxq_u16): Ditto.
11447 * config/arm/types.md (crypto_sha512): New type attribute.
11448 (crypto_sha3): Ditto.
11449 (doc/invoke.texi): Document new sha3 option.
11450
11451 2018-01-10 Michael Collison <michael.collison@arm.com>
11452
11453 * config/aarch64/aarch64-builtins.c:
11454 (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
11455 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11456 (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
11457 (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
11458 * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
11459 (AARCH64_ISA_SM4): New ISA flag.
11460 (TARGET_SM4): New feature flag for sm4.
11461 * config/aarch64/aarch64-simd-builtins.def
11462 (aarch64_sm3ss1qv4si): Ditto.
11463 (aarch64_sm3tt1aq4si): Ditto.
11464 (aarch64_sm3tt1bq4si): Ditto.
11465 (aarch64_sm3tt2aq4si): Ditto.
11466 (aarch64_sm3tt2bq4si): Ditto.
11467 (aarch64_sm3partw1qv4si): Ditto.
11468 (aarch64_sm3partw2qv4si): Ditto.
11469 (aarch64_sm4eqv4si): Ditto.
11470 (aarch64_sm4ekeyqv4si): Ditto.
11471 * config/aarch64/aarch64-simd.md:
11472 (aarch64_sm3ss1qv4si): Ditto.
11473 (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
11474 (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
11475 (aarch64_sm4eqv4si): Ditto.
11476 (aarch64_sm4ekeyqv4si): Ditto.
11477 * config/aarch64/iterators.md (sm3tt_op): New int iterator.
11478 (sm3part_op): Ditto.
11479 (CRYPTO_SM3TT): Ditto.
11480 (CRYPTO_SM3PART): Ditto.
11481 (UNSPEC_SM3SS1): New unspec.
11482 (UNSPEC_SM3TT1A): Ditto.
11483 (UNSPEC_SM3TT1B): Ditto.
11484 (UNSPEC_SM3TT2A): Ditto.
11485 (UNSPEC_SM3TT2B): Ditto.
11486 (UNSPEC_SM3PARTW1): Ditto.
11487 (UNSPEC_SM3PARTW2): Ditto.
11488 (UNSPEC_SM4E): Ditto.
11489 (UNSPEC_SM4EKEY): Ditto.
11490 * config/aarch64/constraints.md (Ui2): New constraint.
11491 * config/aarch64/predicates.md (aarch64_imm2): New predicate.
11492 * config/arm/types.md (crypto_sm3): New type attribute.
11493 (crypto_sm4): Ditto.
11494 * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
11495 (vsm3tt1aq_u32): Ditto.
11496 (vsm3tt1bq_u32): Ditto.
11497 (vsm3tt2aq_u32): Ditto.
11498 (vsm3tt2bq_u32): Ditto.
11499 (vsm3partw1q_u32): Ditto.
11500 (vsm3partw2q_u32): Ditto.
11501 (vsm4eq_u32): Ditto.
11502 (vsm4ekeyq_u32): Ditto.
11503 (doc/invoke.texi): Document new sm4 option.
11504
11505 2018-01-10 Michael Collison <michael.collison@arm.com>
11506
11507 * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
11508 * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
11509 (AARCH64_FL_FOR_ARCH8_4): New.
11510 (AARCH64_FL_V8_4): New flag.
11511 (doc/invoke.texi): Document new armv8.4-a option.
11512
11513 2018-01-10 Michael Collison <michael.collison@arm.com>
11514
11515 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11516 (__ARM_FEATURE_AES): Define if TARGET_AES is true.
11517 (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
11518 * config/aarch64/aarch64-option-extension.def: Add
11519 AARCH64_OPT_EXTENSION of 'sha2'.
11520 (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
11521 (crypto): Disable sha2 and aes if crypto disabled.
11522 (crypto): Enable aes and sha2 if enabled.
11523 (simd): Disable sha2 and aes if simd disabled.
11524 * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
11525 New flags.
11526 (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
11527 (TARGET_SHA2): New feature flag for sha2.
11528 (TARGET_AES): New feature flag for aes.
11529 * config/aarch64/aarch64-simd.md:
11530 (aarch64_crypto_aes<aes_op>v16qi): Make pattern
11531 conditional on TARGET_AES.
11532 (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
11533 (aarch64_crypto_sha1hsi): Make pattern conditional
11534 on TARGET_SHA2.
11535 (aarch64_crypto_sha1hv4si): Ditto.
11536 (aarch64_be_crypto_sha1hv4si): Ditto.
11537 (aarch64_crypto_sha1su1v4si): Ditto.
11538 (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
11539 (aarch64_crypto_sha1su0v4si): Ditto.
11540 (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
11541 (aarch64_crypto_sha256su0v4si): Ditto.
11542 (aarch64_crypto_sha256su1v4si): Ditto.
11543 (doc/invoke.texi): Document new aes and sha2 options.
11544
11545 2018-01-10 Martin Sebor <msebor@redhat.com>
11546
11547 PR tree-optimization/83781
11548 * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
11549 as string arrays.
11550
11551 2018-01-11 Martin Sebor <msebor@gmail.com>
11552 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
11553
11554 PR tree-optimization/83501
11555 PR tree-optimization/81703
11556
11557 * tree-ssa-strlen.c (get_string_cst): Rename...
11558 (get_string_len): ...to this. Handle global constants.
11559 (handle_char_store): Adjust.
11560
11561 2018-01-10 Kito Cheng <kito.cheng@gmail.com>
11562 Jim Wilson <jimw@sifive.com>
11563
11564 * config/riscv/riscv-protos.h (riscv_output_return): New.
11565 * config/riscv/riscv.c (struct machine_function): New naked_p field.
11566 (riscv_attribute_table, riscv_output_return),
11567 (riscv_handle_fndecl_attribute, riscv_naked_function_p),
11568 (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
11569 (riscv_compute_frame_info): Only compute frame->mask if not a naked
11570 function.
11571 (riscv_expand_prologue): Add early return for naked function.
11572 (riscv_expand_epilogue): Likewise.
11573 (riscv_function_ok_for_sibcall): Return false for naked function.
11574 (riscv_set_current_function): New.
11575 (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
11576 (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
11577 * config/riscv/riscv.md (simple_return): Call riscv_output_return.
11578 * doc/extend.texi (RISC-V Function Attributes): New.
11579
11580 2018-01-10 Michael Meissner <meissner@linux.vnet.ibm.com>
11581
11582 * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
11583 check for 128-bit long double before checking TCmode.
11584 * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
11585 128-bit long doubles before checking TFmode or TCmode.
11586 (FLOAT128_IBM_P): Likewise.
11587
11588 2018-01-10 Martin Sebor <msebor@redhat.com>
11589
11590 PR tree-optimization/83671
11591 * builtins.c (c_strlen): Unconditionally return zero for the empty
11592 string.
11593 Use -Warray-bounds for warnings.
11594 * gimple-fold.c (get_range_strlen): Handle non-constant lengths
11595 for non-constant array indices with COMPONENT_REF, arrays of
11596 arrays, and pointers to arrays.
11597 (gimple_fold_builtin_strlen): Determine and set length range for
11598 non-constant character arrays.
11599
11600 2018-01-10 Aldy Hernandez <aldyh@redhat.com>
11601
11602 PR middle-end/81897
11603 * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
11604 empty blocks.
11605
11606 2018-01-10 Eric Botcazou <ebotcazou@adacore.com>
11607
11608 * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
11609
11610 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
11611
11612 PR target/83399
11613 * config/rs6000/rs6000.c (print_operand) <'y'>: Use
11614 VECTOR_MEM_ALTIVEC_OR_VSX_P.
11615 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
11616 indexed_or_indirect_operand predicate.
11617 (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
11618 (*vsx_le_perm_load_v8hi): Likewise.
11619 (*vsx_le_perm_load_v16qi): Likewise.
11620 (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
11621 (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
11622 (*vsx_le_perm_store_v8hi): Likewise.
11623 (*vsx_le_perm_store_v16qi): Likewise.
11624 (eight unnamed splitters): Likewise.
11625
11626 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
11627
11628 * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
11629 * config/rs6000/emmintrin.h: Likewise.
11630 * config/rs6000/mmintrin.h: Likewise.
11631 * config/rs6000/xmmintrin.h: Likewise.
11632
11633 2018-01-10 David Malcolm <dmalcolm@redhat.com>
11634
11635 PR c++/43486
11636 * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
11637 "public_flag".
11638 * tree.c (tree_nop_conversion): Return true for location wrapper
11639 nodes.
11640 (maybe_wrap_with_location): New function.
11641 (selftest::check_strip_nops): New function.
11642 (selftest::test_location_wrappers): New function.
11643 (selftest::tree_c_tests): Call it.
11644 * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
11645 (maybe_wrap_with_location): New decl.
11646 (EXPR_LOCATION_WRAPPER_P): New macro.
11647 (location_wrapper_p): New inline function.
11648 (tree_strip_any_location_wrapper): New inline function.
11649
11650 2018-01-10 H.J. Lu <hongjiu.lu@intel.com>
11651
11652 PR target/83735
11653 * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
11654 stack_realign_offset for the largest alignment of stack slot
11655 actually used.
11656 (ix86_find_max_used_stack_alignment): New function.
11657 (ix86_finalize_stack_frame_flags): Use it. Set
11658 max_used_stack_alignment if we don't realign stack.
11659 * config/i386/i386.h (machine_function): Add
11660 max_used_stack_alignment.
11661
11662 2018-01-10 Christophe Lyon <christophe.lyon@linaro.org>
11663
11664 * config/arm/arm.opt (-mbranch-cost): New option.
11665 * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
11666 account.
11667
11668 2018-01-10 Segher Boessenkool <segher@kernel.crashing.org>
11669
11670 PR target/83629
11671 * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
11672 load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
11673
11674 2018-01-10 Richard Biener <rguenther@suse.de>
11675
11676 PR debug/83765
11677 * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
11678 early out so it also covers the case where we have a non-NULL
11679 origin.
11680
11681 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
11682
11683 PR tree-optimization/83753
11684 * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
11685 for non-strided grouped accesses if the number of elements is 1.
11686
11687 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
11688
11689 PR target/81616
11690 * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
11691 * i386.h (TARGET_USE_GATHER): Define.
11692 * x86-tune.def (X86_TUNE_USE_GATHER): New.
11693
11694 2018-01-10 Martin Liska <mliska@suse.cz>
11695
11696 PR bootstrap/82831
11697 * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
11698 * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
11699 partitioning.
11700 * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
11701 CLEANUP_NO_PARTITIONING is not set.
11702
11703 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
11704
11705 * doc/rtl.texi: Remove documentation of (const ...) wrappers
11706 for vectors, as a partial revert of r254296.
11707 * rtl.h (const_vec_p): Delete.
11708 (const_vec_duplicate_p): Don't test for vector CONSTs.
11709 (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
11710 * expmed.c (make_tree): Likewise.
11711
11712 Revert:
11713 * common.md (E, F): Use CONSTANT_P instead of checking for
11714 CONST_VECTOR.
11715 * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
11716 checking for CONST_VECTOR.
11717
11718 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
11719
11720 PR middle-end/83575
11721 * predict.c (force_edge_cold): Handle in more sane way edges
11722 with no prediction.
11723
11724 2018-01-09 Carl Love <cel@us.ibm.com>
11725
11726 * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
11727 V4SI, V4SF types.
11728 (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
11729 * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
11730 VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
11731 VMRGOW_V2DI, VMRGOW_V2DF. Remove definition for VMRGOW.
11732 * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
11733 P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW): Add definitions.
11734 * config/rs6000/rs6000-protos.h: Add extern defition for
11735 rs6000_generate_float2_double_code.
11736 * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
11737 function.
11738 * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
11739 (float2_v2df): Add define_expand.
11740
11741 2018-01-09 Uros Bizjak <ubizjak@gmail.com>
11742
11743 PR target/83628
11744 * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
11745 op_mode in the force_to_mode call.
11746
11747 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
11748
11749 * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
11750 instead of checking each element individually.
11751 (aarch64_evpc_uzp): Likewise.
11752 (aarch64_evpc_zip): Likewise.
11753 (aarch64_evpc_ext): Likewise.
11754 (aarch64_evpc_rev): Likewise.
11755 (aarch64_evpc_dup): Test the encoding for a single duplicated element,
11756 instead of checking each element individually. Return true without
11757 generating rtl if
11758 (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
11759 whether all selected elements come from the same input, instead of
11760 checking each element individually. Remove calls to gen_rtx_REG,
11761 start_sequence and end_sequence and instead assert that no rtl is
11762 generated.
11763
11764 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
11765
11766 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
11767 order of HIGH and CONST checks.
11768
11769 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
11770
11771 * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
11772 if the destination isn't an SSA_NAME.
11773
11774 2018-01-09 Richard Biener <rguenther@suse.de>
11775
11776 PR tree-optimization/83668
11777 * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
11778 move prologue...
11779 (canonicalize_loop_form): ... here, renamed from ...
11780 (canonicalize_loop_closed_ssa_form): ... this and amended to
11781 swap successor edges for loop exit blocks to make us use
11782 the RPO order we need for initial schedule generation.
11783
11784 2018-01-09 Joseph Myers <joseph@codesourcery.com>
11785
11786 PR tree-optimization/64811
11787 * match.pd: When optimizing comparisons with Inf, avoid
11788 introducing or losing exceptions from comparisons with NaN.
11789
11790 2018-01-09 Martin Liska <mliska@suse.cz>
11791
11792 PR sanitizer/82517
11793 * asan.c (shadow_mem_size): Add gcc_assert.
11794
11795 2018-01-09 Georg-Johann Lay <avr@gjlay.de>
11796
11797 Don't save registers in main().
11798
11799 PR target/83738
11800 * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
11801 * config/avr/avr.opt (-mmain-is-OS_task): New target option.
11802 * config/avr/avr.c (avr_set_current_function): Don't error if
11803 naked, OS_task or OS_main are specified at the same time.
11804 (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
11805 OS_main.
11806 (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
11807 attribute.
11808 * common/config/avr/avr-common.c (avr_option_optimization_table):
11809 Switch on -mmain-is-OS_task for optimizing compilations.
11810
11811 2018-01-09 Richard Biener <rguenther@suse.de>
11812
11813 PR tree-optimization/83572
11814 * graphite.c: Include cfganal.h.
11815 (graphite_transform_loops): Connect infinite loops to exit
11816 and remove fake edges at the end.
11817
11818 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
11819
11820 * ipa-inline.c (edge_badness): Revert accidental checkin.
11821
11822 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
11823
11824 PR ipa/80763
11825 * ipa-comdats.c (set_comdat_group): Only set comdat group of real
11826 symbols; not inline clones.
11827
11828 2018-01-09 Jakub Jelinek <jakub@redhat.com>
11829
11830 PR target/83507
11831 * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
11832 hard registers. Formatting fixes.
11833
11834 PR preprocessor/83722
11835 * gcc.c (try_generate_repro): Pass
11836 &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
11837 &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
11838 do_report_bug.
11839
11840 2018-01-08 Monk Chiang <sh.chiang04@gmail.com>
11841 Kito Cheng <kito.cheng@gmail.com>
11842
11843 * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
11844 (riscv_leaf_function_p): Delete.
11845 (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
11846
11847 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
11848
11849 * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
11850 function.
11851 (do_ifelse): New function.
11852 (do_isel): New function.
11853 (do_sub3): New function.
11854 (do_add3): New function.
11855 (do_load_mask_compare): New function.
11856 (do_overlap_load_compare): New function.
11857 (expand_compare_loop): New function.
11858 (expand_block_compare): Call expand_compare_loop() when appropriate.
11859 * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
11860 option description.
11861 (-mblock-compare-inline-loop-limit): New option.
11862
11863 2018-01-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
11864
11865 PR target/83677
11866 * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
11867 Reverse order of second and third operands in first alternative.
11868 * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
11869 of first and second elements in UNSPEC_VPERMR vector.
11870 (altivec_expand_vec_perm_le): Likewise.
11871
11872 2018-01-08 Jeff Law <law@redhat.com>
11873
11874 PR rtl-optimizatin/81308
11875 * tree-switch-conversion.c (cfg_altered): New file scoped static.
11876 (process_switch): If group_case_labels makes a change, then set
11877 cfg_altered.
11878 (pass_convert_switch::execute): If a switch is converted, then
11879 set cfg_altered. Return TODO_cfg_cleanup if cfg_altered is true.
11880
11881 PR rtl-optimization/81308
11882 * recog.c (split_all_insns): Conditionally cleanup the CFG after
11883 splitting insns.
11884
11885 2018-01-08 Vidya Praveen <vidyapraveen@arm.com>
11886
11887 PR target/83663 - Revert r255946
11888 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
11889 generation for cases where splatting a value is not useful.
11890 * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
11891 across a vec_duplicate and a paradoxical subreg forming a vector
11892 mode to a vec_concat.
11893
11894 2018-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11895
11896 * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
11897 -march=armv8.3-a variants.
11898 * config/arm/t-multilib: Likewise.
11899 * config/arm/t-arm-elf: Likewise. Handle dotprod extension.
11900
11901 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
11902
11903 * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
11904 to generate rtl.
11905 (cceq_ior_compare_complement): Give it a name so I can use it, and
11906 change boolean_or_operator predicate to boolean_operator so it can
11907 be used to generate a crand.
11908 (eqne): New code iterator.
11909 (bd/bd_neg): New code_attrs.
11910 (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
11911 a single define_insn.
11912 (<bd>tf_<mode>): A new insn pattern for the conditional form branch
11913 decrement (bdnzt/bdnzf/bdzt/bdzf).
11914 * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
11915 with the new names of the branch decrement patterns, and added the
11916 names of the branch decrement conditional patterns.
11917
11918 2018-01-08 Richard Biener <rguenther@suse.de>
11919
11920 PR tree-optimization/83563
11921 * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
11922 cache.
11923
11924 2018-01-08 Richard Biener <rguenther@suse.de>
11925
11926 PR middle-end/83713
11927 * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
11928
11929 2018-01-08 Richard Biener <rguenther@suse.de>
11930
11931 PR tree-optimization/83685
11932 * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
11933 references to abnormals.
11934
11935 2018-01-08 Richard Biener <rguenther@suse.de>
11936
11937 PR lto/83719
11938 * dwarf2out.c (output_indirect_strings): Handle empty
11939 skeleton_debug_str_hash.
11940 (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
11941
11942 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
11943
11944 * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
11945 (emit_store_direct): Likewise.
11946 (arc_trampoline_adjust_address): Likewise.
11947 (arc_asm_trampoline_template): New function.
11948 (arc_initialize_trampoline): Use asm_trampoline_template.
11949 (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
11950 * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
11951 * config/arc/arc.md (flush_icache): Delete pattern.
11952
11953 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
11954
11955 * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
11956 * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
11957 munaligned-access.
11958
11959 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
11960
11961 PR target/83681
11962 * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
11963 by not USED_FOR_TARGET.
11964 (make_pass_resolve_sw_modes): Likewise.
11965
11966 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
11967
11968 * config/nios2/nios2.h (nios2_section_threshold): Guard by not
11969 USED_FOR_TARGET.
11970
11971 2018-01-08 Richard Biener <rguenther@suse.de>
11972
11973 PR middle-end/83580
11974 * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
11975
11976 2018-01-08 Richard Biener <rguenther@suse.de>
11977
11978 PR middle-end/83517
11979 * match.pd ((t * 2) / 2) -> t): Add missing :c.
11980
11981 2018-01-06 Aldy Hernandez <aldyh@redhat.com>
11982
11983 PR middle-end/81897
11984 * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
11985 basic blocks with a small number of successors.
11986 (convert_control_dep_chain_into_preds): Improve handling of
11987 forwarder blocks.
11988 (dump_predicates): Split apart into...
11989 (dump_pred_chain): ...here...
11990 (dump_pred_info): ...and here.
11991 (can_one_predicate_be_invalidated_p): Add debugging printfs.
11992 (can_chain_union_be_invalidated_p): Improve check for invalidation
11993 of paths.
11994 (uninit_uses_cannot_happen): Avoid unnecessary if
11995 convert_control_dep_chain_into_preds yielded nothing.
11996
11997 2018-01-06 Martin Sebor <msebor@redhat.com>
11998
11999 PR tree-optimization/83640
12000 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
12001 subtracting negative offset from size.
12002 (builtin_access::overlap): Adjust offset bounds of the access to fall
12003 within the size of the object if possible.
12004
12005 2018-01-06 Richard Sandiford <richard.sandiford@linaro.org>
12006
12007 PR rtl-optimization/83699
12008 * expmed.c (extract_bit_field_1): Restrict the vector usage of
12009 extract_bit_field_as_subreg to cases in which the extracted
12010 value is also a vector.
12011
12012 * lra-constraints.c (process_alt_operands): Test for the equivalence
12013 substitutions when detecting a possible reload cycle.
12014
12015 2018-01-06 Jakub Jelinek <jakub@redhat.com>
12016
12017 PR debug/83480
12018 * toplev.c (process_options): Don't enable debug_nonbind_markers_p
12019 by default if flag_selective_schedling{,2}. Formatting fixes.
12020
12021 PR rtl-optimization/83682
12022 * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
12023 if it has non-VECTOR_MODE element mode.
12024 (vec_duplicate_p): Likewise.
12025
12026 PR middle-end/83694
12027 * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
12028 and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
12029
12030 2018-01-05 Jakub Jelinek <jakub@redhat.com>
12031
12032 PR target/83604
12033 * config/i386/i386-builtin.def
12034 (__builtin_ia32_vgf2p8affineinvqb_v64qi,
12035 __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
12036 Require also OPTION_MASK_ISA_AVX512F in addition to
12037 OPTION_MASK_ISA_GFNI.
12038 (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
12039 __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
12040 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
12041 to OPTION_MASK_ISA_GFNI.
12042 (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
12043 OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
12044 OPTION_MASK_ISA_AVX512BW.
12045 (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
12046 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
12047 addition to OPTION_MASK_ISA_GFNI.
12048 (__builtin_ia32_vgf2p8affineinvqb_v16qi,
12049 __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
12050 Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
12051 to OPTION_MASK_ISA_GFNI.
12052 * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
12053 a requirement for all ISAs rather than any of them with a few
12054 exceptions.
12055 (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
12056 processing.
12057 (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
12058 bitmasks to be enabled with 3 exceptions, instead of requiring any
12059 enabled ISA with lots of exceptions.
12060 * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
12061 vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
12062 Change avx512bw in isa attribute to avx512f.
12063 * config/i386/sgxintrin.h: Add license boilerplate.
12064 * config/i386/vaesintrin.h: Likewise. Fix macro spelling __AVX512F
12065 to __AVX512F__ and __AVX512VL to __AVX512VL__.
12066 (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
12067 _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
12068 defined.
12069 * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
12070 _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
12071 temporarily sse2 rather than sse if not enabled already.
12072
12073 PR target/83604
12074 * config/i386/sse.md (VI248_VLBW): Rename to ...
12075 (VI248_AVX512VL): ... this. Don't guard V32HI with TARGET_AVX512BW.
12076 (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
12077 vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
12078 vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
12079 vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
12080 mode iterator instead of VI248_VLBW.
12081
12082 2018-01-05 Jan Hubicka <hubicka@ucw.cz>
12083
12084 * ipa-fnsummary.c (record_modified_bb_info): Add OP.
12085 (record_modified): Skip clobbers; add debug output.
12086 (param_change_prob): Use sreal frequencies.
12087
12088 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
12089
12090 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
12091 punt for user-aligned variables.
12092
12093 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
12094
12095 * tree-chrec.c (chrec_contains_symbols): Return true for
12096 POLY_INT_CST.
12097
12098 2018-01-05 Sudakshina Das <sudi.das@arm.com>
12099
12100 PR target/82439
12101 * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
12102 of (x|y) == x for BICS pattern.
12103
12104 2018-01-05 Jakub Jelinek <jakub@redhat.com>
12105
12106 PR tree-optimization/83605
12107 * gimple-ssa-strength-reduction.c: Include tree-eh.h.
12108 (find_candidates_dom_walker::before_dom_children): Ignore stmts that
12109 can throw.
12110
12111 2018-01-05 Sebastian Huber <sebastian.huber@embedded-brains.de>
12112
12113 * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
12114 * config/epiphany/rtems.h: New file.
12115
12116 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12117 Uros Bizjak <ubizjak@gmail.com>
12118
12119 PR target/83554
12120 * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
12121 QIreg_operand instead of register_operand predicate.
12122 * config/i386/i386.c (ix86_rop_should_change_byte_p,
12123 set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
12124 comments instead of -fmitigate[-_]rop.
12125
12126 2018-01-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
12127
12128 PR bootstrap/81926
12129 * cgraphunit.c (symbol_table::compile): Switch to text_section
12130 before calling assembly_start debug hook.
12131 * run-rtl-passes.c (run_rtl_passes): Likewise.
12132 Include output.h.
12133
12134 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12135
12136 * tree-vrp.c (extract_range_from_binary_expr_1): Check
12137 range_int_cst_p rather than !symbolic_range_p before calling
12138 extract_range_from_multiplicative_op_1.
12139
12140 2018-01-04 Jeff Law <law@redhat.com>
12141
12142 * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
12143 redundant test in assertion.
12144
12145 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12146
12147 * doc/rtl.texi: Document machine_mode wrapper classes.
12148
12149 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12150
12151 * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
12152 using tree_to_uhwi.
12153
12154 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12155
12156 * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
12157 the VEC_PERM_EXPR fold to fail.
12158
12159 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12160
12161 PR debug/83585
12162 * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
12163 to switched_sections.
12164
12165 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12166
12167 PR target/83680
12168 * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
12169 test for d.testing.
12170
12171 2018-01-04 Peter Bergner <bergner@vnet.ibm.com>
12172
12173 PR target/83387
12174 * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
12175 allow arguments in FP registers if TARGET_HARD_FLOAT is false.
12176
12177 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12178
12179 PR debug/83666
12180 * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
12181 is BLKmode and bitpos not zero or mode change is needed.
12182
12183 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12184
12185 PR target/83675
12186 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
12187 TARGET_VIS2.
12188
12189 2018-01-04 Uros Bizjak <ubizjak@gmail.com>
12190
12191 PR target/83628
12192 * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
12193 instead of MULT rtx. Update all corresponding splitters.
12194 (*saddl_se): Ditto.
12195 (*ssub<modesuffix>): Ditto.
12196 (*ssubl_se): Ditto.
12197 (*cmp_sadd_di): Update split patterns.
12198 (*cmp_sadd_si): Ditto.
12199 (*cmp_sadd_sidi): Ditto.
12200 (*cmp_ssub_di): Ditto.
12201 (*cmp_ssub_si): Ditto.
12202 (*cmp_ssub_sidi): Ditto.
12203 * config/alpha/predicates.md (const23_operand): New predicate.
12204 * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
12205 Look for ASHIFT, not MULT inner operand.
12206 (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
12207
12208 2018-01-04 Martin Liska <mliska@suse.cz>
12209
12210 PR gcov-profile/83669
12211 * gcov.c (output_intermediate_file): Add version to intermediate
12212 gcov file.
12213 * doc/gcov.texi: Document new field 'version' in intermediate
12214 file format. Fix location of '-k' option of gcov command.
12215
12216 2018-01-04 Martin Liska <mliska@suse.cz>
12217
12218 PR ipa/82352
12219 * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
12220
12221 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12222
12223 * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
12224
12225 2018-01-03 Martin Sebor <msebor@redhat.com>
12226
12227 PR tree-optimization/83655
12228 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
12229 checking calls with invalid arguments.
12230
12231 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12232
12233 * tree-vect-stmts.c (vect_get_store_rhs): New function.
12234 (vectorizable_mask_load_store): Delete.
12235 (vectorizable_call): Return false for masked loads and stores.
12236 (vectorizable_store): Handle IFN_MASK_STORE. Use vect_get_store_rhs
12237 instead of gimple_assign_rhs1.
12238 (vectorizable_load): Handle IFN_MASK_LOAD.
12239 (vect_transform_stmt): Don't set is_store for call_vec_info_type.
12240
12241 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12242
12243 * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
12244 split out from..,
12245 (vectorizable_mask_load_store): ...here.
12246 (vectorizable_load): ...and here.
12247
12248 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12249
12250 * tree-vect-stmts.c (vect_build_all_ones_mask)
12251 (vect_build_zero_merge_argument): New functions, split out from...
12252 (vectorizable_load): ...here.
12253
12254 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12255
12256 * tree-vect-stmts.c (vect_check_store_rhs): New function,
12257 split out from...
12258 (vectorizable_mask_load_store): ...here.
12259 (vectorizable_store): ...and here.
12260
12261 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12262
12263 * tree-vect-stmts.c (vect_check_load_store_mask): New function,
12264 split out from...
12265 (vectorizable_mask_load_store): ...here.
12266
12267 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12268
12269 * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
12270 (vect_model_store_cost): Take a vec_load_store_type instead of a
12271 vect_def_type.
12272 * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
12273 (vect_model_store_cost): Take a vec_load_store_type instead of a
12274 vect_def_type.
12275 (vectorizable_mask_load_store): Update accordingly.
12276 (vectorizable_store): Likewise.
12277 * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
12278
12279 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12280
12281 * tree-vect-loop.c (vect_transform_loop): Stub out scalar
12282 IFN_MASK_LOAD calls here rather than...
12283 * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
12284
12285 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12286 Alan Hayward <alan.hayward@arm.com>
12287 David Sherwood <david.sherwood@arm.com>
12288
12289 * expmed.c (extract_bit_field_1): For vector extracts,
12290 fall back to extract_bit_field_as_subreg if vec_extract
12291 isn't available.
12292
12293 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12294 Alan Hayward <alan.hayward@arm.com>
12295 David Sherwood <david.sherwood@arm.com>
12296
12297 * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
12298 they are variable or constant sized.
12299 (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
12300 slots for constant-sized data.
12301
12302 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12303 Alan Hayward <alan.hayward@arm.com>
12304 David Sherwood <david.sherwood@arm.com>
12305
12306 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
12307 handling COND_EXPRs with boolean comparisons, try to find a better
12308 basis for the mask type than the boolean itself.
12309
12310 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12311
12312 * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
12313 is calculated and how it can be overridden.
12314 * genmodes.c (max_bitsize_mode_any_mode): New variable.
12315 (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
12316 if defined.
12317 (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
12318 if nonzero.
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 * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
12325 Remove the mode argument.
12326 (aarch64_simd_valid_immediate): Remove the mode and inverse
12327 arguments.
12328 * config/aarch64/iterators.md (bitsize): New iterator.
12329 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
12330 (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
12331 * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
12332 aarch64_simd_valid_immediate.
12333 * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
12334 (aarch64_reg_or_bic_imm): Likewise.
12335 * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
12336 with an insn_type enum and msl with a modifier_type enum.
12337 Replace element_width with a scalar_mode. Change the shift
12338 to unsigned int. Add constructors for scalar_float_mode and
12339 scalar_int_mode elements.
12340 (aarch64_vect_float_const_representable_p): Delete.
12341 (aarch64_can_const_movi_rtx_p)
12342 (aarch64_simd_scalar_immediate_valid_for_move)
12343 (aarch64_simd_make_constant): Update call to
12344 aarch64_simd_valid_immediate.
12345 (aarch64_advsimd_valid_immediate_hs): New function.
12346 (aarch64_advsimd_valid_immediate): Likewise.
12347 (aarch64_simd_valid_immediate): Remove mode and inverse
12348 arguments. Rewrite to use the above. Use const_vec_duplicate_p
12349 to detect duplicated constants and use aarch64_float_const_zero_rtx_p
12350 and aarch64_float_const_representable_p on the result.
12351 (aarch64_output_simd_mov_immediate): Remove mode argument.
12352 Update call to aarch64_simd_valid_immediate and use of
12353 simd_immediate_info.
12354 (aarch64_output_scalar_simd_mov_immediate): Update call
12355 accordingly.
12356
12357 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12358 Alan Hayward <alan.hayward@arm.com>
12359 David Sherwood <david.sherwood@arm.com>
12360
12361 * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
12362 (mode_nunits): Likewise CONST_MODE_NUNITS.
12363 * machmode.def (ADJUST_NUNITS): Document.
12364 * genmodes.c (mode_data::need_nunits_adj): New field.
12365 (blank_mode): Update accordingly.
12366 (adj_nunits): New variable.
12367 (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
12368 parameter.
12369 (emit_mode_size_inline): Set need_bytesize_adj for all modes
12370 listed in adj_nunits.
12371 (emit_mode_nunits_inline): Set need_nunits_adj for all modes
12372 listed in adj_nunits. Don't emit case statements for such modes.
12373 (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
12374 and CONST_MODE_PRECISION. Make CONST_MODE_SIZE expand to
12375 nothing if adj_nunits is nonnull.
12376 (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
12377 (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
12378 (emit_mode_fbit): Update use of print_maybe_const_decl.
12379 (emit_move_size): Likewise. Treat the array as non-const
12380 if adj_nunits.
12381 (emit_mode_adjustments): Handle adj_nunits.
12382
12383 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12384
12385 * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
12386 * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
12387 (VECTOR_MODES): Use it.
12388 (make_vector_modes): Take the prefix as an argument.
12389
12390 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12391 Alan Hayward <alan.hayward@arm.com>
12392 David Sherwood <david.sherwood@arm.com>
12393
12394 * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
12395 * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
12396 for MODE_VECTOR_BOOL.
12397 * machmode.def (VECTOR_BOOL_MODE): Document.
12398 * genmodes.c (VECTOR_BOOL_MODE): New macro.
12399 (make_vector_bool_mode): New function.
12400 (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
12401 MODE_VECTOR_BOOL.
12402 * lto-streamer-in.c (lto_input_mode_table): Likewise.
12403 * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
12404 Likewise.
12405 * stor-layout.c (int_mode_for_mode): Likewise.
12406 * tree.c (build_vector_type_for_mode): Likewise.
12407 * varasm.c (output_constant_pool_2): Likewise.
12408 * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
12409 CONSTM1_RTX (BImode) are the same thing. Initialize const_tiny_rtx
12410 for MODE_VECTOR_BOOL.
12411 * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
12412 of mode class checks.
12413 * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
12414 instead of a list of mode class checks.
12415 (expand_vector_scalar_condition): Likewise.
12416 (type_for_widest_vector_mode): Handle BImode as an inner mode.
12417
12418 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12419 Alan Hayward <alan.hayward@arm.com>
12420 David Sherwood <david.sherwood@arm.com>
12421
12422 * machmode.h (mode_size): Change from unsigned short to
12423 poly_uint16_pod.
12424 (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
12425 (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
12426 or if measurement_type is not polynomial.
12427 (fixed_size_mode::includes_p): Check for constant-sized modes.
12428 * genmodes.c (emit_mode_size_inline): Make mode_size_inline
12429 return a poly_uint16 rather than an unsigned short.
12430 (emit_mode_size): Change the type of mode_size from unsigned short
12431 to poly_uint16_pod. Use ZERO_COEFFS for the initializer.
12432 (emit_mode_adjustments): Cope with polynomial vector sizes.
12433 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12434 for GET_MODE_SIZE.
12435 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12436 for GET_MODE_SIZE.
12437 * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
12438 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
12439 * caller-save.c (setup_save_areas): Likewise.
12440 (replace_reg_with_saved_mem): Likewise.
12441 * calls.c (emit_library_call_value_1): Likewise.
12442 * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
12443 * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
12444 (gen_lowpart_for_combine): Likewise.
12445 * convert.c (convert_to_integer_1): Likewise.
12446 * cse.c (equiv_constant, cse_insn): Likewise.
12447 * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
12448 (cselib_subst_to_values): Likewise.
12449 * dce.c (word_dce_process_block): Likewise.
12450 * df-problems.c (df_word_lr_mark_ref): Likewise.
12451 * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
12452 * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
12453 (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
12454 (rtl_for_decl_location): Likewise.
12455 * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
12456 * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
12457 * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
12458 (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
12459 (expand_expr_real_1): Likewise.
12460 * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
12461 (pad_below): Likewise.
12462 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
12463 * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
12464 * ira.c (get_subreg_tracking_sizes): Likewise.
12465 * ira-build.c (ira_create_allocno_objects): Likewise.
12466 * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
12467 (ira_sort_regnos_for_alter_reg): Likewise.
12468 * ira-costs.c (record_operand_costs): Likewise.
12469 * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
12470 (resolve_simple_move): Likewise.
12471 * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
12472 (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
12473 (lra_constraints): Likewise.
12474 (CONST_POOL_OK_P): Reject variable-sized modes.
12475 * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
12476 (add_pseudo_to_slot, lra_spill): Likewise.
12477 * omp-low.c (omp_clause_aligned_alignment): Likewise.
12478 * optabs-query.c (get_best_extraction_insn): Likewise.
12479 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
12480 * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
12481 (expand_mult_highpart, valid_multiword_target_p): Likewise.
12482 * recog.c (offsettable_address_addr_space_p): Likewise.
12483 * regcprop.c (maybe_mode_change): Likewise.
12484 * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
12485 * regrename.c (build_def_use): Likewise.
12486 * regstat.c (dump_reg_info): Likewise.
12487 * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
12488 (find_reloads, find_reloads_subreg_address): Likewise.
12489 * reload1.c (eliminate_regs_1): Likewise.
12490 * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
12491 * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
12492 (simplify_binary_operation_1, simplify_subreg): Likewise.
12493 * targhooks.c (default_function_arg_padding): Likewise.
12494 (default_hard_regno_nregs, default_class_max_nregs): Likewise.
12495 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
12496 (verify_gimple_assign_ternary): Likewise.
12497 * tree-inline.c (estimate_move_cost): Likewise.
12498 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12499 * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
12500 (get_address_cost_ainc): Likewise.
12501 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
12502 (vect_supportable_dr_alignment): Likewise.
12503 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
12504 (vectorizable_reduction): Likewise.
12505 * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
12506 (vectorizable_operation, vectorizable_load): Likewise.
12507 * tree.c (build_same_sized_truth_vector_type): Likewise.
12508 * valtrack.c (cleanup_auto_inc_dec): Likewise.
12509 * var-tracking.c (emit_note_insn_var_location): Likewise.
12510 * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
12511 (ADDR_VEC_ALIGN): Likewise.
12512
12513 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12514 Alan Hayward <alan.hayward@arm.com>
12515 David Sherwood <david.sherwood@arm.com>
12516
12517 * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
12518 unsigned short.
12519 (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
12520 or if measurement_type is polynomial.
12521 * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
12522 * combine.c (make_extraction): Likewise.
12523 * dse.c (find_shift_sequence): Likewise.
12524 * dwarf2out.c (mem_loc_descriptor): Likewise.
12525 * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
12526 (extract_bit_field, extract_low_bits): Likewise.
12527 * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
12528 (optimize_bitfield_assignment_op, expand_assignment): Likewise.
12529 (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
12530 * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
12531 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
12532 * reload.c (find_reloads): Likewise.
12533 * reload1.c (alter_reg): Likewise.
12534 * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
12535 * targhooks.c (default_secondary_memory_needed_mode): Likewise.
12536 * tree-if-conv.c (predicate_mem_writes): Likewise.
12537 * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
12538 * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
12539 * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
12540 * valtrack.c (dead_debug_insert_temp): Likewise.
12541 * varasm.c (mergeable_constant_section): Likewise.
12542 * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
12543
12544 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12545 Alan Hayward <alan.hayward@arm.com>
12546 David Sherwood <david.sherwood@arm.com>
12547
12548 * expr.c (expand_assignment): Cope with polynomial mode sizes
12549 when assigning to a CONCAT.
12550
12551 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12552 Alan Hayward <alan.hayward@arm.com>
12553 David Sherwood <david.sherwood@arm.com>
12554
12555 * machmode.h (mode_precision): Change from unsigned short to
12556 poly_uint16_pod.
12557 (mode_to_precision): Return a poly_uint16 rather than an unsigned
12558 short.
12559 (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
12560 or if measurement_type is not polynomial.
12561 (HWI_COMPUTABLE_MODE_P): Turn into a function. Optimize the case
12562 in which the mode is already known to be a scalar_int_mode.
12563 * genmodes.c (emit_mode_precision): Change the type of mode_precision
12564 from unsigned short to poly_uint16_pod. Use ZERO_COEFFS for the
12565 initializer.
12566 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12567 for GET_MODE_PRECISION.
12568 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12569 for GET_MODE_PRECISION.
12570 * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
12571 as polynomial.
12572 (try_combine, find_split_point, combine_simplify_rtx): Likewise.
12573 (expand_field_assignment, make_extraction): Likewise.
12574 (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
12575 (get_last_value): Likewise.
12576 * convert.c (convert_to_integer_1): Likewise.
12577 * cse.c (cse_insn): Likewise.
12578 * expr.c (expand_expr_real_1): Likewise.
12579 * lra-constraints.c (simplify_operand_subreg): Likewise.
12580 * optabs-query.c (can_atomic_load_p): Likewise.
12581 * optabs.c (expand_atomic_load): Likewise.
12582 (expand_atomic_store): Likewise.
12583 * ree.c (combine_reaching_defs): Likewise.
12584 * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
12585 * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
12586 * tree.h (type_has_mode_precision_p): Likewise.
12587 * ubsan.c (instrument_si_overflow): Likewise.
12588
12589 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12590 Alan Hayward <alan.hayward@arm.com>
12591 David Sherwood <david.sherwood@arm.com>
12592
12593 * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
12594 polynomial numbers of units.
12595 (SET_TYPE_VECTOR_SUBPARTS): Likewise.
12596 (valid_vector_subparts_p): New function.
12597 (build_vector_type): Remove temporary shim and take the number
12598 of units as a poly_uint64 rather than an int.
12599 (build_opaque_vector_type): Take the number of units as a
12600 poly_uint64 rather than an int.
12601 * tree.c (build_vector_from_ctor): Handle polynomial
12602 TYPE_VECTOR_SUBPARTS.
12603 (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
12604 (uniform_vector_p, vector_type_mode, build_vector): Likewise.
12605 (build_vector_from_val): If the number of units is variable,
12606 use build_vec_duplicate_cst for constant operands and
12607 VEC_DUPLICATE_EXPR otherwise.
12608 (make_vector_type): Remove temporary is_constant ().
12609 (build_vector_type, build_opaque_vector_type): Take the number of
12610 units as a poly_uint64 rather than an int.
12611 (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
12612 VECTOR_CST_NELTS.
12613 * cfgexpand.c (expand_debug_expr): Likewise.
12614 * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
12615 (store_constructor, expand_expr_real_1): Likewise.
12616 (const_scalar_mask_from_tree): Likewise.
12617 * fold-const-call.c (fold_const_reduction): Likewise.
12618 * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
12619 (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
12620 (native_encode_vector, vec_cst_ctor_to_array): Likewise.
12621 (fold_relational_const): Likewise.
12622 (native_interpret_vector): Likewise. Change the size from an
12623 int to an unsigned int.
12624 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
12625 TYPE_VECTOR_SUBPARTS.
12626 (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
12627 (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
12628 duplicating a non-constant operand into a variable-length vector.
12629 * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
12630 TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
12631 * ipa-icf.c (sem_variable::equals): Likewise.
12632 * match.pd: Likewise.
12633 * omp-simd-clone.c (simd_clone_subparts): Likewise.
12634 * print-tree.c (print_node): Likewise.
12635 * stor-layout.c (layout_type): Likewise.
12636 * targhooks.c (default_builtin_vectorization_cost): Likewise.
12637 * tree-cfg.c (verify_gimple_comparison): Likewise.
12638 (verify_gimple_assign_binary): Likewise.
12639 (verify_gimple_assign_ternary): Likewise.
12640 (verify_gimple_assign_single): Likewise.
12641 * tree-pretty-print.c (dump_generic_node): Likewise.
12642 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12643 (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
12644 * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
12645 (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
12646 (vect_shift_permute_load_chain): Likewise.
12647 * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
12648 (expand_vector_condition, optimize_vector_constructor): Likewise.
12649 (lower_vec_perm, get_compute_type): Likewise.
12650 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
12651 (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
12652 * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
12653 (vect_recog_mask_conversion_pattern): Likewise.
12654 * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
12655 (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
12656 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
12657 (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
12658 (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
12659 (vectorizable_shift, vectorizable_operation, vectorizable_store)
12660 (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
12661 (supportable_widening_operation): Likewise.
12662 (supportable_narrowing_operation): Likewise.
12663 * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
12664 Likewise.
12665 * varasm.c (output_constant): Likewise.
12666
12667 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12668 Alan Hayward <alan.hayward@arm.com>
12669 David Sherwood <david.sherwood@arm.com>
12670
12671 * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
12672 so that both the length == 3 and length != 3 cases set up their
12673 own permute vectors. Add comments explaining why we know the
12674 number of elements is constant.
12675 (vect_permute_load_chain): Likewise.
12676
12677 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12678 Alan Hayward <alan.hayward@arm.com>
12679 David Sherwood <david.sherwood@arm.com>
12680
12681 * machmode.h (mode_nunits): Change from unsigned char to
12682 poly_uint16_pod.
12683 (ONLY_FIXED_SIZE_MODES): New macro.
12684 (pod_mode::measurement_type, scalar_int_mode::measurement_type)
12685 (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
12686 (complex_mode::measurement_type, fixed_size_mode::measurement_type):
12687 New typedefs.
12688 (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
12689 (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
12690 or if measurement_type is not polynomial.
12691 * genmodes.c (ZERO_COEFFS): New macro.
12692 (emit_mode_nunits_inline): Make mode_nunits_inline return a
12693 poly_uint16.
12694 (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
12695 Use ZERO_COEFFS when emitting initializers.
12696 * data-streamer.h (bp_pack_poly_value): New function.
12697 (bp_unpack_poly_value): Likewise.
12698 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12699 for GET_MODE_NUNITS.
12700 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12701 for GET_MODE_NUNITS.
12702 * tree.c (make_vector_type): Remove temporary shim and make
12703 the real function take the number of units as a poly_uint64
12704 rather than an int.
12705 (build_vector_type_for_mode): Handle polynomial nunits.
12706 * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
12707 * emit-rtl.c (const_vec_series_p_1): Likewise.
12708 (gen_rtx_CONST_VECTOR): Likewise.
12709 * fold-const.c (test_vec_duplicate_folding): Likewise.
12710 * genrecog.c (validate_pattern): Likewise.
12711 * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
12712 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
12713 * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
12714 (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
12715 (expand_vec_cond_expr, expand_mult_highpart): Likewise.
12716 * rtlanal.c (subreg_get_info): Likewise.
12717 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
12718 (vect_grouped_load_supported): Likewise.
12719 * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
12720 * tree-vect-loop.c (have_whole_vector_shift): Likewise.
12721 * simplify-rtx.c (simplify_unary_operation_1): Likewise.
12722 (simplify_const_unary_operation, simplify_binary_operation_1)
12723 (simplify_const_binary_operation, simplify_ternary_operation)
12724 (test_vector_ops_duplicate, test_vector_ops): Likewise.
12725 (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
12726 instead of CONST_VECTOR_NUNITS.
12727 * varasm.c (output_constant_pool_2): Likewise.
12728 * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
12729 explicit-encoded elements in the XVEC for variable-length vectors.
12730
12731 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12732
12733 * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
12734
12735 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12736 Alan Hayward <alan.hayward@arm.com>
12737 David Sherwood <david.sherwood@arm.com>
12738
12739 * coretypes.h (fixed_size_mode): Declare.
12740 (fixed_size_mode_pod): New typedef.
12741 * builtins.h (target_builtins::x_apply_args_mode)
12742 (target_builtins::x_apply_result_mode): Change type to
12743 fixed_size_mode_pod.
12744 * builtins.c (apply_args_size, apply_result_size, result_vector)
12745 (expand_builtin_apply_args_1, expand_builtin_apply)
12746 (expand_builtin_return): Update accordingly.
12747
12748 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12749
12750 * cse.c (hash_rtx_cb): Hash only the encoded elements.
12751 * cselib.c (cselib_hash_rtx): Likewise.
12752 * expmed.c (make_tree): Build VECTOR_CSTs directly from the
12753 CONST_VECTOR encoding.
12754
12755 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12756 Jeff Law <law@redhat.com>
12757
12758 PR target/83641
12759 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
12760 noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
12761 only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
12762 and add REG_CFA_ADJUST_CFA notes in that case to both insns.
12763
12764 PR target/83641
12765 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
12766 explicitly probe *sp in a noreturn function if there were any callee
12767 register saves or frame pointer is needed.
12768
12769 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12770
12771 PR debug/83621
12772 * cfgexpand.c (expand_debug_expr): Return NULL if mode is
12773 BLKmode for ternary, binary or unary expressions.
12774
12775 PR debug/83645
12776 * var-tracking.c (delete_vta_debug_insn): New inline function.
12777 (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
12778 insns from get_insns () to NULL instead of each bb separately.
12779 Use delete_vta_debug_insn. No longer static.
12780 (vt_debug_insns_local, variable_tracking_main_1): Adjust
12781 delete_vta_debug_insns callers.
12782 * rtl.h (delete_vta_debug_insns): Declare.
12783 * final.c (rest_of_handle_final): Call delete_vta_debug_insns
12784 instead of variable_tracking_main.
12785
12786 2018-01-03 Martin Sebor <msebor@redhat.com>
12787
12788 PR tree-optimization/83603
12789 * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
12790 arguments past the endof the argument list in functions declared
12791 without a prototype.
12792 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
12793 Avoid checking when arguments are null.
12794
12795 2018-01-03 Martin Sebor <msebor@redhat.com>
12796
12797 PR c/83559
12798 * doc/extend.texi (attribute const): Fix a typo.
12799 * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
12800 issuing -Wsuggest-attribute for void functions.
12801
12802 2018-01-03 Martin Sebor <msebor@redhat.com>
12803
12804 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
12805 offset_int::from instead of wide_int::to_shwi.
12806 (maybe_diag_overlap): Remove assertion.
12807 Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
12808 * gimple-ssa-sprintf.c (format_directive): Same.
12809 (parse_directive): Same.
12810 (sprintf_dom_walker::compute_format_length): Same.
12811 (try_substitute_return_value): Same.
12812
12813 2018-01-03 Jeff Law <law@redhat.com>
12814
12815 PR middle-end/83654
12816 * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
12817 non-constant residual for zero at runtime and avoid probing in
12818 that case. Reorganize code for trailing problem to mirror handling
12819 of the residual.
12820
12821 2018-01-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12822
12823 PR tree-optimization/83501
12824 * tree-ssa-strlen.c (get_string_cst): New.
12825 (handle_char_store): Call get_string_cst.
12826
12827 2018-01-03 Martin Liska <mliska@suse.cz>
12828
12829 PR tree-optimization/83593
12830 * tree-ssa-strlen.c: Include tree-cfg.h.
12831 (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
12832 (strlen_dom_walker): Add new member variable m_cleanup_cfg.
12833 (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
12834 to false.
12835 (strlen_dom_walker::before_dom_children): Call
12836 gimple_purge_dead_eh_edges. Dump tranformation with details
12837 dump flags.
12838 (strlen_dom_walker::before_dom_children): Update call by adding
12839 new argument cleanup_eh.
12840 (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
12841
12842 2018-01-03 Martin Liska <mliska@suse.cz>
12843
12844 PR ipa/83549
12845 * cif-code.def (VARIADIC_THUNK): New enum value.
12846 * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
12847 thunks.
12848
12849 2018-01-03 Jan Beulich <jbeulich@suse.com>
12850
12851 * sse.md (mov<mode>_internal): Tighten condition for when to use
12852 vmovdqu<ssescalarsize> for TI and OI modes.
12853
12854 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12855
12856 Update copyright years.
12857
12858 2018-01-03 Martin Liska <mliska@suse.cz>
12859
12860 PR ipa/83594
12861 * ipa-visibility.c (function_and_variable_visibility): Skip
12862 functions with noipa attribure.
12863
12864 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12865
12866 * gcc.c (process_command): Update copyright notice dates.
12867 * gcov-dump.c (print_version): Ditto.
12868 * gcov.c (print_version): Ditto.
12869 * gcov-tool.c (print_version): Ditto.
12870 * gengtype.c (create_file): Ditto.
12871 * doc/cpp.texi: Bump @copying's copyright year.
12872 * doc/cppinternals.texi: Ditto.
12873 * doc/gcc.texi: Ditto.
12874 * doc/gccint.texi: Ditto.
12875 * doc/gcov.texi: Ditto.
12876 * doc/install.texi: Ditto.
12877 * doc/invoke.texi: Ditto.
12878
12879 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12880
12881 * vector-builder.h (vector_builder::m_full_nelts): Change from
12882 unsigned int to poly_uint64.
12883 (vector_builder::full_nelts): Update prototype accordingly.
12884 (vector_builder::new_vector): Likewise.
12885 (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
12886 (vector_builder::operator ==): Likewise.
12887 (vector_builder::finalize): Likewise.
12888 * int-vector-builder.h (int_vector_builder::int_vector_builder):
12889 Take the number of elements as a poly_uint64 rather than an
12890 unsigned int.
12891 * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
12892 from unsigned int to poly_uint64.
12893 (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
12894 (vec_perm_indices::new_vector): Likewise.
12895 (vec_perm_indices::length): Likewise.
12896 (vec_perm_indices::nelts_per_input): Likewise.
12897 (vec_perm_indices::input_nelts): Likewise.
12898 * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
12899 number of elements per input as a poly_uint64 rather than an
12900 unsigned int. Use the original encoding for variable-length
12901 vectors, rather than clamping each individual element.
12902 For the second and subsequent elements in each pattern,
12903 clamp the step and base before clamping their sum.
12904 (vec_perm_indices::series_p): Handle polynomial element counts.
12905 (vec_perm_indices::all_in_range_p): Likewise.
12906 (vec_perm_indices_to_tree): Likewise.
12907 (vec_perm_indices_to_rtx): Likewise.
12908 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
12909 * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
12910 (tree_vector_builder::new_binary_operation): Handle polynomial
12911 element counts. Return false if we need to know the number
12912 of elements at compile time.
12913 * fold-const.c (fold_vec_perm): Punt if the number of elements
12914 isn't known at compile time.
12915
12916 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12917
12918 * vec-perm-indices.h (vec_perm_builder): Change element type
12919 from HOST_WIDE_INT to poly_int64.
12920 (vec_perm_indices::element_type): Update accordingly.
12921 (vec_perm_indices::clamp): Handle polynomial element_types.
12922 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
12923 (vec_perm_indices::all_in_range_p): Likewise.
12924 (tree_to_vec_perm_builder): Check for poly_int64 trees rather
12925 than shwi trees.
12926 * vector-builder.h (vector_builder::stepped_sequence_p): Handle
12927 polynomial vec_perm_indices element types.
12928 * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
12929 * fold-const.c (fold_vec_perm): Likewise.
12930 * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
12931 * tree-vect-generic.c (lower_vec_perm): Likewise.
12932 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
12933 * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
12934 element type to HOST_WIDE_INT.
12935
12936 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12937 Alan Hayward <alan.hayward@arm.com>
12938 David Sherwood <david.sherwood@arm.com>
12939
12940 * alias.c (addr_side_effect_eval): Take the size as a poly_int64
12941 rather than an int. Use plus_constant.
12942 (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
12943 Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
12944
12945 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12946 Alan Hayward <alan.hayward@arm.com>
12947 David Sherwood <david.sherwood@arm.com>
12948
12949 * calls.c (emit_call_1, expand_call): Change struct_value_size from
12950 a HOST_WIDE_INT to a poly_int64.
12951
12952 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12953 Alan Hayward <alan.hayward@arm.com>
12954 David Sherwood <david.sherwood@arm.com>
12955
12956 * calls.c (load_register_parameters): Cope with polynomial
12957 mode sizes. Require a constant size for BLKmode parameters
12958 that aren't described by a PARALLEL. If BLOCK_REG_PADDING
12959 forces a parameter to be padded at the lsb end in order to
12960 fill a complete number of words, require the parameter size
12961 to be ordered wrt UNITS_PER_WORD.
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 * reload1.c (spill_stack_slot_width): Change element type
12968 from unsigned int to poly_uint64_pod.
12969 (alter_reg): Treat mode sizes as polynomial.
12970
12971 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12972 Alan Hayward <alan.hayward@arm.com>
12973 David Sherwood <david.sherwood@arm.com>
12974
12975 * reload.c (complex_word_subreg_p): New function.
12976 (reload_inner_reg_of_subreg, push_reload): Use it.
12977
12978 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12979 Alan Hayward <alan.hayward@arm.com>
12980 David Sherwood <david.sherwood@arm.com>
12981
12982 * lra-constraints.c (process_alt_operands): Reject matched
12983 operands whose sizes aren't ordered.
12984 (match_reload): Refer to this check here.
12985
12986 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12987 Alan Hayward <alan.hayward@arm.com>
12988 David Sherwood <david.sherwood@arm.com>
12989
12990 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
12991 that the mode size is in the set {1, 2, 4, 8, 16}.
12992
12993 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12994 Alan Hayward <alan.hayward@arm.com>
12995 David Sherwood <david.sherwood@arm.com>
12996
12997 * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
12998 Use plus_constant instead of gen_rtx_PLUS.
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 * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
13005 * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
13006 * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
13007 * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
13008 * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
13009 * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
13010 * config/i386/i386-protos.h (ix86_push_rounding): Declare.
13011 * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
13012 * config/i386/i386.c (ix86_push_rounding): ...this new function.
13013 * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
13014 a poly_int64.
13015 * config/m32c/m32c.c (m32c_push_rounding): Likewise.
13016 * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
13017 * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
13018 * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
13019 * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
13020 * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
13021 * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
13022 * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
13023 * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
13024 * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
13025 function.
13026 * expr.c (emit_move_resolve_push): Treat the input and result
13027 of PUSH_ROUNDING as a poly_int64.
13028 (emit_move_complex_push, emit_single_push_insn_1): Likewise.
13029 (emit_push_insn): Likewise.
13030 * lra-eliminations.c (mark_not_eliminable): Likewise.
13031 * recog.c (push_operand): Likewise.
13032 * reload1.c (elimination_effects): Likewise.
13033 * rtlanal.c (nonzero_bits1): Likewise.
13034 * calls.c (store_one_arg): Likewise. Require the padding to be
13035 known at compile time.
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 * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
13042 Use plus_constant instead of gen_rtx_PLUS.
13043
13044 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13045 Alan Hayward <alan.hayward@arm.com>
13046 David Sherwood <david.sherwood@arm.com>
13047
13048 * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
13049 rather than an int.
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 * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
13056 instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
13057 via stack temporaries. Treat the mode size as polynomial too.
13058
13059 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13060 Alan Hayward <alan.hayward@arm.com>
13061 David Sherwood <david.sherwood@arm.com>
13062
13063 * expr.c (expand_expr_real_2): When handling conversions involving
13064 unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
13065 multiplying int_size_in_bytes by BITS_PER_UNIT. Treat GET_MODE_BISIZE
13066 as a poly_uint64 too.
13067
13068 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13069 Alan Hayward <alan.hayward@arm.com>
13070 David Sherwood <david.sherwood@arm.com>
13071
13072 * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
13073
13074 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13075 Alan Hayward <alan.hayward@arm.com>
13076 David Sherwood <david.sherwood@arm.com>
13077
13078 * combine.c (can_change_dest_mode): Handle polynomial
13079 REGMODE_NATURAL_SIZE.
13080 * expmed.c (store_bit_field_1): Likewise.
13081 * expr.c (store_constructor): Likewise.
13082 * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
13083 and polynomial REGMODE_NATURAL_SIZE.
13084 (gen_lowpart_common): Likewise.
13085 * reginfo.c (record_subregs_of_mode): Likewise.
13086 * rtlanal.c (read_modify_subreg_p): Likewise.
13087
13088 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13089 Alan Hayward <alan.hayward@arm.com>
13090 David Sherwood <david.sherwood@arm.com>
13091
13092 * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
13093 numbers of elements.
13094
13095 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13096 Alan Hayward <alan.hayward@arm.com>
13097 David Sherwood <david.sherwood@arm.com>
13098
13099 * match.pd: Cope with polynomial numbers of vector elements.
13100
13101 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13102 Alan Hayward <alan.hayward@arm.com>
13103 David Sherwood <david.sherwood@arm.com>
13104
13105 * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
13106 in a POINTER_PLUS_EXPR.
13107
13108 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13109 Alan Hayward <alan.hayward@arm.com>
13110 David Sherwood <david.sherwood@arm.com>
13111
13112 * omp-simd-clone.c (simd_clone_subparts): New function.
13113 (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
13114 (ipa_simd_modify_function_body): Likewise.
13115
13116 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13117 Alan Hayward <alan.hayward@arm.com>
13118 David Sherwood <david.sherwood@arm.com>
13119
13120 * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
13121 (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
13122 (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
13123 (expand_vector_condition, vector_element): Likewise.
13124 (subparts_gt): New function.
13125 (get_compute_type): Use subparts_gt.
13126 (count_type_subparts): Delete.
13127 (expand_vector_operations_1): Use subparts_gt instead of
13128 count_type_subparts.
13129
13130 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13131 Alan Hayward <alan.hayward@arm.com>
13132 David Sherwood <david.sherwood@arm.com>
13133
13134 * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
13135 (vect_compile_time_alias): ...this new function. Do the calculation
13136 on poly_ints rather than trees.
13137 (vect_prune_runtime_alias_test_list): Update call accordingly.
13138
13139 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13140 Alan Hayward <alan.hayward@arm.com>
13141 David Sherwood <david.sherwood@arm.com>
13142
13143 * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
13144 numbers of units.
13145 (vect_schedule_slp_instance): Likewise.
13146
13147 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13148 Alan Hayward <alan.hayward@arm.com>
13149 David Sherwood <david.sherwood@arm.com>
13150
13151 * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
13152 constant and extern definitions for variable-length vectors.
13153 (vect_get_constant_vectors): Note that the number of units
13154 is known to be constant.
13155
13156 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13157 Alan Hayward <alan.hayward@arm.com>
13158 David Sherwood <david.sherwood@arm.com>
13159
13160 * tree-vect-stmts.c (vectorizable_conversion): Treat the number
13161 of units as polynomial. Choose between WIDE and NARROW based
13162 on multiple_p.
13163
13164 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13165 Alan Hayward <alan.hayward@arm.com>
13166 David Sherwood <david.sherwood@arm.com>
13167
13168 * tree-vect-stmts.c (simd_clone_subparts): New function.
13169 (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
13170
13171 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13172 Alan Hayward <alan.hayward@arm.com>
13173 David Sherwood <david.sherwood@arm.com>
13174
13175 * tree-vect-stmts.c (vectorizable_call): Treat the number of
13176 vectors as polynomial. Use build_index_vector for
13177 IFN_GOMP_SIMD_LANE.
13178
13179 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13180 Alan Hayward <alan.hayward@arm.com>
13181 David Sherwood <david.sherwood@arm.com>
13182
13183 * tree-vect-stmts.c (get_load_store_type): Treat the number of
13184 units as polynomial. Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
13185 for variable-length vectors.
13186 (vectorizable_mask_load_store): Treat the number of units as
13187 polynomial, asserting that it is constant if the condition has
13188 already been enforced.
13189 (vectorizable_store, vectorizable_load): Likewise.
13190
13191 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13192 Alan Hayward <alan.hayward@arm.com>
13193 David Sherwood <david.sherwood@arm.com>
13194
13195 * tree-vect-loop.c (vectorizable_live_operation): Treat the number
13196 of units as polynomial. Punt if we can't tell at compile time
13197 which vector contains the final result.
13198
13199 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13200 Alan Hayward <alan.hayward@arm.com>
13201 David Sherwood <david.sherwood@arm.com>
13202
13203 * tree-vect-loop.c (vectorizable_induction): Treat the number
13204 of units as polynomial. Punt on SLP inductions. Use an integer
13205 VEC_SERIES_EXPR for variable-length integer reductions. Use a
13206 cast of such a series for variable-length floating-point
13207 reductions.
13208
13209 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13210 Alan Hayward <alan.hayward@arm.com>
13211 David Sherwood <david.sherwood@arm.com>
13212
13213 * tree.h (build_index_vector): Declare.
13214 * tree.c (build_index_vector): New function.
13215 * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
13216 of units as polynomial, forcibly converting it to a constant if
13217 vectorizable_reduction has already enforced the condition.
13218 (vect_create_epilog_for_reduction): Likewise. Use build_index_vector
13219 to create a {1,2,3,...} vector.
13220 (vectorizable_reduction): Treat the number of units as polynomial.
13221 Choose vectype_in based on the largest scalar element size rather
13222 than the smallest number of units. Enforce the restrictions
13223 relied on above.
13224
13225 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13226 Alan Hayward <alan.hayward@arm.com>
13227 David Sherwood <david.sherwood@arm.com>
13228
13229 * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
13230 number of units as polynomial.
13231
13232 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13233 Alan Hayward <alan.hayward@arm.com>
13234 David Sherwood <david.sherwood@arm.com>
13235
13236 * target.h (vector_sizes, auto_vector_sizes): New typedefs.
13237 * target.def (autovectorize_vector_sizes): Return the vector sizes
13238 by pointer, using vector_sizes rather than a bitmask.
13239 * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
13240 * targhooks.c (default_autovectorize_vector_sizes): Likewise.
13241 * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
13242 Likewise.
13243 * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
13244 * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
13245 * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
13246 * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
13247 * omp-general.c (omp_max_vf): Likewise.
13248 * omp-low.c (omp_clause_aligned_alignment): Likewise.
13249 * optabs-query.c (can_vec_mask_load_store_p): Likewise.
13250 * tree-vect-loop.c (vect_analyze_loop): Likewise.
13251 * tree-vect-slp.c (vect_slp_bb): Likewise.
13252 * doc/tm.texi: Regenerate.
13253 * tree-vectorizer.h (current_vector_size): Change from an unsigned int
13254 to a poly_uint64.
13255 * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
13256 the vector size as a poly_uint64 rather than an unsigned int.
13257 (current_vector_size): Change from an unsigned int to a poly_uint64.
13258 (get_vectype_for_scalar_type): Update accordingly.
13259 * tree.h (build_truth_vector_type): Take the size and number of
13260 units as a poly_uint64 rather than an unsigned int.
13261 (build_vector_type): Add a temporary overload that takes
13262 the number of units as a poly_uint64 rather than an unsigned int.
13263 * tree.c (make_vector_type): Likewise.
13264 (build_truth_vector_type): Take the number of units as a poly_uint64
13265 rather than an unsigned int.
13266
13267 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13268 Alan Hayward <alan.hayward@arm.com>
13269 David Sherwood <david.sherwood@arm.com>
13270
13271 * target.def (get_mask_mode): Take the number of units and length
13272 as poly_uint64s rather than unsigned ints.
13273 * targhooks.h (default_get_mask_mode): Update accordingly.
13274 * targhooks.c (default_get_mask_mode): Likewise.
13275 * config/i386/i386.c (ix86_get_mask_mode): Likewise.
13276 * doc/tm.texi: Regenerate.
13277
13278 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13279 Alan Hayward <alan.hayward@arm.com>
13280 David Sherwood <david.sherwood@arm.com>
13281
13282 * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
13283 * omp-general.c (omp_max_vf): Likewise.
13284 * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
13285 (expand_omp_simd): Handle polynomial safelen.
13286 * omp-low.c (omplow_simd_context): Add a default constructor.
13287 (omplow_simd_context::max_vf): Change from int to poly_uint64.
13288 (lower_rec_simd_input_clauses): Update accordingly.
13289 (lower_rec_input_clauses): Likewise.
13290
13291 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13292 Alan Hayward <alan.hayward@arm.com>
13293 David Sherwood <david.sherwood@arm.com>
13294
13295 * tree-vectorizer.h (vect_nunits_for_cost): New function.
13296 * tree-vect-loop.c (vect_model_reduction_cost): Use it.
13297 * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
13298 (vect_analyze_slp_cost): Likewise.
13299 * tree-vect-stmts.c (vect_model_store_cost): Likewise.
13300 (vect_model_load_cost): Likewise.
13301
13302 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13303 Alan Hayward <alan.hayward@arm.com>
13304 David Sherwood <david.sherwood@arm.com>
13305
13306 * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
13307 (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
13308 from an unsigned int * to a poly_uint64_pod *.
13309 (calculate_unrolling_factor): New function.
13310 (vect_analyze_slp_instance): Use it. Track polynomial max_nunits.
13311
13312 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13313 Alan Hayward <alan.hayward@arm.com>
13314 David Sherwood <david.sherwood@arm.com>
13315
13316 * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
13317 from an unsigned int to a poly_uint64.
13318 (_loop_vec_info::slp_unrolling_factor): Likewise.
13319 (_loop_vec_info::vectorization_factor): Change from an int
13320 to a poly_uint64.
13321 (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
13322 (vect_get_num_vectors): New function.
13323 (vect_update_max_nunits, vect_vf_for_cost): Likewise.
13324 (vect_get_num_copies): Use vect_get_num_vectors.
13325 (vect_analyze_data_ref_dependences): Change max_vf from an int *
13326 to an unsigned int *.
13327 (vect_analyze_data_refs): Change min_vf from an int * to a
13328 poly_uint64 *.
13329 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
13330 than an unsigned HOST_WIDE_INT.
13331 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
13332 (vect_analyze_data_ref_dependence): Change max_vf from an int *
13333 to an unsigned int *.
13334 (vect_analyze_data_ref_dependences): Likewise.
13335 (vect_compute_data_ref_alignment): Handle polynomial vf.
13336 (vect_enhance_data_refs_alignment): Likewise.
13337 (vect_prune_runtime_alias_test_list): Likewise.
13338 (vect_shift_permute_load_chain): Likewise.
13339 (vect_supportable_dr_alignment): Likewise.
13340 (dependence_distance_ge_vf): Take the vectorization factor as a
13341 poly_uint64 rather than an unsigned HOST_WIDE_INT.
13342 (vect_analyze_data_refs): Change min_vf from an int * to a
13343 poly_uint64 *.
13344 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
13345 vfm1 as a poly_uint64 rather than an int. Make the same change
13346 for the returned bound_scalar.
13347 (vect_gen_vector_loop_niters): Handle polynomial vf.
13348 (vect_do_peeling): Likewise. Update call to
13349 vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
13350 (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
13351 be constant.
13352 * tree-vect-loop.c (vect_determine_vectorization_factor)
13353 (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
13354 (vect_get_known_peeling_cost): Likewise.
13355 (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
13356 (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
13357 (vect_transform_loop): Likewise. Use the lowest possible VF when
13358 updating the upper bounds of the loop.
13359 (vect_min_worthwhile_factor): Make static. Return an unsigned int
13360 rather than an int.
13361 * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
13362 polynomial unroll factors.
13363 (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
13364 (vect_make_slp_decision): Likewise.
13365 (vect_supported_load_permutation_p): Likewise, and polynomial
13366 vf too.
13367 (vect_analyze_slp_cost): Handle polynomial vf.
13368 (vect_slp_analyze_node_operations): Likewise.
13369 (vect_slp_analyze_bb_1): Likewise.
13370 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
13371 than an unsigned HOST_WIDE_INT.
13372 * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
13373 (vectorizable_load): Handle polynomial vf.
13374 * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
13375 a poly_uint64.
13376 (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
13377
13378 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13379 Alan Hayward <alan.hayward@arm.com>
13380 David Sherwood <david.sherwood@arm.com>
13381
13382 * match.pd: Handle bit operations involving three constants
13383 and try to fold one pair.
13384
13385 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13386
13387 * tree-vect-loop-manip.c: Include gimple-fold.h.
13388 (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
13389 niters_maybe_zero parameters. Handle other cases besides a step of 1.
13390 (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
13391 Add a path that uses a step of VF instead of 1, but disable it
13392 for now.
13393 (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
13394 and niters_no_overflow parameters. Update calls to
13395 slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
13396 Create a new SSA name if the latter choses to use a ste other
13397 than zero, and return it via niters_vector_mult_vf_var.
13398 * tree-vect-loop.c (vect_transform_loop): Update calls to
13399 vect_do_peeling, vect_gen_vector_loop_niters and
13400 slpeel_make_loop_iterate_ntimes.
13401 * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
13402 (vect_gen_vector_loop_niters): Update declarations after above changes.
13403
13404 2018-01-02 Michael Meissner <meissner@linux.vnet.ibm.com>
13405
13406 * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
13407 128-bit round to integer instructions.
13408 (ceil<mode>2): Likewise.
13409 (btrunc<mode>2): Likewise.
13410 (round<mode>2): Likewise.
13411
13412 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
13413
13414 * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
13415 unaligned VSX load/store on P8/P9.
13416 (expand_block_clear): Allow the use of unaligned VSX
13417 load/store on P8/P9.
13418
13419 2018-01-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
13420
13421 * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
13422 New function.
13423 (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
13424 swap associated with both a load and a store.
13425
13426 2018-01-02 Andrew Waterman <andrew@sifive.com>
13427
13428 * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
13429 * config/riscv/riscv.md (clear_cache): Use it.
13430
13431 2018-01-02 Artyom Skrobov <tyomitch@gmail.com>
13432
13433 * web.c: Remove out-of-date comment.
13434
13435 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13436
13437 * expr.c (fixup_args_size_notes): Check that any existing
13438 REG_ARGS_SIZE notes are correct, and don't try to re-add them.
13439 (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
13440 (emit_single_push_insn): ...here.
13441
13442 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13443
13444 * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
13445 (const_vector_encoded_nelts): New function.
13446 (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
13447 (const_vector_int_elt, const_vector_elt): Declare.
13448 * emit-rtl.c (const_vector_int_elt_1): New function.
13449 (const_vector_elt): Likewise.
13450 * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
13451 of CONST_VECTOR_ELT.
13452
13453 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13454
13455 * expr.c: Include rtx-vector-builder.h.
13456 (const_vector_mask_from_tree): Use rtx_vector_builder and operate
13457 directly on the tree encoding.
13458 (const_vector_from_tree): Likewise.
13459 * optabs.c: Include rtx-vector-builder.h.
13460 (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
13461 sequence of "u" values.
13462 * vec-perm-indices.c: Include rtx-vector-builder.h.
13463 (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
13464 directly on the vec_perm_indices encoding.
13465
13466 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13467
13468 * doc/rtl.texi (const_vector): Describe new encoding scheme.
13469 * Makefile.in (OBJS): Add rtx-vector-builder.o.
13470 * rtx-vector-builder.h: New file.
13471 * rtx-vector-builder.c: Likewise.
13472 * rtl.h (rtx_def::u2): Add a const_vector field.
13473 (CONST_VECTOR_NPATTERNS): New macro.
13474 (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
13475 (CONST_VECTOR_DUPLICATE_P): Likewise.
13476 (CONST_VECTOR_STEPPED_P): Likewise.
13477 (CONST_VECTOR_ENCODED_ELT): Likewise.
13478 (const_vec_duplicate_p): Check for a duplicated vector encoding.
13479 (unwrap_const_vec_duplicate): Likewise.
13480 (const_vec_series_p): Check for a non-duplicated vector encoding.
13481 Say that the function only returns true for integer vectors.
13482 * emit-rtl.c: Include rtx-vector-builder.h.
13483 (gen_const_vec_duplicate_1): Delete.
13484 (gen_const_vector): Call gen_const_vec_duplicate instead of
13485 gen_const_vec_duplicate_1.
13486 (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
13487 (gen_const_vec_duplicate): Use rtx_vector_builder.
13488 (gen_const_vec_series): Likewise.
13489 (gen_rtx_CONST_VECTOR): Likewise.
13490 * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
13491 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
13492 Build a new vector rather than modifying a CONST_VECTOR in-place.
13493 (handle_special_swappables): Update call accordingly.
13494 * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
13495 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
13496 Build a new vector rather than modifying a CONST_VECTOR in-place.
13497 (handle_special_swappables): Update call accordingly.
13498
13499 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13500
13501 * simplify-rtx.c (simplify_const_binary_operation): Use
13502 CONST_VECTOR_ELT instead of XVECEXP.
13503
13504 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13505
13506 * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
13507 the selector elements to be different from the data elements
13508 if the selector is a VECTOR_CST.
13509 * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
13510 ssizetype for the selector.
13511
13512 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13513
13514 * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
13515 before testing each element individually.
13516 * tree-vect-generic.c (lower_vec_perm): Likewise.
13517
13518 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13519
13520 * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
13521 * selftest-run-tests.c (selftest::run_tests): Call it.
13522 * vector-builder.h (vector_builder::operator ==): New function.
13523 (vector_builder::operator !=): Likewise.
13524 * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
13525 (vec_perm_indices::all_from_input_p): New function.
13526 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
13527 (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
13528 * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
13529 instead of reading the VECTOR_CST directly. Detect whether both
13530 vector inputs are the same before constructing the vec_perm_indices,
13531 and update the number of inputs argument accordingly. Use the
13532 utility functions added above. Only construct sel2 if we need to.
13533
13534 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13535
13536 * optabs.c (expand_vec_perm_var): Use an explicit encoding for
13537 the broadcast of the low byte.
13538 (expand_mult_highpart): Use an explicit encoding for the permutes.
13539 * optabs-query.c (can_mult_highpart_p): Likewise.
13540 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
13541 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13542 (vectorizable_bswap): Likewise.
13543 * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
13544 explicit encoding for the power-of-2 permutes.
13545 (vect_permute_store_chain): Likewise.
13546 (vect_grouped_load_supported): Likewise.
13547 (vect_permute_load_chain): Likewise.
13548
13549 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13550
13551 * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
13552 * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
13553 * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
13554 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
13555 * tree-vect-stmts.c (vectorizable_bswap): Likewise.
13556 (vect_gen_perm_mask_any): Likewise.
13557
13558 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13559
13560 * int-vector-builder.h: New file.
13561 * vec-perm-indices.h: Include int-vector-builder.h.
13562 (vec_perm_indices): Redefine as an int_vector_builder.
13563 (auto_vec_perm_indices): Delete.
13564 (vec_perm_builder): Redefine as a stand-alone class.
13565 (vec_perm_indices::vec_perm_indices): New function.
13566 (vec_perm_indices::clamp): Likewise.
13567 * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
13568 (vec_perm_indices::new_vector): New function.
13569 (vec_perm_indices::new_expanded_vector): Update for new
13570 vec_perm_indices class.
13571 (vec_perm_indices::rotate_inputs): New function.
13572 (vec_perm_indices::all_in_range_p): Operate directly on the
13573 encoded form, without computing elided elements.
13574 (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
13575 encoding. Update for new vec_perm_indices class.
13576 * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
13577 the given vec_perm_builder.
13578 (expand_vec_perm_var): Update vec_perm_builder constructor.
13579 (expand_mult_highpart): Use vec_perm_builder instead of
13580 auto_vec_perm_indices.
13581 * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
13582 vec_perm_indices instead of auto_vec_perm_indices. Use a single
13583 or double series encoding as appropriate.
13584 * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
13585 vec_perm_indices instead of auto_vec_perm_indices.
13586 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13587 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13588 (vect_permute_store_chain): Likewise.
13589 (vect_grouped_load_supported): Likewise.
13590 (vect_permute_load_chain): Likewise.
13591 (vect_shift_permute_load_chain): Likewise.
13592 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13593 (vect_transform_slp_perm_load): Likewise.
13594 (vect_schedule_slp_instance): Likewise.
13595 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13596 (vectorizable_mask_load_store): Likewise.
13597 (vectorizable_bswap): Likewise.
13598 (vectorizable_store): Likewise.
13599 (vectorizable_load): Likewise.
13600 * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
13601 vec_perm_indices instead of auto_vec_perm_indices. Use
13602 tree_to_vec_perm_builder to read the vector from a tree.
13603 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
13604 vec_perm_builder instead of a vec_perm_indices.
13605 (have_whole_vector_shift): Use vec_perm_builder and
13606 vec_perm_indices instead of auto_vec_perm_indices. Leave the
13607 truncation to calc_vec_perm_mask_for_shift.
13608 (vect_create_epilog_for_reduction): Likewise.
13609 * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
13610 from auto_vec_perm_indices to vec_perm_indices.
13611 (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
13612 instead of changing individual elements.
13613 (aarch64_vectorize_vec_perm_const): Use new_vector to install
13614 the vector in d.perm.
13615 * config/arm/arm.c (expand_vec_perm_d::perm): Change
13616 from auto_vec_perm_indices to vec_perm_indices.
13617 (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
13618 instead of changing individual elements.
13619 (arm_vectorize_vec_perm_const): Use new_vector to install
13620 the vector in d.perm.
13621 * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
13622 Update vec_perm_builder constructor.
13623 (rs6000_expand_interleave): Likewise.
13624 * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
13625 (rs6000_expand_interleave): Likewise.
13626
13627 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13628
13629 * optabs-query.c (can_vec_perm_var_p): Check whether lowering
13630 to qimode could truncate the indices.
13631 * optabs.c (expand_vec_perm_var): Likewise.
13632
13633 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13634
13635 * Makefile.in (OBJS): Add vec-perm-indices.o.
13636 * vec-perm-indices.h: New file.
13637 * vec-perm-indices.c: Likewise.
13638 * target.h (vec_perm_indices): Replace with a forward class
13639 declaration.
13640 (auto_vec_perm_indices): Move to vec-perm-indices.h.
13641 * optabs.h: Include vec-perm-indices.h.
13642 (expand_vec_perm): Delete.
13643 (selector_fits_mode_p, expand_vec_perm_var): Declare.
13644 (expand_vec_perm_const): Declare.
13645 * target.def (vec_perm_const_ok): Replace with...
13646 (vec_perm_const): ...this new hook.
13647 * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
13648 (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
13649 * doc/tm.texi: Regenerate.
13650 * optabs.def (vec_perm_const): Delete.
13651 * doc/md.texi (vec_perm_const): Likewise.
13652 (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
13653 * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
13654 expand_vec_perm for constant permutation vectors. Assert that
13655 the mode of variable permutation vectors is the integer equivalent
13656 of the mode that is being permuted.
13657 * optabs-query.h (selector_fits_mode_p): Declare.
13658 * optabs-query.c: Include vec-perm-indices.h.
13659 (selector_fits_mode_p): New function.
13660 (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
13661 is defined, instead of checking whether the vec_perm_const_optab
13662 exists. Use targetm.vectorize.vec_perm_const instead of
13663 targetm.vectorize.vec_perm_const_ok. Check whether the indices
13664 fit in the vector mode before using a variable permute.
13665 * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
13666 vec_perm_indices instead of an rtx.
13667 (expand_vec_perm): Replace with...
13668 (expand_vec_perm_const): ...this new function. Take the selector
13669 as a vec_perm_indices rather than an rtx. Also take the mode of
13670 the selector. Update call to shift_amt_for_vec_perm_mask.
13671 Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
13672 Use vec_perm_indices::new_expanded_vector to expand the original
13673 selector into bytes. Check whether the indices fit in the vector
13674 mode before using a variable permute.
13675 (expand_vec_perm_var): Make global.
13676 (expand_mult_highpart): Use expand_vec_perm_const.
13677 * fold-const.c: Includes vec-perm-indices.h.
13678 * tree-ssa-forwprop.c: Likewise.
13679 * tree-vect-data-refs.c: Likewise.
13680 * tree-vect-generic.c: Likewise.
13681 * tree-vect-loop.c: Likewise.
13682 * tree-vect-slp.c: Likewise.
13683 * tree-vect-stmts.c: Likewise.
13684 * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
13685 Delete.
13686 * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
13687 * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
13688 (aarch64_vectorize_vec_perm_const_ok): Fuse into...
13689 (aarch64_vectorize_vec_perm_const): ...this new function.
13690 (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13691 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13692 * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
13693 * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
13694 * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13695 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13696 (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
13697 into...
13698 (arm_vectorize_vec_perm_const): ...this new function. Explicitly
13699 check for NEON modes.
13700 * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
13701 * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
13702 * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
13703 (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
13704 into...
13705 (ix86_vectorize_vec_perm_const): ...this new function. Incorporate
13706 the old VEC_PERM_CONST conditions.
13707 * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
13708 * config/ia64/vect.md (vec_perm_const<mode>): Delete.
13709 * config/ia64/ia64.c (ia64_expand_vec_perm_const)
13710 (ia64_vectorize_vec_perm_const_ok): Merge into...
13711 (ia64_vectorize_vec_perm_const): ...this new function.
13712 * config/mips/loongson.md (vec_perm_const<mode>): Delete.
13713 * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
13714 * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
13715 * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
13716 * config/mips/mips.c (mips_expand_vec_perm_const)
13717 (mips_vectorize_vec_perm_const_ok): Merge into...
13718 (mips_vectorize_vec_perm_const): ...this new function.
13719 * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
13720 * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
13721 * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
13722 * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
13723 * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
13724 (rs6000_expand_vec_perm_const): Delete.
13725 * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
13726 Delete.
13727 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13728 (altivec_expand_vec_perm_const_le): Take each operand individually.
13729 Operate on constant selectors rather than rtxes.
13730 (altivec_expand_vec_perm_const): Likewise. Update call to
13731 altivec_expand_vec_perm_const_le.
13732 (rs6000_expand_vec_perm_const): Delete.
13733 (rs6000_vectorize_vec_perm_const_ok): Delete.
13734 (rs6000_vectorize_vec_perm_const): New function.
13735 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
13736 an element count and rtx array.
13737 (rs6000_expand_extract_even): Update call accordingly.
13738 (rs6000_expand_interleave): Likewise.
13739 * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
13740 * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
13741 * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
13742 * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
13743 (rs6000_expand_vec_perm_const): Delete.
13744 * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13745 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13746 (altivec_expand_vec_perm_const_le): Take each operand individually.
13747 Operate on constant selectors rather than rtxes.
13748 (altivec_expand_vec_perm_const): Likewise. Update call to
13749 altivec_expand_vec_perm_const_le.
13750 (rs6000_expand_vec_perm_const): Delete.
13751 (rs6000_vectorize_vec_perm_const_ok): Delete.
13752 (rs6000_vectorize_vec_perm_const): New function. Remove stray
13753 reference to the SPE evmerge intructions.
13754 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
13755 an element count and rtx array.
13756 (rs6000_expand_extract_even): Update call accordingly.
13757 (rs6000_expand_interleave): Likewise.
13758 * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
13759 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
13760 new function.
13761 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13762
13763 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13764
13765 * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
13766 vector mode and that that mode matches the mode of the data
13767 being permuted.
13768 (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
13769 out into expand_vec_perm_var. Do all CONST_VECTOR handling here,
13770 directly using expand_vec_perm_1 when forcing selectors into
13771 registers.
13772 (expand_vec_perm_var): New function, split out from expand_vec_perm.
13773
13774 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13775
13776 * optabs-query.h (can_vec_perm_p): Delete.
13777 (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
13778 * optabs-query.c (can_vec_perm_p): Split into...
13779 (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
13780 (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
13781 particular selector is valid.
13782 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13783 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13784 (vect_grouped_load_supported): Likewise.
13785 (vect_shift_permute_load_chain): Likewise.
13786 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13787 (vect_transform_slp_perm_load): Likewise.
13788 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13789 (vectorizable_bswap): Likewise.
13790 (vect_gen_perm_mask_checked): Likewise.
13791 * fold-const.c (fold_ternary_loc): Likewise. Don't take
13792 implementations of variable permutation vectors into account
13793 when deciding which selector to use.
13794 * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
13795 vec_perm_const_optab is supported; instead use can_vec_perm_const_p
13796 with a false third argument.
13797 * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
13798 to test whether the constant selector is valid and can_vec_perm_var_p
13799 to test whether a variable selector is valid.
13800
13801 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13802
13803 * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
13804 * optabs-query.c (can_vec_perm_p): Likewise.
13805 * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
13806 instead of vec_perm_indices.
13807 * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
13808 (vect_gen_perm_mask_checked): Likewise,
13809 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
13810 (vect_gen_perm_mask_checked): Likewise,
13811
13812 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13813
13814 * optabs-query.h (qimode_for_vec_perm): Declare.
13815 * optabs-query.c (can_vec_perm_p): Split out qimode search to...
13816 (qimode_for_vec_perm): ...this new function.
13817 * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
13818
13819 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
13820
13821 * rtlanal.c (canonicalize_condition): Return 0 if final rtx
13822 does not have a conditional at the top.
13823
13824 2018-01-02 Richard Biener <rguenther@suse.de>
13825
13826 * ipa-inline.c (big_speedup_p): Fix expression.
13827
13828 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
13829
13830 PR target/81616
13831 * config/i386/x86-tune-costs.h: Increase cost of integer load costs
13832 for generic 4->6.
13833
13834 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
13835
13836 PR target/81616
13837 Generic tuning.
13838 * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
13839 cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
13840 and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
13841 cond_taken_branch_cost 3->4.
13842
13843 2018-01-01 Jakub Jelinek <jakub@redhat.com>
13844
13845 PR tree-optimization/83581
13846 * tree-loop-distribution.c (pass_loop_distribution::execute): Return
13847 TODO_cleanup_cfg if any changes have been made.
13848
13849 PR middle-end/83608
13850 * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
13851 convert_modes if target mode has the right side, but different mode
13852 class.
13853
13854 PR middle-end/83609
13855 * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
13856 last argument when extracting from CONCAT. If either from_real or
13857 from_imag is NULL, use expansion through memory. If result is not
13858 a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
13859 the parts directly to inner mode, if even that fails, use expansion
13860 through memory.
13861
13862 PR middle-end/83623
13863 * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
13864 check for bswap in mode rather than HImode and use that in expand_unop
13865 too.
13866 \f
13867 Copyright (C) 2018 Free Software Foundation, Inc.
13868
13869 Copying and distribution of this file, with or without modification,
13870 are permitted in any medium without royalty provided the copyright
13871 notice and this notice are preserved.