tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction of fixed offset from...
[gcc.git] / gcc / ChangeLog
1 2018-05-23 Richard Biener <rguenther@suse.de>
2
3 * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
4 of fixed offset from memset VN.
5
6 2018-05-23 Bill Schmidt <wschmidt@linux.ibm.com>
7
8 * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
9 first_interp field.
10 (alloc_cand_and_find_basis): Initialize first_interp field.
11 (slsr_process_mul): Modify first_interp field.
12 (slsr_process_add): Likewise.
13 (slsr_process_cast): Modify first_interp field for each new
14 interpretation.
15 (slsr_process_copy): Likewise.
16 (dump_candidate): Dump first_interp field.
17 (replace_mult_candidate): Process all interpretations, not just
18 subsequent ones.
19 (replace_rhs_if_not_dup): Likewise.
20 (replace_one_candidate): Likewise.
21
22 2018-05-23 Wilco Dijkstra <wdijkstr@arm.com>
23
24 * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
25 Add new boolean.
26 (aarch64_needs_frame_chain): New function.
27 (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
28
29 2018-05-23 Sudakshina Das <sudi.das@arm.com>
30
31 PR target/84882
32 * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
33 Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
34 * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
35 * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
36 as true for strict-align.
37 (aarch64_can_inline_p): Perform checks even when callee has no
38 attributes to check for strict alignment.
39 * doc/extend.texi (AArch64 Function Attributes): Document
40 no-strict-align.
41 * doc/invoke.texi: (AArch64 Options): Likewise.
42
43 2018-05-23 Richard Sandiford <richard.sandiford@linaro.org>
44
45 PR tree-optimization/85853
46 * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
47 the handling of the root of the node to...
48 (vect_slp_analyze_node_operations_1): ...this new function,
49 and run the whole thing with the child nodes' def types
50 set according to their SLP node's def type.
51
52 2018-05-23 Richard Biener <rguenther@suse.de>
53
54 PR middle-end/85874
55 * tree-data-ref.c (create_runtime_alias_checks): Defer
56 and ignore overflow warnings.
57
58 2018-05-23 Yury Gribov <tetra2005@gmail.com>
59
60 PR tree-optimization/85822
61 * tree-vrp.c (is_masked_range_test): Fix handling of negative
62 constants.
63
64 2018-05-23 Richard Biener <rguenther@suse.de>
65
66 * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
67 memset constants via native_interpret_expr.
68
69 2018-05-22 H.J. Lu <hongjiu.lu@intel.com>
70
71 PR target/85345
72 * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
73 attribute.
74 (cgraph_node::create_alias): Likewise.
75 (cgraph_node::get_availability): Check ifunc_resolver instead
76 of looking up ifunc attribute.
77 * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
78 * varasm.c (do_assemble_alias): Likewise.
79 (assemble_alias): Likewise.
80 (default_binds_local_p_3): Likewise.
81 * cgraph.h (cgraph_node): Add ifunc_resolver.
82 (cgraph_node::only_called_directly_or_aliased_p): Return false
83 for IFUNC resolver.
84 * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
85 attribute.
86 * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
87 is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
88 (symtab_node::binds_to_current_def_p): Check ifunc_resolver
89 instead of looking up ifunc attribute.
90
91 2018-05-22 Luis Machado <luis.machado@linaro.org>
92
93 * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
94
95 2018-05-22 Martin Sebor <msebor@redhat.com>
96
97 PR middle-end/85359
98 * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
99 only when expasion succeeds.
100 (expand_builtin_strcmp): Same.
101 (expand_builtin_strncmp): Same.
102
103 2018-05-22 Martin Sebor <msebor@redhat.com>
104
105 * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
106
107 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
108 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
109
110 * config/aarch64/aarch64-ldpstp.md: Replace uses of
111 aarch64_mem_pair_operand with memory_operand and delete operand swapping
112 code.
113 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
114 Add check for legitimate_address.
115 (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
116 (aarch64_swap_ldrstr_operands): New.
117 * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
118 Define prototype.
119
120 2018-05-22 Jackson Woodruff <jackson.woodruff@arm.com>
121 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
122
123 * config/aarch64/aarch64.md: New patterns to generate stp
124 and ldp.
125 (store_pair_sw, store_pair_dw): New patterns to generate stp for
126 single words and double words.
127 (load_pair_sw, load_pair_dw): Likewise.
128 (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
129 Delete.
130 (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
131 Delete.
132 * config/aarch64/aarch64-ldpstp.md: Modify peephole
133 for different mode ldpstp and add peephole for merged zero stores.
134 Likewise for loads.
135 * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
136 Add size check.
137 (aarch64_gen_store_pair): Rename calls to match new patterns.
138 (aarch64_gen_load_pair): Rename calls to match new patterns.
139 * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
140 (load_pair<DREG:mode><DREG2:mode>): ... This.
141 (store_pair<mode>): Rename to...
142 (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
143 * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
144 New mode iterators.
145 (V_INT_EQUIV): Handle SImode.
146 * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
147 New predicate.
148
149 2018-05-22 Martin Sebor <msebor@redhat.com>
150
151 PR c/85623
152 * calls.c (maybe_warn_nonstring_arg): Use string length to set
153 or ajust the presumed bound on an operation to avoid unnecessary
154 warnings.
155
156 2018-05-22 Martin Sebor <msebor@redhat.com>
157
158 PR tree-optimization/85826
159 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
160 assuming that a DECL necesarily has a constant size.
161
162 2018-05-22 Richard Sandiford <richard.sandiford@linaro.org>
163
164 PR middle-end/85862
165 * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
166
167 2018-05-22 Richard Biener <rguenther@suse.de>
168
169 PR tree-optimization/85834
170 * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
171 non-constant and non-zero memset arguments.
172
173 2018-05-22 Martin Liska <mliska@suse.cz>
174
175 PR ipa/85607
176 * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
177
178 2018-05-22 Richard Biener <rguenther@suse.de>
179
180 PR tree-optimization/85863
181 * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
182 comparisons when vectype is specified.
183 (vectorizable_condition): Do not specify vectype for
184 vect_is_simple_cond when SLP vectorizing.
185
186 2018-05-21 Michael Meissner <meissner@linux.ibm.com>
187
188 PR target/85657
189 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
190 define __ibm128 as long double.
191 * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
192 as a distinct type when IEEE 128-bit support is enabled.
193 (init_float128_ieee): Fix up conversions between IFmode and IEEE
194 128-bit types to use the correct functions.
195 (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
196 convert between 128-bit floating point types that have different
197 modes but the same representation, instead of using gen_lowpart to
198 makean alias.
199 * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
200 KFmode.
201 (IFKF_reg): New attributes to give the register constraints for
202 IFmode and KFmode.
203 (extend<mode>tf2_internal): New insns to mark an explicit
204 conversion between 128-bit floating point types that have a
205 different mode but share the same representation.
206
207 2018-05-21 Richard Sandiford <richard.sandiford@linaro.org>
208
209 PR tree-optimization/85814
210 * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
211 a null return from get_strinfo when unsharing the next
212 strinfo in the chain.
213
214 2018-05-21 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
215
216 PR gcc/84923
217 * varasm.c (weak_finish): Clean up weak_decls.
218
219 2018-05-21 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
220
221 * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
222 UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
223 UNSPEC_UADALP values.
224 * config/aarch64/iterators.md (ABAL): New int iterator.
225 (ABDL2): Likewise.
226 (ADALP): Likewise.
227 (sur): Add mappings for the above.
228 * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
229 New define_insn.
230 (aarch64_<sur>abal<mode>_4): Likewise.
231 (aarch64_<sur>adalp<mode>_3): Likewise.
232 (<sur>sadv16qi): New define_expand.
233
234 2018-05-21 Alexander Nesterovskiy <alexander.nesterovskiy@intel.com>
235
236 * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
237 (*movdf_internal): Ditto.
238 (*rcpsf2_sse): Ditto.
239 (*rsqrtsf2_sse): Ditto.
240 (*sqrt<mode>2_sse): Ditto.
241
242 2018-05-21 Tamar Christina <tamar.christina@arm.com>
243
244 * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
245 eor3q<mode>4.
246 (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
247 * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
248 veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
249 vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
250 vbcaxq_s64): New.
251 * config/aarch64/arm_neon.h: Likewise.
252 * config/aarch64/iterators.md (VQ_I): New.
253
254 2018-05-21 Alexey Brodkin <abrodkin@synopsys.com>
255
256 * config.gcc: Add arc/t-multilib-linux to tmake_file for
257 arc*-*-linux*.
258 * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
259 MULTILIB_DIRNAMES
260
261 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
262
263 * config/nds32/constraints.md (S): New constraint.
264 * config/nds32/nds32.md (call_internal): Use constraint S.
265 (call_value_internal): Likewise.
266 (sibcall_internal): Likewise.
267 (sibcall_value_internal): Likewise.
268
269 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
270 Chung-Ju Wu <jasonwucj@gmail.com>
271
272 * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
273 into consideration.
274
275 2018-05-20 Kito Cheng <kito.cheng@gmail.com>
276 Chung-Ju Wu <jasonwucj@gmail.com>
277
278 * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
279 (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
280 (nds32_rtx_costs_impl): Simplify.
281 (nds32_address_cost_impl): Simplify.
282 (nds32_init_rtx_costs): New function.
283 (nds32_rtx_costs_speed_prefer): Likewise.
284 (nds32_rtx_costs_size_prefer): Likewise.
285 (nds32_address_cost_speed_prefer): Likewise.
286 (nds32_address_cost_speed_fwprop): Likewise.
287 (nds32_address_cost_size_prefer): Likewise.
288 * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
289 * config/nds32/nds32.c (nds32_option_override): Use
290 nds32_init_rtx_costs function.
291
292 2018-05-20 Chung-Ju Wu <jasonwucj@gmail.com>
293
294 * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
295 * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
296 (TARGET_PIPELINE_N8): Likewise.
297 (TARGET_PIPELINE_N10): Likewise.
298 (TARGET_PIPELINE_N13): Likewise.
299 (TARGET_PIPELINE_GRAYWOLF): Likewise.
300
301 2018-05-19 Monk Chiang <sh.chiang04@gmail.com>
302
303 * config/nds32/nds32-fpu.md: Update copyright year.
304
305 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
306
307 * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
308
309 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
310
311 * config/nds32/nds32.c
312 (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
313 * config/nds32/nds32.opt (minline-asm-r15): New option.
314
315 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
316
317 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
318 MASK_HW_ABS.
319 * config/nds32/nds32.md (abssi2): New pattern.
320
321 2018-05-19 Uros Bizjak <ubizjak@gmail.com>
322
323 * config/i386/i386.md (rex64namesuffix): New mode attribute.
324 * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
325 Merge insn pattern from sse_cvtsi2ss<round_name> and
326 sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
327 (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
328 from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
329 using SWI48 mode iterator.
330 (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
331 sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
332 (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
333 pattern from sse_cvttss2si<round_saeonly_name>
334 and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
335 (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
336 from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
337 using SWI48 mode iterator.
338 (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
339 insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
340 avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
341 (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
342 from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
343 using SWI48 mode iterator.
344 (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
345 insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
346 avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
347 (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
348 sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
349 SWI48 mode iterator.
350 (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
351 sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
352 (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
353 pattern from sse_cvttsd2si<round_saeonly_name>
354 and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
355
356 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
357
358 * config/nds32/nds32-md-auxiliary.c
359 (nds32_valid_smw_lwm_base_p): Refine.
360 (nds32_output_smw_single_word): Refine.
361 (nds32_output_smw_double_word): New.
362 * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
363
364 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
365
366 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
367 (nds32_output_stack_pop): Refine.
368 (nds32_expand_unaligned_load): Refine.
369 (nds32_expand_unaligned_store): Refine.
370
371 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
372 Chung-Ju Wu <jasonwucj@gmail.com>
373
374 * config/nds32/constants.md: Add TP_REGNUM constant.
375 (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
376 UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
377 UNSPEC_ADD32.
378 * config/nds32/nds32-doubleword.md: Consider flag_pic.
379 * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
380 * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
381 * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
382 and PIC code generation.
383 * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
384 code generation.
385 * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
386 optimization.
387 * config/nds32/nds32.md: Support TLS and PIC.
388 * config/nds32/nds32.c: Support TLS and PIC.
389 * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
390 * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
391 predicate.
392
393 2018-05-19 Chung-Ju Wu <jasonwucj@gmail.com>
394
395 * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
396 mode with E_ prefix.
397
398 2018-05-19 Kuan-Lin Chen <kuanlinchentw@gmail.com>
399 Chung-Ju Wu <jasonwucj@gmail.com>
400
401 * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
402 * config/nds32/nds32-md-auxiliary.c
403 (symbolic_reference_mentioned_p): New.
404 (nds32_legitimize_ict_address): New.
405 (nds32_expand_ict_move): New.
406 (nds32_indirect_call_referenced_p): New.
407 (nds32_symbol_binds_local_p): Delete.
408 (nds32_long_call_p): Modify.
409 * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
410 * config/nds32/nds32-protos.h
411 (symbolic_reference_mentioned_p): Declare.
412 (nds32_legitimize_ict_address): Declare.
413 (nds32_expand_ict_move): Declare.
414 (nds32_indirect_call_referenced_p): Declare.
415 * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
416 (nds32_relax_group): Use nds32_ict_const_p as condition.
417 * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
418 (nds32_asm_file_start): Output ict_model directive in asm code.
419 (nds32_legitimate_address_p): Consider indirect call.
420 (nds32_print_operand): Consider indirect call.
421 (nds32_print_operand_address): Consider indirect call.
422 (nds32_insert_attributes): Handle "indirect_call" attribute.
423 (TARGET_LEGITIMATE_ADDRESS_P): Define.
424 (TARGET_LEGITIMATE_CONSTANT_P): Define.
425 (TARGET_CANNOT_FORCE_CONST_MEM): Define.
426 (TARGET_DELEGITIMIZE_ADDRESS): Define.
427 (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
428 * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
429 (TARGET_ICT_MODEL_SMALL): Define.
430 (TARGET_ICT_MODEL_LARGE): Define.
431 * config/nds32/nds32.md (movsi): Consider ict model.
432 (call, call_value): Consider ict model.
433 (sibcall, sibcall_value): Consider ict model.
434 * config/nds32/nds32.opt (mict-model): New option.
435 * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
436 model.
437
438 2018-05-18 Kito Cheng <kito.cheng@gmail.com>
439 Monk Chiang <sh.chiang04@gmail.com>
440 Jim Wilson <jimw@sifive.com>
441
442 * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
443 Add support to parse rv32e*. Clear MASK_RVE for rv32i and rv64i.
444 * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
445 * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
446 __riscv_32e when TARGET_RVE. Handle ABI_ILP32E as soft-float ABI.
447 * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
448 * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
449 compute save_libcall_adjustment properly.
450 (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
451 (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
452 * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
453 (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
454 (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
455 (ABI_SPEC): Handle mabi=ilp32e.
456 * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
457 (RVE): Add RVE mask.
458 * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
459 <-march>: Add rv32e as an example.
460
461 2018-05-18 Marc Glisse <marc.glisse@inria.fr>
462
463 PR c++/82899
464 * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
465 (intra_create_variable_infos): Handle C++ constructors.
466
467 2018-05-18 Martin Liska <mliska@suse.cz>
468
469 * passes.def: Remove a redundant pass.
470
471 2018-05-18 Eric Botcazou <ebotcazou@adacore.com>
472
473 PR bootstrap/85838
474 * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
475
476 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
477
478 * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
479 (ARMv4): Update.
480 (ARMv2, ARMv3, ARMv3m): Delete fgroups.
481 (ARMv6m): Update.
482 (armv2, armv2a, armv3, armv3m): Delete architectures.
483 (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
484 arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
485 arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
486 Delete cpus.
487 * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
488 (*mulsidi3adddi): Likewise.
489 (mulsidi3): Likewise.
490 (*mulsidi3_nov6): Likewise.
491 (umulsidi3): Likewise.
492 (umulsidi3_nov6): Likewise.
493 (umaddsidi4): Likewise.
494 (*umulsidi3adddi): Likewise.
495 (smulsi3_highpart): Likewise.
496 (*smulsi3_highpart_nov6): Likewise.
497 (umulsi3_highpart): Likewise.
498 (*umulsi3_highpart_nov6): Likewise.
499 * config/arm/arm.h (arm_arch3m): Delete.
500 * config/arm/arm.c (arm_arch3m): Delete.
501 (arm_option_override_internal): Update armv3-related comment.
502 (arm_configure_build_target): Delete use of isa_bit_mode32.
503 (arm_option_reconfigure_globals): Delete set of arm_ach3m.
504 (arm_rtx_costs_internal): Delete check of arm_arch3m.
505 * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
506 (mulsa3): Likewise.
507 (mulusa3): Likewise.
508 * config/arm/arm-protos.h (arm_arch3m): Delete.
509 * config/arm/arm-tables.opt: Regenerate.
510 * config/arm/arm-tune.md: Likewise.
511 * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
512 deleted architectures.
513
514 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
515
516 * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
517 (armv5t, armv5te): New features.
518 (ARMv5, ARMv5e): Delete fgroups.
519 (ARMv5t, ARMv5te): Adjust for above changes.
520 (ARMv6m): Likewise.
521 (armv5, armv5e): Delete arches.
522 * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
523 arm_arch5.
524 (*call_reg_arm): Likewise.
525 (*call_value_reg_armv5): Likewise.
526 (*call_value_reg_arm): Likewise.
527 (*call_symbol): Likewise.
528 (*call_value_symbol): Likewise.
529 (*sibcall_insn): Likewise.
530 (*sibcall_value_insn): Likewise.
531 (clzsi2): Likewise.
532 (prefetch): Likewise.
533 (define_split and define_peephole2 dependent on arm_arch5):
534 Likewise.
535 * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
536 arm_arch5e.
537 (TARGET_ARM_QBIT): Likewise.
538 (TARGET_DSP_MULTIPLY): Likewise.
539 (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
540 (arm_arch5, arm_arch5e): Delete.
541 (arm_arch5t, arm_arch5te): Declare.
542 * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
543 (arm_arch5t): Declare.
544 (arm_option_reconfigure_globals): Update for the above.
545 (arm_options_perform_arch_sanity_checks): Update comment, replace
546 use of arm_arch5 with arm_arch5t.
547 (use_return_insn): Likewise.
548 (arm_emit_call_insn): Likewise.
549 (output_return_instruction): Likewise.
550 (arm_final_prescan_insn): Likewise.
551 (arm_coproc_builtin_available): Likewise.
552 * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
553 arm_arch5e with arm_arch5t and arm_arch5te.
554 * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
555 (arm_arch5t, arm_arch5te): Declare.
556 * config/arm/arm-tables.opt: Regenerate.
557 * config/arm/t-arm-elf: Remove references to armv5, armv5e.
558 * config/arm/t-multilib: Likewise.
559 * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
560 instead of arm_arch5.
561 (*call_reg_thumb1): Likewise.
562 (*call_value_reg_thumb1_v5): Likewise.
563 (*call_value_reg_thumb1): Likewise.
564 * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
565 unreachable path.
566 * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
567
568 2018-05-18 Martin Liska <mliska@suse.cz>
569
570 PR gcov-profile/84846
571 * doc/gcov.texi: Document -t option of gcov tool.
572
573 2018-05-18 Martin Liska <mliska@suse.cz>
574
575 PR gcov-profile/84846
576 * gcov.c (print_usage): Add new -t option.
577 (process_args): Handle the option.
578 (generate_results): Use stdout as output when requested by
579 the option.
580
581 2018-05-18 Martin Liska <mliska@suse.cz>
582
583 PR gcov-profile/84846
584 * coverage.c (coverage_init): Write PWD to .gcno file.
585 * doc/gcov.texi: Document how working directory is printed.
586 * gcov-dump.c (dump_gcov_file): Print PWD.
587 * gcov.c (output_intermediate_file): Likewise.
588 (read_graph_file): Read PWD string.
589 (output_lines): Print PWD.
590
591 2018-05-18 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
592
593 PR middle-end/85817
594 * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
595 for retval and return false if all args to phi are zero.
596
597 2018-05-18 Richard Biener <rguenther@suse.de>
598
599 * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
600 method.
601 (evrp_dom_walker::before_dom_children): Call it.
602
603 2018-05-18 Richard Biener <rguenther@suse.de>
604
605 * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
606 results when processing array refs with variable index.
607
608 2018-05-18 Toon Moene <toon@moene.org>
609
610 * doc/invoke.texi: Move -floop-unroll-and-jam documentation
611 directly after that of -floop-interchange. Indicate that both
612 options are enabled by default when specifying -O3.
613
614 2018-05-18 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
615
616 * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
617 iterator. Delete separate integer-mode vec_set<mode> expander.
618 (aarch64_simd_vec_setv2di): Delete.
619 (vec_setv2di): Delete.
620 (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
621 Use VALL_F16 mode iterator. Add LD1 alternative and use vwcore for
622 the "w, r" alternative.
623
624 2018-05-18 Martin Liska <mliska@suse.cz>
625
626 * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
627 * tree-pass.h (make_pass_lower_switch_O0): New function.
628 * tree-switch-conversion.c (node_has_low_bound): Remove.
629 (node_has_high_bound): Likewise.
630 (node_is_bounded): Likewise.
631 (class pass_lower_switch): Make it a template type and create
632 two instances.
633 (pass_lower_switch::execute): Add template argument.
634 (make_pass_lower_switch): New function.
635 (make_pass_lower_switch_O0): New function.
636 (do_jump_if_equal): Remove.
637 (emit_case_nodes): Simplify to just handle all 3 cases and leave
638 all the hard work to tree optimization passes.
639
640 2018-05-18 Martin Liska <mliska@suse.cz>
641
642 * dbgcnt.c (limit_low): Renamed from limit.
643 (limit_high): New variable.
644 (dbg_cnt_is_enabled): Check for upper limit.
645 (dbg_cnt): Adjust dumping.
646 (dbg_cnt_set_limit_by_index): Add new argument for high
647 value.
648 (dbg_cnt_set_limit_by_name): Likewise.
649 (dbg_cnt_process_single_pair): Parse new format.
650 (dbg_cnt_process_opt): Use strtok.
651 (dbg_cnt_list_all_counters): Remove 'value' and add
652 'limit_high'.
653 * doc/invoke.texi: Document changes.
654
655 2018-05-18 Richard Sandiford <richard.sandiford@linaro.org>
656
657 * doc/sourcebuild.texi (scalar_all_fma): Document.
658 * tree.def (FMA_EXPR): Delete.
659 * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
660 * internal-fn.c (ternary_direct): New macro.
661 (expand_ternary_optab_fn): Likewise.
662 (direct_ternary_optab_supported_p): Likewise.
663 * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
664 * builtins.c (fold_builtin_fma): Delete.
665 (fold_builtin_3): Don't call it.
666 * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
667 * expr.c (expand_expr_real_2): Likewise.
668 * fold-const.c (operand_equal_p): Likewise.
669 (fold_ternary_loc): Likewise.
670 * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
671 * gimple.c (DEFTREECODE): Likewise.
672 * gimplify.c (gimplify_expr): Likewise.
673 * optabs-tree.c (optab_for_tree_code): Likewise.
674 * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
675 * tree-eh.c (operation_could_trap_p): Likewise.
676 (stmt_could_throw_1_p): Likewise.
677 * tree-inline.c (estimate_operator_cost): Likewise.
678 * tree-pretty-print.c (dump_generic_node): Likewise.
679 (op_code_prio): Likewise.
680 * tree-ssa-loop-im.c (stmt_cost): Likewise.
681 * tree-ssa-operands.c (get_expr_operands): Likewise.
682 * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
683 * fold-const-call.h (fold_fma): Delete.
684 * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
685 CFN_FNMA and CFN_FNMS.
686 (fold_fma): Delete.
687 * genmatch.c (combined_fn): New enum.
688 (commutative_ternary_tree_code): Remove FMA_EXPR handling.
689 (commutative_op): New function.
690 (commutate): Use it. Handle more than 2 operands.
691 (dt_operand::gen_gimple_expr): Use commutative_op.
692 (parser::parse_expr): Allow :c to be used with non-binary
693 operators if the commutative operand is known.
694 * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
695 CFN_FMS, CFN_FNMA and CFN_FNMS.
696 (backprop::process_assign_use): Remove FMA_EXPR handling.
697 * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
698 (gen_hsa_fma): New function.
699 (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
700 IFN_FNMA and IFN_FNMS.
701 * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
702 * gimple-fold.h (follow_all_ssa_edges): Declare.
703 * gimple-fold.c (follow_all_ssa_edges): New function.
704 * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
705 gimple_build interface and use follow_all_ssa_edges to fold the result.
706 (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
707 instead of checking for optabs directly.
708 * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
709 rather than FMA_EXPRs.
710 * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
711 call to IFN_FMA instead of an FMA_EXPR.
712
713 2018-05-17 Jim Wilson <jimw@sifive.com>
714
715 * expr.c (do_tablejump): When converting index to Pmode, if we have a
716 sign extended promoted subreg, and the range does not have the sign bit
717 set, then do a sign extend.
718
719 * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
720 test, check for sign extended subreg and/or constant operands, and
721 do a sign extend in that case.
722
723 2018-05-17 Steve Ellcey <sellcey@cavium.com>
724
725 * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
726 (thunderx2t99_multiple): Delete psuedo-units from used cpus.
727 Add untyped.
728 (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
729 Change logics_shift_reg to logics_shift_imm.
730 (thunderx2t99_fp_loadpair_basic): Delete.
731 (thunderx2t99_fp_storepair_basic): Delete.
732 (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
733 (thunderx2t99_asimd_polynomial): Delete.
734 (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
735 and neon_fp_mul_d_scalar_q.
736 (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
737 (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
738 (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
739 (thunderx2t99_asimd_lut): Add missing tbl types.
740 (thunderx2t99_asimd_ext): Delete.
741 (thunderx2t99_asimd_load1_1_mult): Delete.
742 (thunderx2t99_asimd_load1_2_mult): Delete.
743 (thunderx2t99_asimd_load1_ldp): New.
744 (thunderx2t99_asimd_load1): New.
745 (thunderx2t99_asimd_load2): Add missing *load2* types.
746 (thunderx2t99_asimd_load3): New.
747 (thunderx2t99_asimd_load4): New.
748 (thunderx2t99_asimd_store1_1_mult): Delete.
749 (thunderx2t99_asimd_store1_2_mult): Delete.
750 (thunderx2t99_asimd_store2_mult): Delete.
751 (thunderx2t99_asimd_store2_onelane): Delete.
752 (thunderx2t99_asimd_store_stp): New.
753 (thunderx2t99_asimd_store1): New.
754 (thunderx2t99_asimd_store2): New.
755 (thunderx2t99_asimd_store3): New.
756 (thunderx2t99_asimd_store4): New.
757
758 2018-05-17 Jerome Lambourg <lambourg@adacore.com>
759
760 * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
761 #include <stdint.h>. Replace intptr_t with __INTPTR_TYPE__.
762
763 2018-05-17 Pat Haugen <pthaugen@us.ibm.com>
764 Segher Boessenkool <segher@kernel.crashing.org>
765
766 PR target/85698
767 * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
768 operand.
769
770 2018-05-17 Richard Biener <rguenther@suse.de>
771
772 * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
773 for pruning loop and prune defs feeding only already visited PHIs.
774
775 2018-05-17 Richard Biener <rguenther@suse.de>
776
777 * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
778
779 2018-05-17 Bin Cheng <bin.cheng@arm.com>
780 Richard Biener <rguenther@suse.de>
781
782 PR tree-optimization/85793
783 * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
784 for VMAT_ELEMENTWISE.
785
786 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
787
788 * internal-fn.h (lookup_internal_fn): Declare
789 * internal-fn.c (lookup_internal_fn): New function.
790 * gimple.c (gimple_build_call_from_tree): Handle calls to
791 internal functions.
792 * gimple-pretty-print.c (dump_gimple_call): Print "." before
793 internal function names.
794 * tree-pretty-print.c (dump_generic_node): Likewise.
795 * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
796
797 2018-05-17 Richard Sandiford <richard.sandiford@linaro.org>
798
799 * gimple-fold.h (gimple_build): Make the function forms take
800 combined_fn rather than built_in_function.
801 (gimple_simplify): Likewise.
802 * gimple-match-head.c (gimple_simplify): Likewise.
803 * gimple-fold.c (gimple_build): Likewise.
804 * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
805 rather than gimple_build_call_internal.
806 (get_initial_defs_for_reduction): Likewise.
807 (vect_create_epilog_for_reduction): Likewise.
808 (vectorizable_live_operation): Likewise.
809
810 2018-05-17 Martin Liska <mliska@suse.cz>
811
812 * gimple-ssa-sprintf.c (format_directive): Do not use
813 space in between 'G_' and '('.
814
815 2018-05-17 Jakub Jelinek <jakub@redhat.com>
816
817 PR target/85323
818 * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
819 even if the mask is not all ones.
820
821 PR target/85323
822 * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
823 vector.
824 (ix86_gimple_fold_builtin): Likewise.
825
826 PR target/85323
827 * config/i386/i386.c: Include tree-vector-builder.h.
828 (ix86_vector_shift_count): New function.
829 (ix86_fold_builtin): Fold shift builtins by scalar count.
830 (ix86_gimple_fold_builtin): Likewise.
831
832 * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
833 _mm512_setzero): New intrinsics.
834
835 2018-05-17 James Greenhalgh <james.greenhalgh@arm.com>
836 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
837
838 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
839 code generation for cases where splatting a value is not useful.
840 * simplify-rtx.c (simplify_ternary_operation): Simplify
841 vec_merge across a vec_duplicate and a paradoxical subreg forming a vector
842 mode to a vec_concat.
843
844 2018-05-17 Olga Makhotina <olga.makhotina@intel.com>
845
846 * config.gcc: Support "goldmont-plus".
847 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
848 "goldmont-plus".
849 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
850 PROCESSOR_GOLDMONT_PLUS.
851 * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
852 (processor_target_table): Add "goldmont-plus".
853 (PTA_GOLDMONT_PLUS): Define.
854 (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
855 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
856 (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
857 (fold_builtin_cpu): Add "goldmont-plus".
858 (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
859 (ix86_option_override_internal): Add "goldmont-plus".
860 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
861 (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
862 * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
863 * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
864
865 2018-05-17 Richard Biener <rguenther@suse.de>
866
867 PR tree-optimization/85757
868 * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
869 remove defs that only feed that PHI from further processing.
870
871 2018-05-16 Jim Wilson <jimw@sifive.com>
872
873 * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
874 asterisk to name.
875 (<optab>di3_mask, <optab>di3_mask_1): Likewise.
876
877 2018-05-16 Mark Wielaard <mark@klomp.org>
878
879 * dwarf2out.c (count_index_strings): New function.
880 (output_indirect_strings): Call count_index_strings and generate
881 header for dwarf_version >= 5.
882
883 2018-05-16 Mark Wielaard <mark@klomp.org>
884
885 * dwarf2out.c (dwarf_FORM): New function.
886 (set_indirect_string): Use dwarf_FORM.
887 (reset_indirect_string): Likewise.
888 (size_of_die): Likewise.
889 (value_format): Likewise.
890 (output_die): Likewise.
891 (add_skeleton_AT_string): Likewise.
892 (output_macinfo_op): Likewise.
893 (index_string): Likewise.
894 (output_index_string_offset): Likewise.
895 (output_index_string): Likewise.
896 (count_index_strings): Likewise.
897
898 2018-05-16 Carl Love <cel@us.ibm.com>
899
900 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
901 dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
902
903 2018-05-16 Martin Jambor <mjambor@suse.cz>
904
905 * ipa-prop.c (ipa_free_all_edge_args): Remove.
906 * ipa-prop.h (ipa_free_all_edge_args): Likewise.
907
908 2018-05-16 Wilco Dijkstra <wdijkstr@arm.com>
909
910 * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
911 (fnma<mode>4): Likewise.
912 (fms<mode>4): Likewise.
913 (fnms<mode>4): Likewise.
914 (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
915 (aarch64_fnma<mode>4): Likewise.
916 (aarch64_fms<mode>4): Likewise.
917 (aarch64_fnms<mode>4): Likewise.
918 (aarch64_fnmadd<mode>4): Likewise.
919
920 2018-05-16 Jason Merrill <jason@redhat.com>
921
922 * tree.c (warn_deprecated_use): Return bool. Simplify logic.
923
924 2018-05-16 Richard Biener <rguenther@suse.de>
925
926 * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
927 (dump_stmt_cost): Declare.
928 (add_stmt_cost): Dump cost we add.
929 (add_stmt_costs): New function.
930 (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
931 No longer exported.
932 (vect_analyze_stmt): Adjust prototype.
933 (vectorizable_condition): Likewise.
934 (vectorizable_live_operation): Likewise.
935 (vectorizable_reduction): Likewise.
936 (vectorizable_induction): Likewise.
937 * tree-vect-loop.c (vect_analyze_loop_operations): Create local
938 cost vector to pass to vectorizable_ and record afterwards.
939 (vect_model_reduction_cost): Take cost vector argument and adjust.
940 (vect_model_induction_cost): Likewise.
941 (vectorizable_reduction): Likewise.
942 (vectorizable_induction): Likewise.
943 (vectorizable_live_operation): Likewise.
944 * tree-vect-slp.c (vect_create_new_slp_node): Initialize
945 SLP_TREE_NUMBER_OF_VEC_STMTS.
946 (vect_analyze_slp_cost_1): Remove.
947 (vect_analyze_slp_cost): Likewise.
948 (vect_slp_analyze_node_operations): Take visited args and
949 a target cost vector. Avoid processing already visited stmt sets.
950 (vect_slp_analyze_operations): Use a local cost vector to gather
951 costs and register those of non-discarded instances.
952 (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
953 (vect_schedule_slp_instance): Remove copying of
954 SLP_TREE_NUMBER_OF_VEC_STMTS. Instead assert that it is not
955 zero.
956 * tree-vect-stmts.c (record_stmt_cost): Remove path directly
957 adding cost. Record cost entry location.
958 (vect_prologue_cost_for_slp_op): Function to compute cost of
959 a constant or invariant generated for SLP vect in the prologue,
960 split out from vect_analyze_slp_cost_1.
961 (vect_model_simple_cost): Make static. Adjust for SLP costing.
962 (vect_model_promotion_demotion_cost): Likewise.
963 (vect_model_store_cost): Likewise, make static.
964 (vect_model_load_cost): Likewise.
965 (vectorizable_bswap): Add cost vector arg and adjust.
966 (vectorizable_call): Likewise.
967 (vectorizable_simd_clone_call): Likewise.
968 (vectorizable_conversion): Likewise.
969 (vectorizable_assignment): Likewise.
970 (vectorizable_shift): Likewise.
971 (vectorizable_operation): Likewise.
972 (vectorizable_store): Likewise.
973 (vectorizable_load): Likewise.
974 (vectorizable_condition): Likewise.
975 (vectorizable_comparison): Likewise.
976 (can_vectorize_live_stmts): Likewise.
977 (vect_analyze_stmt): Likewise.
978 (vect_transform_stmt): Adjust calls to vectorizable_*.
979 * tree-vectorizer.c: Include gimple-pretty-print.h.
980 (dump_stmt_cost): New function.
981
982 2018-05-16 Richard Biener <rguenther@suse.de>
983
984 * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
985 * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
986 * tree-ssa-dse.c: Include tree-ssa-loop.h.
987 (check_name): New callback.
988 (dse_classify_store): Track cycles via a visited bitmap of PHI
989 defs and simplify handling of in-loop and across loop dead stores
990 and properly fail for loop-variant refs. Handle byte-tracking with
991 multiple defs. Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
992 limiting the walk.
993
994 2018-05-16 Richard Sandiford <richard.sandiford@linaro.org>
995
996 * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
997 (vect_get_mask_type_for_stmt): Likewise.
998 * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
999 split out from...
1000 (vect_build_slp_tree_1): ...here. Use vect_get_vector_types_for_stmt
1001 to determine the statement's vector type and the vector type that
1002 should be used for calculating nunits. Deal with cases in which
1003 the type has to be deferred.
1004 (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
1005 and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
1006 * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
1007 (vect_determine_vf_for_stmt): New functions, split out from...
1008 (vect_determine_vectorization_factor): ...here.
1009 * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
1010 (vect_get_mask_type_for_stmt): New functions, split out from
1011 vect_determine_vectorization_factor.
1012
1013 2018-05-16 Richard Biener <rguenther@suse.de>
1014
1015 * tree-cfg.c (verify_gimple_assign_ternary): Properly
1016 verify the [VEC_]COND_EXPR embedded comparison.
1017
1018 2018-05-15 Martin Sebor <msebor@redhat.com>
1019
1020 PR tree-optimization/85753
1021 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
1022 RECORD_TYPE in addition to ARRAY_TYPE.
1023
1024 2018-05-15 Martin Sebor <msebor@redhat.com>
1025
1026 PR middle-end/85643
1027 * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
1028
1029 2018-05-15 Richard Biener <rguenther@suse.de>
1030
1031 * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
1032 add by_clobber_p one. Change algorithm to collect all defs
1033 representing uses we need to walk and try reducing them to
1034 a single one before failing.
1035 (dse_dom_walker::dse_optimize_stmt): Adjust.
1036
1037 2018-05-13 Mark Wielaard <mark@klomp.org>
1038
1039 * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
1040 (size_of_loc_descr): Likewise.
1041 (output_loc_operands): Likewise.
1042 (output_loc_operands_raw): Likewise.
1043 (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
1044 (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
1045 (hash_loc_operands): Likewise.
1046 (compare_loc_operands): Likewise.
1047
1048 2018-05-14 Mark Wielaard <mark@klomp.org>
1049
1050 * dwarf2out.c (count_index_addrs): New function.
1051 (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
1052
1053 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1054
1055 PR tree-optimization/83648
1056 * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
1057 return value as malloc candidate.
1058
1059 2018-05-15 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
1060
1061 PR ipa/85734
1062 * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite param
1063 as true in call to suggest_attribute.
1064
1065 2018-05-14 Segher Boessenkool <segher@kernel.crashing.org>
1066
1067 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
1068 -mreadonly-in-sdata.
1069
1070 2018-05-14 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1071
1072 * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
1073 New pattern.
1074 (aarch64_crypto_aesd_fused): Likewise.
1075
1076 2018-05-14 Wilco Dijkstra <wdijkstr@arm.com>
1077
1078 * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
1079 (movsi_aarch64): Likewise.
1080 (load_pairsi): Likewise.
1081 (load_pairdi): Likewise.
1082 (store_pairsi): Likewise.
1083 (store_pairdi): Likewise.
1084 (load_pairsf): Likewise.
1085 (load_pairdf): Likewise.
1086 (store_pairsf): Likewise.
1087 (store_pairdf): Likewise.
1088 (zero_extend): Likewise.
1089 (trunc): Swap alternatives.
1090 (fcvt_target): Add '?' to prefer w over r.
1091
1092 2018-05-14 Jakub Jelinek <jakub@redhat.com>
1093
1094 PR target/85756
1095 * config/i386/i386.md: Disallow non-commutative arithmetics in
1096 last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
1097 optimization. Use COMMUTATIVE_ARITH_P test rather than != MINUS
1098 in the peephole2 before it.
1099
1100 2018-05-14 Sebastian Peryt <sebastian.peryt@intel.com>
1101
1102 * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
1103 OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
1104 (ix86_handle_option): Handle -mcldemote.
1105 * config.gcc: New header.
1106 * config/i386/cldemoteintrin.h: New file.
1107 * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
1108 * config/i386/driver-i386.c (host_detect_local_cpu): Detect
1109 -mcldemote.
1110 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1111 OPTION_MASK_ISA_CLDEMOTE.
1112 * config/i386/i386.c (ix86_target_string): Add -mcldemote.
1113 (ix86_valid_target_attribute_inner_p): Ditto.
1114 (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
1115 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
1116 (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
1117 * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
1118 * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
1119 (cldemote): New.
1120 * config/i386/i386.opt: Add -mcldemote.
1121 * config/i386/x86intrin.h: New header.
1122 * doc/invoke.texi: Add -mcldemote.
1123
1124 2018-05-14 Richard Biener <rguenther@suse.de>
1125
1126 * doc/match-and-simplify.texi: Adjust :s documentation.
1127
1128 2018-05-14 Alexander Monakov <amonakov@ispras.ru>
1129
1130 * sort.cc (REORDER_23): Pass the type for the temporaries instead of
1131 intended memcpy size.
1132 (REORDER_45): Likewise.
1133
1134 2018-05-13 Alexander Monakov <amonakov@ispras.ru>
1135
1136 * sort.cc: New file.
1137 * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
1138 * vec.c (qsort_chk): Use gcc_qsort.
1139 * Makefile.in (OBJS-libcommon): Add sort.o.
1140 (build/sort.o): New target. Use it...
1141 (BUILD_RTL): ... here, and...
1142 (build/gencfn-macros): ... here, and...
1143 (build/genmatch): ... here.
1144
1145 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
1146 Chung-Ju Wu <jasonwucj@gmail.com>
1147
1148 * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
1149 * config/nds32/nds32-graywolf.md: New file.
1150 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
1151 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
1152 pipeline.
1153 * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
1154 * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
1155 * config/nds32/nds32.md (pipeline_model): Add graywolf.
1156 * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
1157 * config/nds32/pipelines.md: Include n15 settings.
1158
1159 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
1160 Chung-Ju Wu <jasonwucj@gmail.com>
1161
1162 * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
1163 * config/nds32/nds32-n13.md: New file.
1164 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
1165 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
1166 pipeline.
1167 * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
1168 * config/nds32/nds32.md (pipeline_model): Add n13.
1169 * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
1170 * config/nds32/pipelines.md: Include n13 settings.
1171
1172 2018-05-13 Kito Cheng <kito.cheng@gmail.com>
1173 Chung-Ju Wu <jasonwucj@gmail.com>
1174
1175 * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
1176 * config/nds32/nds32-n10.md: New file.
1177 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
1178 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
1179 pipeline.
1180 * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
1181 * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
1182 * config/nds32/nds32.md (pipeline_model): Add n10.
1183 * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
1184 * config/nds32/pipelines.md: Include n10 settings.
1185
1186 2018-05-13 Monk Chiang <sh.chiang04@gmail.com>
1187 Kito Cheng <kito.cheng@gmail.com>
1188 Chung-Ju Wu <jasonwucj@gmail.com>
1189
1190 * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
1191 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
1192 Add enum values for DSP extension instructions.
1193 * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
1194 New constraints.
1195 * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
1196 sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
1197 New code iterators.
1198 (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
1199 * config/nds32/nds32-dspext.md: New file for DSP implementation.
1200 * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
1201 * config/nds32/nds32-intrinsic.md: Likewise.
1202 * config/nds32/nds32_intrinsic.h: Likewise.
1203 * config/nds32/nds32-md-auxiliary.c: Likewise.
1204 * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
1205 * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
1206 (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
1207 (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
1208 * config/nds32/nds32-protos.h: New declarations for DSP extension.
1209 * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
1210 TYPE_DMAC in switch statement.
1211 * config/nds32/nds32.c: New checking and implementation for DSP
1212 extension instructions.
1213 * config/nds32/nds32.h: Likewise.
1214 * config/nds32/nds32.md: Likewise.
1215 * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
1216 * config/nds32/predicates.md: Implement new predicates for DSP
1217 extension.
1218
1219 2018-05-11 Michael Meissner <meissner@linux.vnet.ibm.com>
1220
1221 * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
1222 Reformat alternatives and attributes so it is easier to identify
1223 which constraints/attributes go with which instruction.
1224 (mov<mode>_hardfloat32, FMOVE64): Likewise.
1225 (mov<mode>_softfloat32, FMOVE64): Likewise.
1226 (mov<mode>_hardfloat64, FMOVE64): Likewise.
1227 (mov<mode>_softfloat64, FMOVE64): Likewise.
1228
1229 2018-05-11 Kelvin Nilsen <kelvin@gcc.gnu.org>
1230
1231 * doc/extend.texi (PowerPC Built-in Functions): Rename this
1232 subsection.
1233 (Basic PowerPC Built-in Functions): The new name of the
1234 subsection previously known as "PowerPC Built-in Functions".
1235 (Basic PowerPC Built-in Functions Available on all Configurations):
1236 New subsubsection.
1237 (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
1238 (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
1239 (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
1240 (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
1241
1242 2018-05-11 Martin Jambor <mjambor@suse.cz>
1243
1244 PR ipa/85655
1245 * ipa-cp.c (intersect_with_plats): Check that the lattice contains
1246 single const.
1247
1248 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
1249
1250 PR target/85733
1251 * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
1252
1253 2018-05-11 Sebastian Peryt <sebastian.peryt@intel.com>
1254
1255 * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
1256 OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
1257 (ix86_handle_option): Handle -mwaitpkg.
1258 * config.gcc: New header.
1259 * config/i386/cpuid.h (bit_WAITPKG): New bit.
1260 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
1261 * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
1262 function type.
1263 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1264 OPTION_MASK_ISA_WAITPKG.
1265 * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
1266 (ix86_option_override_internal): Add PTA_WAITPKG.
1267 (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
1268 (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
1269 IX86_BUILTIN_TPAUSE.
1270 (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
1271 __builtin_ia32_umwait and __builtin_ia32_tpause.
1272 (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
1273 IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
1274 * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
1275 * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
1276 UNSPECV_TPAUSE): New.
1277 (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
1278 * config/i386/i386.opt: Add -mwaitpkg.
1279 * config/i386/waitpkgintrin.h: New file.
1280 * config/i386/x86intrin.h: New header.
1281 * doc/invoke.texi: Add -mwaitpkg.
1282
1283 2018-05-11 Richard Earnshaw <rearnsha@arm.com>
1284
1285 PR target/85606
1286 * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
1287 equivalent.
1288 (cortex-m0): Use armv6s-m isa.
1289 (cortex-m0plus): Likewise.
1290 (cortex-m1): Likewise.
1291 (cortex-m0.small-multiply): Likewise.
1292 (cortex-m0plus.small-multiply): Likewise.
1293 (cortex-m1.small-multiply): Likewise.
1294
1295 2018-05-11 Allan Sandfeld Jensen <allan.jensen@qt.io>
1296 Jakub Jelinek <jakub@redhat.com>
1297
1298 PR tree-optimization/85692
1299 * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
1300 source permute as well.
1301
1302 2018-05-11 Martin Liska <mliska@suse.cz>
1303
1304 PR sanitizer/85556
1305 * doc/extend.texi: Document LLVM style format for no_sanitize
1306 attribute.
1307
1308 2018-05-10 Michael Meissner <meissner@linux.vnet.ibm.com>
1309
1310 * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
1311 mode_supports_vsx_dform_quad to mode_supports_dq_form.
1312 (mode_supports_vsx_dform_quad): Likewise.
1313 (mode_supports_vmx_dform): Move these functions to be next to the
1314 other mode_supports functions.
1315 (mode_supports_dq_form): Likewise.
1316 (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
1317 mode_supports_dq_form.
1318 (reg_offset_addressing_ok_p): Likewise.
1319 (offsettable_ok_by_alignment): Likewise.
1320 (rs6000_legitimate_offset_address_p): Likewise.
1321 (legitimate_lo_sum_address_p): Likewise.
1322 (rs6000_legitimize_address): Likewise.
1323 (rs6000_legitimize_reload_address): Likewise.
1324 (rs6000_secondary_reload_inner): Likewise.
1325 (rs6000_preferred_reload_class): Likewise.
1326 (rs6000_output_move_128bit): Likewise.
1327
1328 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
1329
1330 * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
1331 Generate SImode target register for null target.
1332 <case IX86_BUILTIN_XGETBV>: Ditto.
1333 <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
1334 * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
1335
1336 2018-05-10 Carl Love <cel@us.ibm.com>
1337
1338 * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
1339 dcbtt and dcbtstt if operands[2] is 0.
1340
1341 2018-05-10 Uros Bizjak <ubizjak@gmail.com>
1342
1343 PR target/85693
1344 * config/i386/sse.md (usadv64qi): New expander.
1345
1346 2018-05-10 Segher Boessenkool <segher@kernel.crashing.org>
1347
1348 * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
1349 altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
1350 -maltivec=be support.
1351 (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
1352 vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
1353 vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
1354 vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
1355 vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
1356 vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
1357 altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
1358 altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
1359 altivec_vsumsws): Adjust.
1360 (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
1361 *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
1362 altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
1363 support.
1364 (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
1365 altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
1366 altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
1367 (altivec_lve<VI_char>x): Delete expand.
1368 (*altivec_lve<VI_char>x_internal): Rename to...
1369 (altivec_lve<VI_char>x): ... this.
1370 (altivec_lvxl_<mode>): Delete expand.
1371 (*altivec_lvxl_<mode>_internal): Rename to ...
1372 (altivec_lvxl_<mode>): ... this.
1373 (altivec_stvxl_<mode>): Delete expand.
1374 (*altivec_stvxl_<mode>_internal): Rename to ...
1375 (altivec_stvxl_<mode>): ... this.
1376 (altivec_stve<VI_char>x): Delete expand.
1377 (*altivec_stve<VI_char>x_internal): Rename to ...
1378 (altivec_stve<VI_char>x): ... this.
1379 (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
1380 doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
1381 reduc_plus_scal_<mode>): Adjust.
1382 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
1383 comment.
1384 (rs6000_cpu_cpp_builtins): Adjust.
1385 (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
1386 * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
1387 altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
1388 * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
1389 -maltivec=be support.
1390 (rs6000_split_vec_extract_var): Adjust.
1391 (rs6000_split_v4si_init): Adjust.
1392 (swap_selector_for_mode): Delete.
1393 (altivec_expand_lvx_be, altivec_expand_stvx_be,
1394 altivec_expand_stvex_be): Delete.
1395 (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
1396 -maltivec=be support.
1397 (rs6000_gimple_fold_builtin): Ditto.
1398 (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
1399 Adjust.
1400 * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
1401 (TARGET_DIRECT_MOVE_64BIT): Adjust.
1402 * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
1403 * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
1404 * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
1405 unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
1406 vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
1407 *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
1408 *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
1409 *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
1410 anonymous split): Adjust.
1411 (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
1412 (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
1413
1414 2018-05-10 Eric Botcazou <ebotcazou@adacore.com>
1415
1416 * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
1417 when --with-gxx-include-dir is also specified.
1418 * configure: Regenerate.
1419
1420 2018-05-09 Jim Wilson <jimw@sifive.com>
1421
1422 PR target/84797
1423 * config.gcc (riscv*-*-*): Handle --with-multilib-list.
1424 * config/riscv/t-withmultilib: New.
1425 * config/riscv/withmultilib.h: New.
1426 * doc/install.texi: Document RISC-V --with-multilib-list support.
1427
1428 2018-05-09 Richard Biener <rguenther@suse.de>
1429
1430 * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
1431 vector.
1432 (vect_bb_vectorization_profitable_p): Adjust. Compute
1433 actual scalar cost using the cost vector and the add_stmt_cost
1434 machinery.
1435
1436 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1437
1438 PR rtl-optimization/85645
1439 * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
1440 in the REG_CFA_REGISTER note for LR, don't leave it empty.
1441
1442 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1443
1444 PR rtl-optimization/85645
1445 * shrink-wrap.c (spread_components): Return a boolean saying if
1446 anything was changed.
1447 (try_shrink_wrapping_separate): Iterate spread_components until
1448 nothing changes anymore.
1449
1450 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1451
1452 PR rtl-optimization/85645
1453 * regrename.c (build_def_use): Also kill the chains that include the
1454 destination of a REG_CFA_REGISTER note.
1455
1456 2018-05-09 Segher Boessenkool <segher@kernel.crashing.org>
1457
1458 PR rtl-optimization/85645
1459 * regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
1460 insn that has a REG_CFA_REGISTER note.
1461
1462 2018-05-09 Richard Sandiford <richard.sandiford@linaro.org>
1463
1464 * cfgexpand.c (expand_clobber): New function.
1465 (expand_gimple_stmt_1): Use it.
1466 * tree-vect-stmts.c (vect_clobber_variable): New function,
1467 split out from...
1468 (vectorizable_simd_clone_call): ...here.
1469 (vectorizable_store): Emit a clobber either side of an
1470 IFN_STORE_LANES sequence.
1471 (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
1472
1473 2018-05-09 Tom de Vries <tom@codesourcery.com>
1474
1475 PR target/85626
1476 * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
1477 (define_insn "trap_if_false"): Add exit after trap.
1478
1479 2018-05-09 Eric Botcazou <ebotcazou@adacore.com>
1480
1481 PR rtl-optimization/85638
1482 * bb-reorder.c: Include common/common-target.h.
1483 (create_forwarder_block): New function extracted from...
1484 (fix_up_crossing_landing_pad): ...here. Rename into...
1485 (dw2_fix_up_crossing_landing_pad): ...this.
1486 (sjlj_fix_up_crossing_landing_pad): New function.
1487 (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
1488 call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
1489 from both partitions and exit the loop after one iteration.
1490
1491 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
1492
1493 Revert:
1494 * doc/extend.texi (PowerPC Built-in Functions): Rename this
1495 subsection.
1496 (Basic PowerPC Built-in Functions): The new name of the
1497 subsection previously known as "PowerPC Built-in Functions".
1498 (Basic PowerPC Built-in Functions Available on all Configurations):
1499 New subsubsection.
1500 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
1501 subsubsection.
1502 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
1503 subsubsection.
1504 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
1505 subsubsection.
1506 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
1507 subsubsection.
1508
1509 2018-05-08 Jim Wilson <jimw@sifive.com>
1510
1511 * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
1512 (LD_EMUL_SUFFIX): New.
1513 (LINK_SPEC): Use it.
1514
1515 2018-05-08 Kelvin Nilsen <kelvin@gcc.gnu.org>
1516
1517 * doc/extend.texi (PowerPC Built-in Functions): Rename this
1518 subsection.
1519 (Basic PowerPC Built-in Functions): The new name of the
1520 subsection previously known as "PowerPC Built-in Functions".
1521 (Basic PowerPC Built-in Functions Available on all Configurations):
1522 New subsubsection.
1523 (Basic PowerPC Built-in Functions Available on ISA 2.05): New
1524 subsubsection.
1525 (Basic PowerPC Built-in Functions Available on ISA 2.06): New
1526 subsubsection.
1527 (Basic PowerPC Built-in Functions Available on ISA 2.07): New
1528 subsubsection.
1529 (Basic PowerPC Built-in Functions Available on ISA 3.0): New
1530 subsubsection.
1531
1532 2018-05-08 Jakub Jelinek <jakub@redhat.com>
1533
1534 PR target/85683
1535 * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
1536 after cmpelim optimization.
1537
1538 2018-05-08 Olga Makhotina <olga.makhotina@intel.com>
1539
1540 * config.gcc: Support "goldmont".
1541 * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
1542 * config/i386/i386-c.c (ix86_target_macros_internal): Handle
1543 PROCESSOR_GOLDMONT.
1544 * config/i386/i386.c (m_GOLDMONT): Define.
1545 (processor_target_table): Add "goldmont".
1546 (PTA_GOLDMONT): Define.
1547 (ix86_lea_outperforms): Add TARGET_GOLDMONT.
1548 (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
1549 (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
1550 (fold_builtin_cpu): Add "goldmont".
1551 (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
1552 (ix86_option_override_internal): Add "goldmont".
1553 * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
1554 (processor_type): Add PROCESSOR_GOLDMONT.
1555 * config/i386/i386.md: Add CPU "glm".
1556 * config/i386/glm.md: New file.
1557 * config/i386/x86-tune.def: Add m_GOLDMONT.
1558 * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
1559
1560 2018-05-08 Jakub Jelinek <jakub@redhat.com>
1561
1562 PR target/85572
1563 * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
1564 E_V4DImode.
1565 * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
1566 VI1248_AVX512VL_AVX512BW. Handle V2DImode and V4DImode if not
1567 TARGET_AVX512VL using ix86_expand_sse2_abs. Formatting fixes.
1568
1569 PR target/85317
1570 * config/i386/i386.c (ix86_fold_builtin): Handle
1571 IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
1572
1573 PR target/85480
1574 * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
1575 (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
1576
1577 2018-05-08 Richard Earnshaw <rearnsha@arm.com>
1578
1579 PR target/85658
1580 * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
1581 (check_arch): Likewise.
1582 (check_fpu): Return the result rather than printing it.
1583 (end arch): Fix operator precedence.
1584 (end cpu): Likewise.
1585 (END): Print the result from check_fpu.
1586
1587 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
1588 Alan Hayward <alan.hayward@arm.com>
1589 David Sherwood <david.sherwood@arm.com>
1590
1591 * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
1592 (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
1593 (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
1594 (*fcmuo<mode>_and): New patterns.
1595
1596 2018-05-08 Richard Sandiford <richard.sandiford@linaro.org>
1597
1598 * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
1599 (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
1600 (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
1601 (cmp_op, sve_imm_con): New code attributes.
1602 (SVE_COND_INT_CMP, imm_con): Delete.
1603 (cmp_op): Remove above unspecs from int attribute.
1604 * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
1605 to...
1606 (*cmp<cmp_op><mode>): ...this. Use UNSPEC_MERGE_PTRUE instead of
1607 comparison-specific unspecs.
1608 (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
1609 (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
1610 (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
1611 (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
1612 (*vec_fcm<cmp_op><mode>): Rename to...
1613 (*fcm<cmp_op><mode>): ...this and adjust likewise.
1614 (*vec_fcmuo<mode>): Rename to...
1615 (*fcmuo<mode>): ...this and adjust likewise.
1616 (*pred_fcm<cmp_op><mode>): New pattern.
1617 * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
1618 (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
1619 functions.
1620 (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
1621 and UNORDERED.
1622 (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
1623 (aarch64_emit_sve_predicated_cond): New function.
1624 (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
1625 (aarch64_emit_unspec_cond_or): Replace with...
1626 (aarch64_emit_sve_or_conds): ...this new function. Use
1627 aarch64_emit_sve_ptrue_op for the individual comparisons and
1628 aarch64_emit_binop to OR them together.
1629 (aarch64_emit_inverted_unspec_cond): Replace with...
1630 (aarch64_emit_sve_inverted_cond): ...this new function. Use
1631 aarch64_emit_sve_ptrue_op for the comparison and
1632 aarch64_emit_unop to invert the result.
1633 (aarch64_expand_sve_vec_cmp_float): Update after the above
1634 changes. Use aarch64_emit_sve_ptrue_op for native comparisons.
1635
1636 2018-05-07 Nathan Sidwell <nathan@acm.org>
1637
1638 * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
1639 * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
1640 (Backwards Compatibility): Likewise.
1641
1642 2018-05-07 Luis Machado <luis.machado@linaro.org>
1643
1644 PR bootstrap/85681
1645 Revert:
1646 2018-05-07 Luis Machado <luis.machado@linaro.org>
1647
1648 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1649 <prefetch_dynamic_strides>: New const bool field.
1650 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1651 prefetch_dynamic_strides.
1652 (exynosm1_prefetch_tune): Likewise.
1653 (thunderxt88_prefetch_tune): Likewise.
1654 (thunderx_prefetch_tune): Likewise.
1655 (thunderx2t99_prefetch_tune): Likewise.
1656 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
1657 (aarch64_override_options_internal): Update to set
1658 PARAM_PREFETCH_DYNAMIC_STRIDES.
1659 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1660 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1661 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1662 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1663 prefetch-dynamic-strides setting.
1664
1665 2018-05-07 Luis Machado <luis.machado@linaro.org>
1666
1667 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1668 <minimum_stride>: New const int field.
1669 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1670 minimum_stride field.
1671 (exynosm1_prefetch_tune): Likewise.
1672 (thunderxt88_prefetch_tune): Likewise.
1673 (thunderx_prefetch_tune): Likewise.
1674 (thunderx2t99_prefetch_tune): Likewise.
1675 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
1676 (aarch64_override_options_internal): Update to set
1677 PARAM_PREFETCH_MINIMUM_STRIDE.
1678 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1679 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1680 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1681 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1682 stride is constant and is below the minimum stride threshold.
1683
1684 2018-05-07 Luis Machado <luis.machado@linaro.org>
1685
1686 * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
1687 to 512.
1688
1689 2018-05-07 Luis Machado <luis.machado@linaro.org>
1690
1691 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1692 <prefetch_dynamic_strides>: New const bool field.
1693 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1694 prefetch_dynamic_strides.
1695 (exynosm1_prefetch_tune): Likewise.
1696 (thunderxt88_prefetch_tune): Likewise.
1697 (thunderx_prefetch_tune): Likewise.
1698 (thunderx2t99_prefetch_tune): Likewise.
1699 (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to false.
1700 (aarch64_override_options_internal): Update to set
1701 PARAM_PREFETCH_DYNAMIC_STRIDES.
1702 * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
1703 * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
1704 * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
1705 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
1706 prefetch-dynamic-strides setting.
1707
1708 2018-05-07 Luis Machado <luis.machado@linaro.org>
1709
1710 * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
1711 <minimum_stride>: New const int field.
1712 * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
1713 minimum_stride field.
1714 (exynosm1_prefetch_tune): Likewise.
1715 (thunderxt88_prefetch_tune): Likewise.
1716 (thunderx_prefetch_tune): Likewise.
1717 (thunderx2t99_prefetch_tune): Likewise.
1718 (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
1719 (aarch64_override_options_internal): Update to set
1720 PARAM_PREFETCH_MINIMUM_STRIDE.
1721 * doc/invoke.texi (prefetch-minimum-stride): Document new option.
1722 * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
1723 * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
1724 * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
1725 stride is constant and is below the minimum stride threshold.
1726
1727 2018-05-06 Jakub Jelinek <jakub@redhat.com>
1728
1729 PR c++/85659
1730 * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
1731 the type is addressable. Don't force op into register if it has
1732 BLKmode.
1733
1734 2018-05-05 Roland McGrath <mcgrathr@google.com>
1735
1736 PR other/77609
1737 * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
1738 any section for which we don't know a specific type it should have,
1739 regardless of name. Previously this was done only for the exact
1740 names ".init_array", ".fini_array", and ".preinit_array".
1741 (default_elf_asm_named_section): Add comment about
1742 relationship with default_section_type_flags and SECTION_NOTYPE.
1743 (get_section): Don't consider it a type conflict if one side has
1744 SECTION_NOTYPE and the other doesn't, as long as neither has the
1745 SECTION_BSS et al used in the default_section_type_flags logic.
1746
1747 2018-05-05 Tom de Vries <tom@codesourcery.com>
1748
1749 PR target/85653
1750 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
1751 (workaround_barsyncs): New function.
1752 (nvptx_reorg): Use workaround_barsyncs.
1753 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
1754 (define_expand "nvptx_membar_cta"): New define_expand.
1755 (define_insn "*nvptx_membar_cta"): New insn.
1756
1757 2018-05-04 Pekka Jääskeläinen <pekka.jaaskelainen@parmance.com>
1758
1759 * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
1760 To improve optimization opportunities.
1761 * builtin-types.def: The new needed builtin types for the above.
1762
1763 2018-05-04 Richard Biener <rguenther@suse.de>
1764
1765 * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
1766 * gimple-ssa-store-merging.c
1767 (imm_store_chain_info::output_merged_store): Remove redundant create,
1768 release split_store vector contents on failure.
1769 * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
1770 scalar stmt vector on cache hit.
1771
1772 2018-05-04 Segher Boessenkool <segher@kernel.crashing.org>
1773
1774 * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
1775 Xilinx FP support.
1776 * config.gcc (powerpc-xilinx-eabi*): Remove.
1777 * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
1778 support.
1779 (fusion_addis_mem_combo_load): Ditto.
1780 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
1781 FP support.
1782 (rs6000_cpu_cpp_builtins): Ditto.
1783 * config/rs6000/rs6000-linux.c
1784 (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
1785 * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
1786 * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
1787 support.
1788 (rs6000_setup_reg_addr_masks): Ditto.
1789 (rs6000_init_hard_regno_mode_ok): Ditto.
1790 (rs6000_option_override_internal): Ditto.
1791 (legitimate_lo_sum_address_p): Ditto.
1792 (rs6000_legitimize_address): Ditto.
1793 (rs6000_legitimize_reload_address): Ditto.
1794 (rs6000_legitimate_address_p): Ditto.
1795 (abi_v4_pass_in_fpr): Ditto.
1796 (setup_incoming_varargs): Ditto.
1797 (rs6000_gimplify_va_arg): Ditto.
1798 (rs6000_split_multireg_move): Ditto.
1799 (rs6000_savres_strategy): Ditto.
1800 (rs6000_emit_prologue_components): Ditto.
1801 (rs6000_emit_epilogue_components): Ditto.
1802 (rs6000_emit_prologue): Ditto.
1803 (rs6000_emit_epilogue): Ditto.
1804 (rs6000_elf_file_end): Ditto.
1805 (rs6000_function_value): Ditto.
1806 (rs6000_libcall_value): Ditto.
1807 * config/rs6000/rs6000.h: Ditto.
1808 (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
1809 (TARGET_MINMAX): ... this. New.
1810 (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
1811 * config/rs6000/rs6000.md: Remove Xilinx FP support.
1812 (*movsi_internal1_single): Delete.
1813 * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
1814 mfpu=, mxilinx-fpu): Delete.
1815 * config/rs6000/singlefp.h: Delete.
1816 * config/rs6000/sysv4.h: Remove Xilinx FP support.
1817 * config/rs6000/t-rs6000: Ditto.
1818 * config/rs6000/t-xilinx: Delete.
1819 * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
1820 * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
1821 (VStype_simple): Delete.
1822 (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
1823 * config/rs6000/xfpu.h: Delete.
1824 * config/rs6000/xfpu.md: Delete.
1825 * config/rs6000/xilinx.h: Delete.
1826 * config/rs6000/xilinx.opt: Delete.
1827 * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
1828 -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
1829
1830 2018-05-04 Tom de Vries <tom@codesourcery.com>
1831
1832 PR libgomp/85639
1833 * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
1834 if ignore == 0.
1835
1836 2018-05-04 Richard Biener <rguenther@suse.de>
1837
1838 PR middle-end/85627
1839 * tree-complex.c (update_complex_assignment): We are always in SSA form.
1840 (expand_complex_div_wide): Likewise.
1841 (expand_complex_operations_1): Likewise.
1842 (expand_complex_libcall): Preserve EH info of the original stmt.
1843 (tree_lower_complex): Handle removed blocks.
1844 * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
1845 on complex multiplication and division libcall builtins.
1846
1847 2018-05-04 Richard Biener <rguenther@suse.de>
1848
1849 PR middle-end/85574
1850 * fold-const.c (negate_expr_p): Restrict negation of operand
1851 zero of a division to when we know that can happen without
1852 overflow.
1853 (fold_negate_expr_1): Likewise.
1854
1855 2018-05-04 Jakub Jelinek <jakub@redhat.com>
1856
1857 PR libstdc++/85466
1858 * real.h (real_nextafter): Declare.
1859 * real.c (real_nextafter): New function.
1860 * fold-const-call.c (fold_const_nextafter): New function.
1861 (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
1862 CASE_CFN_NEXTTOWARD.
1863 (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
1864 even when arg1_mode is different from arg0_mode.
1865
1866 2018-05-03 Nathan Sidwell <nathan@acm.org>
1867
1868 * doc/extend.texi (Deprecated Features): Remove
1869 -ffriend-injection.
1870 (Backwards Compatibility): Likewise.
1871 * doc/invoke.texi (C++ Language Options): Likewise.
1872 (C++ Dialect Options): Likewise.
1873
1874 2018-05-03 Jakub Jelinek <jakub@redhat.com>
1875
1876 PR target/85530
1877 * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
1878 _mm512_mask_mullox_epi64): New intrinsics.
1879
1880 2018-05-03 Tom de Vries <tom@codesourcery.com>
1881
1882 PR testsuite/85106
1883 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1884 dump files): Add offload-tree.
1885
1886 2018-05-03 Richard Biener <rguenther@suse.de>
1887
1888 PR tree-optimization/85615
1889 * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
1890 to loops not nested in BBs loop father to avoid creating multi-entry
1891 loops.
1892
1893 2018-05-03 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
1894
1895 PR tree-optimization/70291
1896 * tree-complex.c (expand_complex_libcall): Add type, inplace_p
1897 arguments. Change return type to tree. Emit libcall as a new
1898 statement rather than replacing existing one when inplace_p is true.
1899 (expand_complex_multiplication_components): New function.
1900 (expand_complex_multiplication): Expand floating-point complex
1901 multiplication using the above.
1902 (expand_complex_division): Rename inner_type parameter to type.
1903 Update expand_complex_libcall call-site.
1904 (expand_complex_operations_1): Update expand_complex_multiplication
1905 and expand_complex_division call-sites.
1906
1907 2018-05-02 Jakub Jelinek <jakub@redhat.com>
1908
1909 PR target/85582
1910 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1911 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1912 *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
1913 the highest significant bit of the shift count mask is clear. In
1914 check whether and[sq]i3 is needed verify that all significant bits
1915 of the shift count other than the highest are set.
1916
1917 2018-05-02 Tom de Vries <tom@codesourcery.com>
1918
1919 PR libgomp/82428
1920 * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
1921 * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
1922 (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
1923 * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
1924 (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
1925 * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
1926 __builtin_goacc_parlevel_size.
1927
1928 2018-05-02 Richard Biener <rguenther@suse.de>
1929
1930 PR tree-optimization/85597
1931 * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
1932 do not use split vect_get_vec_defs call but call vect_get_slp_defs
1933 directly.
1934
1935 2018-05-02 Tom de Vries <tom@codesourcery.com>
1936
1937 PR testsuite/85106
1938 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1939 dump files): Add ltrans-tree.
1940
1941 2018-05-02 Tom de Vries <tom@codesourcery.com>
1942
1943 PR testsuite/85106
1944 * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
1945 dump files): Add wpa-ipa.
1946
1947 2018-05-02 Segher Boessenkool <segher@kernel.crashing.org>
1948
1949 * config.gcc (powerpc*-*-*): Remove paired.h. Unsupport the
1950 powerpc*-*-linux*paired* target.
1951 * config/rs6000/750cl.h: Delete.
1952 * config/rs6000/paired.h: Delete.
1953 * config/rs6000/paired.md: Delete.
1954 * config/rs6000/predicates.md (easy_vector_constant): Remove paired
1955 float support.
1956 * config/rs6000/rs6000-builtin.def: Remove paired float support.
1957 * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
1958 comment. Remove paired float support.
1959 * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
1960 * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
1961 VECTOR_PAIRED.
1962 * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
1963 paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
1964 declarations.
1965 * config/rs6000/rs6000.c: Remove paired float support.
1966 (paired_expand_vector_init, paired_expand_vector_move,
1967 paired_emit_vector_compare, paired_emit_vector_cond_expr,
1968 (paired_expand_lv_builtin, paired_expand_stv_builtin,
1969 paired_expand_builtin, paired_expand_predicate_builtin,
1970 paired_init_builtins): Delete.
1971 * config/rs6000/rs6000.h: Remove paired float support.
1972 * config/rs6000/rs6000.md: Remove paired float support.
1973 (move_from_CR_ov_bit): Delete.
1974 * config/rs6000/rs6000.opt (mpaired): Delete.
1975 * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
1976 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
1977
1978 2018-05-02 Richard Biener <rguenther@suse.de>
1979
1980 PR middle-end/85567
1981 * gimplify.c (gimplify_save_expr): When in SSA form allow
1982 SAVE_EXPRs to compute to SSA vars.
1983
1984 2018-05-02 Jakub Jelinek <jakub@redhat.com>
1985
1986 PR target/85582
1987 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
1988 *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
1989 *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
1990 clobber operands[2], instead use a new pseudo. Formatting fixes.
1991
1992 2018-05-02 Richard Sandiford <richard.sandiford@linaro.org>
1993
1994 PR tree-optimization/85586
1995 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
1996 exit early for statements in the same group if the accesses are
1997 not strided.
1998
1999 2018-05-02 Tom de Vries <tom@codesourcery.com>
2000
2001 PR lto/85451
2002 * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
2003 error message.
2004
2005 2018-05-01 Marc Glisse <marc.glisse@inria.fr>
2006
2007 PR tree-optimization/85143
2008 * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
2009
2010 2018-05-01 Tom de Vries <tom@codesourcery.com>
2011
2012 PR lto/85451
2013 * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
2014 not found" error message.
2015
2016 2018-05-01 Tom de Vries <tom@codesourcery.com>
2017
2018 PR other/83786
2019 * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
2020 * vec.c (test_ordered_remove_if): New function.
2021 (vec_c_tests): Call test_ordered_remove_if.
2022 * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
2023 * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
2024 * tree-vect-patterns.c (vect_pattern_recog_1): Use
2025 VEC_ORDERED_REMOVE_IF.
2026
2027 2018-05-01 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
2028
2029 PR tree-optimization/82665
2030 * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
2031 pointer subtraction where arguments come from a memchr call.
2032
2033 2018-05-01 Jakub Jelinek <jakub@redhat.com>
2034
2035 * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
2036 --push-state --as-needed and --pop-state instead of --as-needed and
2037 --no-as-needed if ld supports it.
2038 * configure: Regenerated.
2039
2040 PR web/85578
2041 * doc/install.texi2html: Replace _002d with - and _002a with * in
2042 generated html files using sed.
2043
2044 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2045
2046 PR c++/85523
2047 * gcc-rich-location.c (blank_line_before_p): New function.
2048 (use_new_line): New function.
2049 (gcc_rich_location::add_fixit_insert_formatted): New function.
2050 * gcc-rich-location.h
2051 (gcc_rich_location::add_fixit_insert_formatted): New function.
2052
2053 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2054
2055 * selftest.c (assert_streq): Rename "expected" and "actual" to
2056 "val1" and "val2". Extend NULL-handling to cover both inputs
2057 symmetrically, while still requiring both to be non-NULL for a pass.
2058 * selftest.h (assert_streq): Rename "expected" and "actual" to
2059 "val1" and "val2".
2060 (ASSERT_EQ): Likewise.
2061 (ASSERT_EQ_AT): Likewise.
2062 (ASSERT_KNOWN_EQ): Likewise.
2063 (ASSERT_KNOWN_EQ_AT): Likewise.
2064 (ASSERT_NE): Likewise.
2065 (ASSERT_MAYBE_NE): Likewise.
2066 (ASSERT_MAYBE_NE_AT): Likewise.
2067 (ASSERT_STREQ): Likewise. Clarify that both must be non-NULL for
2068 the assertion to pass.
2069 (ASSERT_STREQ_AT): Likewise.
2070
2071 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
2072
2073 * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
2074 interaction with -pie.
2075
2076 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2077
2078 * selftest.h: Fix alphabetization of per-source-file selftest
2079 declarations.
2080
2081 2018-04-30 Jason Merrill <jason@redhat.com>
2082
2083 PR c++/61982 - dead stores to destroyed objects.
2084 * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
2085 of clobber.
2086
2087 2018-04-30 Jason Merrill <jason@redhat.com>
2088
2089 * tree.c (build_clobber): New.
2090 * tree.h: Declare it.
2091 * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
2092
2093 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2094
2095 * diagnostic-show-locus.c (layout::layout): Update for
2096 location_get_source_line returning a char_span.
2097 (struct char_span): Move to input.h.
2098 (struct correction): Update for fields in char_span becoming
2099 private.
2100 (struct source_line): Update for location_get_source_line
2101 returning a char_span.
2102 (layout::print_line): Likewise.
2103 * edit-context.c (edited_file::print_content): Likewise.
2104 (edited_file::print_diff_hunk): Likewise.
2105 (edited_file::print_run_of_changed_lines): Likewise.
2106 (edited_file::get_num_lines): Likewise.
2107 (edited_line::edited_line): Likewise.
2108 * final.c (asm_show_source): Likewise.
2109 * input.c (location_get_source_line): Convert return type
2110 from const char * to char_span, losing the final "line_len"
2111 param.
2112 (dump_location_info): Update for the above.
2113 (get_substring_ranges_for_loc): Likewise. Use a char_span
2114 when handling the literal within the line.
2115 (test_reading_source_line): Update for location_get_source_line
2116 returning a char_span.
2117 * input.h (class char_span): Move here from
2118 diagnostic-show-locus.c, converting from a struct to a class.
2119 Make data members private.
2120 (char_span::operator bool): New.
2121 (char_span::length): New.
2122 (char_span::get_buffer): New.
2123 (char_span::operator[]): New.
2124 (char_span::subspan): Make const.
2125 (char_span::xstrdup): New.
2126 (location_get_source_line): Convert return type from const char *
2127 to char_span, losing the final "line_size" param.
2128
2129 2018-04-30 Jan Hubicka <jh@suse.cz>
2130
2131 * lto-wrapper.c (ltrans_priorities): New static var.
2132 (cmp_priority): New.
2133 (run_gcc): Read priorities and if doing parallel build order
2134 the Makefile by them.
2135
2136 2018-04-30 David Malcolm <dmalcolm@redhat.com>
2137
2138 * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
2139
2140 2018-04-30 Richard Biener <rguenther@suse.de>
2141
2142 * tree-cfg.c (verify_address): Remove base argument, add
2143 flag whether to check TREE_ADDRESSABLE and do that.
2144 (verify_expr): Remove.
2145 (verify_types_in_gimple_reference): Add pieces from verify_expr.
2146 (verify_gimple_assign_single): Likewise.
2147 (verify_gimple_switch): Likewise.
2148 (verify_expr_location_1): Dereference tp once. Add (disabled)
2149 piece from verify_expr.
2150 (verify_gimple_in_cfg): Do not call verify_expr on all ops.
2151
2152 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
2153
2154 * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
2155
2156 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
2157
2158 * config/arc/arc-protos.h (prepare_extend_operands): Remove.
2159 (small_data_pattern): Likewise.
2160 (arc_rewrite_small_data): Likewise.
2161 * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
2162 (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
2163 (get_symbol_alignment): New function.
2164 (legitimate_small_data_address_p): Likewise.
2165 (legitimate_scaled_address): Update, call
2166 legitimate_small_data_address_p.
2167 (output_sdata): New static variable.
2168 (arc_print_operand): Update how we handle small data operands.
2169 (arc_print_operand_address): Likewise.
2170 (arc_legitimate_address_p): Update, use
2171 legitimate_small_data_address_p.
2172 (arc_rewrite_small_data_p): Remove.
2173 (arc_rewrite_small_data_1): Likewise.
2174 (arc_rewrite_small_data): Likewise.
2175 (small_data_pattern): Likewise.
2176 (compact_sda_memory_operand): Update to use
2177 legitimate_small_data_address_p and get_symbol_alignment.
2178 (prepare_move_operands): Don't rewite sdata pattern.
2179 (prepare_extend_operands): Remove.
2180 * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
2181 pattern.
2182 (zero_extendqisi2): Likewise.
2183 (zero_extendhisi2): Likewise.
2184 (extendqihi2): Likewise.
2185 (extendqisi2): Likewise.
2186 (extendhisi2): Likewise.
2187 (addsi3): Likewise.
2188 (subsi3): Likewise.
2189 (andsi3): Likewise.
2190 * config/arc/constraints.md (Usd): Change it to memory constraint.
2191
2192 2018-04-30 Claudiu Zissulescu <claziss@synopsys.com>
2193
2194 * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
2195 as source of std instructions.
2196 * config/arc/arc.md (movsi_insn): Update pattern predicate to
2197 allow 6-bit constants as source for store instructions.
2198 (movdi_insn): Update instruction pattern to allow 6-bit constants
2199 as source for store instructions.
2200
2201 2018-04-30 Jonathan Wakely <jwakely@redhat.com>
2202
2203 * doc/invoke.texi (-fdebug-types-section): Fix grammar.
2204
2205 2018-04-30 Nathan Sidwell <nathan@acm.org>
2206 Sandra Loosemore <sandra@codesourcery.com>
2207
2208 * dumpfile.c (dump_open): Allow '-' for stdout.
2209 * doc/invoke.texi (Developer Options): Document dump filename
2210 determination early. Document stdin/stdout selection.
2211
2212 2018-04-30 Andrew Sadek <andrew.sadek.se@gmail.com>
2213
2214 Microblaze Target: PIC data text relative
2215
2216 * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
2217 * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
2218 Add declaration.
2219 * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
2220 CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
2221 * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
2222 New addressing mode for data-text relative position indepenedent code.
2223 (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
2224 'ADDRESS_SYMBOLIC_TXT_REL'.
2225 (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
2226 (microblaze_legitimate_pic_operand): Exclude function calls from
2227 pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
2228 (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
2229 addresses cases.
2230 (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
2231 (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
2232 (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
2233 for 'address + offset'.
2234 (microblaze_expand_prologue): Add new function prologue call for
2235 'r20' assignation.
2236 (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
2237 'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
2238 table in case of TARGET_PIC_DATA_TEXT_REL.
2239 (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
2240 * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
2241 Add new macros 'UNSPEC_TEXT',
2242 'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
2243 + exclude function calls from 'UNSPEC_PLT' in case of data text
2244 relative mode.
2245 * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
2246 new target hook for generating address diff vector tables in case of
2247 flag_pic.
2248 * doc/tm.texi : Regenerate.
2249 * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
2250 'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
2251 of addr diff vector generation.
2252 * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
2253 target hook definition.
2254 * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
2255 Add default function for generate_pic_addr_diff_vec -> flag_pic.
2256 * doc/invoke.texi (Add new pic option): Add new microblaze pic
2257 option for data text relative.
2258
2259 2018-04-30 Richard Biener <rguenther@suse.de>
2260
2261 * tree-chrec.h (evolution_function_is_constant_p): Remove
2262 redundant check.
2263 * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
2264
2265 2018-04-30 Richard Biener <rguenther@suse.de>
2266
2267 PR bootstrap/85571
2268 * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
2269
2270 2018-04-30 Richard Biener <rguenther@suse.de>
2271
2272 PR tree-optimization/28364
2273 PR tree-optimization/85275
2274 * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
2275 copying first exit test.
2276
2277 2018-04-28 Mark Wielaard <mark@klomp.org>
2278
2279 * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
2280 dwarf_version >= 5.
2281 (dwarf_AT): Handle DW_AT_addr_base.
2282 (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
2283
2284 2018-04-28 Uros Bizjak <ubizjak@gmail.com>
2285
2286 PR target/84431
2287 * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
2288 (*ashl<dwi>3_doubleword_mask_1): Ditto.
2289 (*<shift_insn><dwi>3_doubleword_mask): Ditto.
2290 (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
2291
2292 2018-04-28 Richard Biener <rguenther@suse.de>
2293
2294 * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
2295 (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
2296 to reflect use. Only add interesting stmts.
2297
2298 2018-04-27 Martin Jambor <mjambor@suse.cz>
2299
2300 PR ipa/85549
2301 * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
2302 the jump function allows for passing through aggregate values.
2303
2304 2018-04-27 David Malcolm <dmalcolm@redhat.com>
2305
2306 * input.h (in_system_header_at): Convert from macro to inline
2307 function.
2308 (from_macro_expansion_at): Likewise.
2309 (from_macro_definition_at): Likewise.
2310
2311 2018-04-27 Jeff Law <law@redhat.com>
2312
2313 * config.gcc: Mark tile* targets as deprecated/obsolete.
2314
2315 2018-04-27 Richard Biener <rguenther@suse.de>
2316
2317 * config/aarch64/aarch64.c: Simplify ap.__stack advance and
2318 fix for ILP32.
2319
2320 2018-04-27 Richard Biener <rguenther@suse.de>
2321
2322 * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
2323
2324 2018-04-27 Uros Bizjak <ubizjak@gmail.com>
2325
2326 * config/i386/i386.md (*movti_internal): Substitute Ye constraint
2327 with Yd constraint. Set "preferred_for_speed" attribute from
2328 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
2329 with Yd constraint.
2330 (*movdi_internal): Ditto.
2331 (movti_interunit splitters): Remove
2332 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
2333 (movdi_interunit splitters): Ditto.
2334 * config/i386/constraints.md (Ye): Remove.
2335 (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
2336
2337 2018-04-27 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2338
2339 PR target/85512
2340 * config/aarch64/constraints.md (Usg): Limit to 31.
2341 (Usj): Limit to 63.
2342
2343 2018-04-27 Jakub Jelinek <jakub@redhat.com>
2344
2345 PR tree-optimization/85529
2346 * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
2347 argument. Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
2348 rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
2349 zero extension or masking of the MSB bit.
2350 (optimize_range_tests): Add FIRST_BB argument, pass it through
2351 to optimize_range_tests_var_bound.
2352 (maybe_optimize_range_tests, reassociate_bb): Adjust
2353 optimize_range_tests callers.
2354
2355 2018-04-26 Richard Biener <rguenther@suse.de>
2356 Jakub Jelinek <jakub@redhat.com>
2357
2358 * cgraph.h (symbol_table): Just declare debug method here.
2359 * symtab.c (symbol_table::debug): Define.
2360
2361 2018-04-26 Eric Botcazou <ebotcazou@adacore.com>
2362
2363 * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
2364
2365 2018-04-26 Uros Bizjak <ubizjak@gmail.com>
2366
2367 * config/i386/i386.md ("isa" attribute): Add x64_sse2.
2368 ("enabled" attribute): Handle x64_sse2 "isa" attribute.
2369 (*movdi_internal): Substitute Yi and Yj constraint with x
2370 and Ym and Yn constraint with y constraint. Update "isa"
2371 attribute and set "preferred_for_speed" attribute from
2372 TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
2373 (*movsi_internal): Ditto.
2374 (*movdf_internal): Ditto.
2375 (*movsf_internal): Ditto.
2376 (*zero_extendsidi2): Ditto.
2377 * config/i386/sse.md (vec_set<mode>_0): Ditto.
2378 (sse2_loadld): Ditto.
2379 (*vec_extract<ssevecmodelower>_0): Ditto.
2380 (*vec_extractv4si_0_zext_sse4): Ditto.
2381 (vec_concatv2di): Ditto.
2382 (*vec_dup<mode>): Ditto.
2383 * config/i386/mmx.md (*mov<mode>_internal): Ditto.
2384 * config/i386/constraints.md (Yi): Remove.
2385 (Yj): Remove.
2386 (Ym): Remove.
2387 (Yn): Remove.
2388
2389 2018-04-26 Nathan Sidwell <nathan@acm.org>
2390
2391 * dumpfile.c (dump_open): New.
2392 (dump_open_alternate_stream, dump_start, dump_begin): Call it.
2393 (dump_finish): Detect stdio/stderr by value not name.
2394
2395 2018-04-26 Jonathan Wakely <jwakely@redhat.com>
2396
2397 * doc/invoke.texi (-Wreturn-type): Document default status for C++.
2398
2399 2018-04-26 Tom de Vries <tom@codesourcery.com>
2400
2401 PR target/84952
2402 * config/nvptx/nvptx.c (verify_neutering_jumps)
2403 (verify_neutering_labels): New function
2404 (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
2405
2406 2018-04-26 Tom de Vries <tom@codesourcery.com>
2407
2408 PR target/84025
2409 * config/nvptx/nvptx.c (needs_neutering_p): New function.
2410 (nvptx_single): Use needs_neutering_p to skip over insns that do not
2411 need neutering.
2412
2413 2018-04-26 Richard Biener <rguenther@suse.de>
2414 Tom de Vries <tom@codesourcery.com>
2415
2416 PR lto/85422
2417 * lto-streamer-out.c (output_function): Fixup loops if required to match
2418 discovery done in the reader.
2419
2420 2018-04-26 Richard Biener <rguenther@suse.de>
2421
2422 PR tree-optimization/85116
2423 * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
2424 have a loop exit from the single latch predecessor. Remove
2425 case of header with just condition.
2426 (ch_base::copy_headers): Exclude infinite loops from any
2427 processing.
2428 (pass_ch::execute): Record exits.
2429
2430 2018-04-26 Richard Biener <rguenther@suse.de>
2431
2432 * tree-vect-data-refs.c (vect_get_data_access_cost): Get
2433 prologue cost vector and pass it to vect_get_load_cost.
2434 (vect_get_peeling_costs_all_drs): Likewise.
2435 (vect_peeling_hash_get_lowest_cost): Likewise.
2436 (vect_enhance_data_refs_alignment): Likewise.
2437
2438 2018-04-26 Richard Biener <rguenther@suse.de>
2439
2440 PR middle-end/85450
2441 * tree-cfg.c (verify_gimple_assign_unary): Restore proper
2442 checking of integer<->pointer conversions.
2443 * omp-expand.c (expand_omp_for_static_nochunk): Avoid
2444 sign-/zero-extending pointer types.
2445 (expand_omp_for_static_chunk): Likewise.
2446
2447 2018-03-22 Hans-Peter Nilsson <hp@axis.com>
2448 Jean Lee <xiaoyur347@gmail.com>
2449
2450 * config/mips/mips.c (mips_asan_shadow_offset): New function.
2451 (TARGET_ASAN_SHADOW_OFFSET): Define.
2452 * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
2453 true for -fsanitize=address.
2454
2455 2018-04-25 Mark Wielaard <mark@klomp.org>
2456
2457 * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
2458 shorter ones.
2459
2460 2018-04-25 Jakub Jelinek <jakub@redhat.com>
2461
2462 * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
2463 than "alu", remove explicit "memory" and "imm_disp" attributes.
2464 (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
2465
2466 PR middle-end/85414
2467 * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
2468 case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
2469 gen_lowpart_no_emit.
2470
2471 2018-04-25 Sebastian Peryt <sebastian.peryt@intel.com>
2472
2473 PR target/85473
2474 * config/i386/i386.c (ix86_expand_builtin): Change memory
2475 operand to XI, extend p0 to Pmode.
2476 * config/i386/i386.md: Change unspec volatile and operand
2477 1 mode to XI, change operand 0 mode to P.
2478
2479 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2480
2481 * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
2482 GET_MODE_MASK before any checking.
2483 (nds32_can_use_bset_p): Likewise.
2484 (nds32_can_use_btgl_p): Likewise.
2485
2486 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2487
2488 * config/nds32/nds32-doubleword.md: New define_split pattern for
2489 illegal register number.
2490
2491 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2492
2493 * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
2494
2495 2018-04-25 Chung-Ju Wu <jasonwucj@gmail.com>
2496
2497 * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
2498
2499 2018-04-25 Richard Biener <rguenther@suse.de>
2500
2501 * lto-streamer.h (LTO_major_version): Bump to 8.
2502
2503 2018-04-25 Jakub Jelinek <jakub@redhat.com>
2504
2505 * BASE-VER: Set to 9.0.0.
2506
2507 2018-04-24 Segher Boessenkool <segher@kernel.crashing.org>
2508
2509 * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
2510 in __abskf2 and __powikf2.
2511
2512 2018-04-24 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
2513
2514 PR target/85512
2515 * config/aarch64/constraints.md (Usg, Usj): New constraints.
2516 * config/aarch64/iterators.md (cmode_simd): New mode attribute.
2517 * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
2518 Use the above on operand 2. Reindent.
2519 (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
2520
2521 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
2522
2523 PR target/85485
2524 * common/config/i386/i386-common.c (ix86_handle_option): Don't
2525 handle OPT_mcet.
2526 * config/i386/i386.opt (mcet): Removed.
2527 * doc/install.texi: Remove -mcet documentation.
2528 * doc/invoke.texi: Likewise.
2529
2530 2018-04-24 H.J. Lu <hongjiu.lu@intel.com>
2531
2532 PR target/85485
2533 * doc/install.texi: Remove -mcet from bootstrap-cet.
2534
2535 2018-04-24 Jakub Jelinek <jakub@redhat.com>
2536
2537 PR target/85511
2538 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
2539 __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
2540 if TARGET_64BIT.
2541
2542 PR target/85503
2543 * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
2544 const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
2545 containing a CONST_VECTOR.
2546
2547 2018-04-24 Cesar Philippidis <cesar@codesourcery.com>
2548
2549 * doc/install.texi: Update newlib dependency for nvptx.
2550
2551 2018-04-24 Jakub Jelinek <jakub@redhat.com>
2552
2553 PR target/85508
2554 * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
2555 instead of INTVAL when shifting x left.
2556
2557 2018-04-24 Andreas Krebbel <krebbel@linux.ibm.com>
2558
2559 PR tree-optimization/85478
2560 * tree-vect-loop.c (vect_analyze_loop_2): Do not call
2561 vect_grouped_store_supported for single element vectors.
2562
2563 2018-04-24 Richard Biener <rguenther@suse.de>
2564
2565 PR target/85491
2566 * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
2567 load cost increase to the case of non-constant step.
2568
2569 2018-04-24 Jakub Jelinek <jakub@redhat.com>
2570
2571 PR target/84828
2572 * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
2573 destination if any_malformed_asm.
2574
2575 2018-04-23 Eric Botcazou <ebotcazou@adacore.com>
2576
2577 PR middle-end/85496
2578 * expr.c (store_field): In the bitfield case, if the value comes from
2579 a function call and is returned in registers by means of a PARALLEL,
2580 do not change the mode of the temporary unless BLKmode and VOIDmode.
2581
2582 2018-04-23 Andrey Belevantsev <abel@ispras.ru>
2583
2584 PR rtl-optimization/85423
2585 * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
2586 dependencies to debug insns when the previous insn is non-debug.
2587
2588 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
2589
2590 * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
2591 enums into a single definition.
2592 (fls): Fix predicates and printing.
2593 (seti): Likewise.
2594
2595 2018-04-23 Claudiu Zissulescu <claziss@synopsys.com>
2596
2597 * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
2598 * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
2599 and short u6 immediate.
2600 (check_if_valid_sleep_operand): Remove.
2601 * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
2602
2603 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2604
2605 * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
2606 flag_always_save_lp condition.
2607 * config/nds32/nds32.opt (malways-save-lp): New option.
2608
2609 2018-04-22 Shiva Chen <shiva0217@gmail.com>
2610
2611 * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
2612 * config/nds32/nds32.c (nds32_use_load_post_increment): New.
2613 * config/nds32/nds32.h
2614 (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
2615 (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
2616
2617 2018-04-22 Shiva Chen <shiva0217@gmail.com>
2618
2619 * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
2620 * config/nds32/nds32.c (nds32_ls_333_p): Remove.
2621
2622 2018-04-22 Shiva Chen <shiva0217@gmail.com>
2623 Chung-Ju Wu <jasonwucj@gmail.com>
2624
2625 * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
2626 Declare.
2627 * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
2628 * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
2629
2630 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2631
2632 * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
2633
2634 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2635
2636 * config/nds32/nds32-protos.h (nds32_data_alignment,
2637 nds32_local_alignment): Declare.
2638 * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
2639 nds32_local_alignment): New functions.
2640 (TARGET_CONSTANT_ALIGNMENT): Define.
2641 * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
2642
2643 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2644
2645 * config/nds32/nds32.c
2646 (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
2647 (TARGET_MODES_TIEABLE_P): Likewise.
2648
2649 2018-04-22 Chung-Ju Wu <jasonwucj@gmail.com>
2650
2651 * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
2652 level Ofast and Og.
2653
2654 2018-04-22 Monk Chiang <sh.chiang04@gmail.com>
2655 Chung-Ju Wu <jasonwucj@gmail.com>
2656
2657 * config/nds32/constants.md (unspec_volatile_element): Add enum values
2658 for unaligned access.
2659 * config/nds32/nds32-intrinsic.c: Implementation of expanding
2660 unaligned access.
2661 * config/nds32/nds32-intrinsic.md: Likewise.
2662 * config/nds32/nds32_intrinsic.h: Likewise.
2663 * config/nds32/nds32.h (nds32_builtins): Likewise.
2664 * config/nds32/nds32.opt (munaligned-access): New option.
2665 * config/nds32/nds32.c (nds32_asm_file_start): Display
2666 flag_unaligned_access status.
2667
2668 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
2669
2670 * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
2671 -mno-relax is present.
2672 * config/riscv/linux.h (LINK_SPEC): Ditto.
2673
2674 2018-04-20 Martin Sebor <msebor@redhat.com>
2675
2676 PR c/85365
2677 * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
2678 for null pointers.
2679 (gimple_fold_builtin_stxcpy_chk): Same.
2680 * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
2681
2682 2018-04-20 Michael Meissner <meissner@linux.ibm.com>
2683
2684 PR target/85456
2685 * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
2686 __powikf2 when long double is IEEE 128-bit.
2687
2688 2018-04-20 Kito Cheng <kito.cheng@gmail.com>
2689
2690 * config/riscv/riscv.c (riscv_first_stack_step): Round up min
2691 step to make sure stack always aligned.
2692
2693 2018-04-20 Carl Love <cel@us.ibm.com>
2694
2695 PR target/83402
2696 * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
2697 size check for arg0.
2698
2699 2018-04-20 Nathan Sidwell <nathan@codesourcery.com>
2700 Tom de Vries <tom@codesourcery.com>
2701
2702 PR target/85445
2703 * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
2704 Emit insns for calls too.
2705 (nvptx_find_par): Always look for worker-level predecessor insn.
2706 (nvptx_propagate): Add is_call parm, return bool. Copy frame for
2707 calls.
2708 (nvptx_vpropagate, nvptx_wpropagate): Adjust.
2709 (nvptx_process_pars): Propagate frames for calls.
2710
2711 2018-04-20 H.J. Lu <hongjiu.lu@intel.com>
2712
2713 PR target/85469
2714 * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
2715 Removed.
2716 (OPTION_MASK_ISA_IBT_UNSET): Likewise.
2717 (ix86_handle_option): Don't handle OPT_mibt.
2718 * config/i386/cet.h: Check __CET__ instead of __IBT__ and
2719 __SHSTK__.
2720 * config/i386/driver-i386.c (host_detect_local_cpu): Remove
2721 has_ibt and ibt.
2722 * config/i386/i386-c.c (ix86_target_macros_internal): Don't
2723 check OPTION_MASK_ISA_IBT nor flag_cf_protection.
2724 (ix86_target_macros): Define __CET__ with flag_cf_protection
2725 for -fcf-protection.
2726 * config/i386/i386.c (isa2_opts): Remove -mibt.
2727 * config/i386/i386.h (TARGET_IBT): Removed.
2728 (TARGET_IBT_P): Likewise.
2729 (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
2730 * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
2731 * config/i386/i386.opt (mcet): Update help message.
2732 (mshstk): Likewise.
2733 (mibt): Removed.
2734 * doc/invoke.texi: Remove -mibt. Document __CET__. Document
2735 -mcet as an alias for -mshstk.
2736
2737 2018-04-20 Richard Biener <rguenther@suse.de>
2738
2739 PR middle-end/85475
2740 * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
2741 complexity by forcing a single use of the multiply operand.
2742
2743 2018-04-20 Martin Jambor <mjambor@suse.cz>
2744
2745 ipa/85449
2746 * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
2747 recursion dependency to only apply to non-clones.
2748
2749 2018-04-20 Martin Jambor <mjambor@suse.cz>
2750
2751 ipa/85447
2752 * ipa-cp.c (create_specialized_node): Check that clones of
2753 self-recursive edges exist during IPA-CP.
2754
2755 2018-04-19 Toon Moene <toon@moene.org>
2756
2757 * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
2758 by -O3.
2759
2760 2018-04-19 Jakub Jelinek <jakub@redhat.com>
2761
2762 PR tree-optimization/85467
2763 * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
2764 VECTOR_TYPE_P macro. If type is vector type, VIEW_CONVERT_EXPR the
2765 VECTOR_CST element to type.
2766
2767 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
2768
2769 PR target/85397
2770 * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
2771 * config/i386/i386.md (builtin_setjmp_setup): Removed.
2772 (builtin_longjmp): Likewise.
2773 (save_stack_nonlocal): New pattern.
2774 (restore_stack_nonlocal): Likewise.
2775
2776 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
2777
2778 PR target/85404
2779 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
2780 Replace ASM_OUTPUT_LABEL with fprintf.
2781
2782 2018-04-19 H.J. Lu <hongjiu.lu@intel.com>
2783
2784 PR target/85417
2785 * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
2786 Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
2787 * config/i386/i386-c.c (ix86_target_macros_internal): Also
2788 define __IBT__ and __SHSTK__ for -fcf-protection.
2789 * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
2790 TARGET_IBT.
2791 (ix86_trampoline_init): Likewise.
2792 (x86_output_mi_thunk): Likewise.
2793 (ix86_notrack_prefixed_insn_p): Likewise.
2794 (ix86_option_override_internal): Don't disallow -fcf-protection.
2795 * config/i386/i386.md (rdssp<mode>): Also enable for
2796 -fcf-protection.
2797 (incssp<mode>): Likewise.
2798 (nop_endbr): Likewise.
2799 * config/i386/i386.opt (mcet): Change help message to built-in
2800 functions only.
2801 (mibt): Likewise.
2802 (mshstk): Likewise.
2803 * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
2804 on -fcf-protection. Change -mcet, -mibt and -mshstk to only
2805 enable CET built-in functions.
2806
2807 2018-04-19 Sebastian Peryt <sebastian.peryt@intel.com>
2808
2809 * common/config/i386/i386-common.c
2810 (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
2811 OPTION_MASK_ISA_MOVDIRI_UNSET,
2812 OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
2813 (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
2814 * config.gcc (movdirintrin.h): New header.
2815 * config/i386/cpuid.h (bit_MOVDIRI,
2816 bit_MOVDIR64B): New bits.
2817 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
2818 and -mmvodir64b.
2819 * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
2820 (VOID, PVOID, PCVOID)): New function types.
2821 * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
2822 __builtin_ia32_directstoreu_u64,
2823 __builtin_ia32_movdir64b): New builtins.
2824 * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
2825 * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
2826 and -mmovdiri.
2827 (ix86_valid_target_attribute_inner_p): Ditto.
2828 (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
2829 and VOID_FTYPE_PUNSIGNED_UNSIGNED.
2830 (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
2831 * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
2832 TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
2833 * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
2834 (movdiri<mode>, movdir64b_<mode>): New.
2835 * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
2836 * config/i386/immintrin.h: Include movdirintrin.h.
2837 * config/i386/movdirintrin.h: New file.
2838 * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
2839
2840 2018-04-19 Richard Biener <rguenther@suse.de>
2841
2842 PR middle-end/85455
2843 * cfg.c (clear_bb_flags): When loop state says we have
2844 marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
2845
2846 2018-04-19 Richard Biener <rguenther@suse.de>
2847
2848 PR tree-optimization/84737
2849 * tree-vect-data-refs.c (vect_copy_ref_info): New function
2850 copying restrict info.
2851 (vect_setup_realignment): Use it.
2852 * tree-vectorizer.h (vect_copy_ref_info): Declare.
2853 * tree-vect-stmts.c (vectorizable_store): Copy ref info from
2854 the first DR to all generated stores.
2855 (vectorizable_load): Likewise for loads.
2856
2857 2018-04-19 Jakub Jelinek <jakub@redhat.com>
2858
2859 PR tree-optimization/85446
2860 * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
2861 the integral and pointer types to have the same precision.
2862
2863 * doc/install.texi: Document --disable-cet being the default and
2864 --enable-cet=auto.
2865
2866 2018-04-18 Martin Liska <mliska@suse.cz>
2867
2868 * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
2869 style.
2870
2871 2018-04-18 Martin Liska <mliska@suse.cz>
2872
2873 Revert
2874 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
2875
2876 PR ipa/83983
2877 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
2878 arguments if they are comparable.
2879
2880 2018-04-18 Martin Liska <mliska@suse.cz>
2881
2882 Revert
2883 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
2884
2885 PR lto/84805
2886 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
2887 incomplete types.
2888
2889 2018-04-18 H.J. Lu <hongjiu.lu@intel.com>
2890
2891 PR target/85388
2892 * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
2893 ENDBR after calling __morestack.
2894
2895 2018-04-18 David Malcolm <dmalcolm@redhat.com>
2896
2897 PR jit/85384
2898 * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
2899 by using gcc_base_ver to generate a gcc_driver_version, and use
2900 it when generating GCC_DRIVER_NAME.
2901 * configure: Regenerate.
2902
2903 2018-04-18 Jakub Jelinek <jakub@redhat.com>
2904
2905 PR target/81084
2906 * config.gcc: Obsolete powerpc*-*-*spe*.
2907
2908 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2909
2910 PR debug/84637
2911 * dbxout.c (dbxout_int): Perform negation in unsigned int type.
2912 (stabstr_D): Change type of unum from unsigned int to
2913 unsigned HOST_WIDE_INT. Perform negation in unsigned HOST_WIDE_INT
2914 type.
2915
2916 2018-04-17 Jim Wilson <jimw@sifive.com>
2917
2918 PR 84856
2919 * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
2920 RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
2921 Set arg_pointer_offset after using pretend_args_size.
2922
2923 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2924
2925 PR rtl-optimization/85431
2926 * dse.c (record_store): Ignore zero width stores.
2927
2928 PR sanitizer/85230
2929 * asan.c (handle_builtin_stack_restore): Adjust comment. Emit
2930 __asan_allocas_unpoison call and last_alloca_addr = new_sp before
2931 __builtin_stack_restore rather than after it.
2932 * builtins.c (expand_asan_emit_allocas_unpoison): Pass
2933 arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
2934 argument instead of virtual_dynamic_stack_rtx.
2935
2936 2018-04-17 Kelvin Nilsen <kelvin@gcc.gnu.org>
2937
2938 * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
2939 New prototype.
2940 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
2941 Add note to error message to explain internal mapping of overloaded
2942 built-in function name to non-overloaded built-in function name.
2943 * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
2944 function.
2945
2946 2018-04-17 Michael Meissner <meissner@linux.vnet.ibm.com>
2947
2948 PR target/85424
2949 * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
2950 where the inputs overlap with the output.
2951
2952 2018-04-17 Jakub Jelinek <jakub@redhat.com>
2953
2954 * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
2955 (=v, v) alternative and explicit "memory" attribute.
2956 (vec_extract_lo_<mode><mask_name>): Likewise. Also add
2957 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2958 attributes.
2959 (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
2960 "sselog1" type instead of "sselog".
2961 (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
2962 "sselog". Remove explicit "memory" attribute.
2963 (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
2964 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2965 attributes.
2966 (vec_extract_hi_v32hi): Merge all alternatives into one, use
2967 "sselog1" type instead of "sselog". Remove explicit "memory"
2968 attribute.
2969 (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
2970 use "sselog1" type instead of "sselog". Remove explicit "memory"
2971 attribute.
2972 (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
2973 "type", "prefix", "prefix_extra", "length_immediate" and "mode"
2974 attributes.
2975 (vec_extract_hi_v64qi): Merge all alternatives into one, use
2976 "sselog1" type instead of "sselog". Remove explicit "memory"
2977 attribute.
2978 (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
2979 use "sselog1" type instead of "sselog". Remove explicit "memory"
2980 attribute.
2981
2982 PR target/85430
2983 * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
2984
2985 PR middle-end/85414
2986 * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
2987 on a SUBREG.
2988
2989 2018-04-17 Martin Jambor <mjambor@suse.cz>
2990
2991 PR ipa/85421
2992 * ipa-cp.c (create_specialized_node): Call
2993 expand_all_artificial_thunks if necessary.
2994
2995 2018-04-17 Martin Liska <mliska@suse.cz>
2996
2997 PR lto/85405
2998 * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
2999 in message, remote space in between '_G' and '('.
3000
3001 2018-04-17 Jakub Jelinek <jakub@redhat.com>
3002
3003 PR target/85281
3004 * config/i386/sse.md (reduces<mode><mask_scalar_name>,
3005 avx512f_vmcmp<mode>3<round_saeonly_name>,
3006 avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
3007 avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
3008 avx512f_rndscale<mode><round_saeonly_name>,
3009 avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
3010 avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
3011 Use %<iptr>2 instead of %2 for -masm=intel.
3012 (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
3013 avx512f_vcvttss2usi<round_saeonly_name>,
3014 avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
3015 -masm=intel.
3016 (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
3017 avx512f_vcvttsd2usi<round_saeonly_name>,
3018 avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
3019 Use %q1 instead of %1 for -masm=intel.
3020 (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
3021 avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
3022 of %3 for -masm=intel.
3023 (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
3024 -masm=intel.
3025 (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
3026 -masm=intel.
3027 (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
3028 -masm=intel.
3029 (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
3030 %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
3031 %g1.
3032 (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
3033 -masm=intel.
3034 (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
3035 %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
3036 %g1 and one with %0 and %1.
3037 (avx512er_vmrcp28<mode><round_saeonly_name>,
3038 avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
3039 %1 for -masm=intel.
3040 (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
3041 avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
3042 avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
3043 of %0 and %{%4%} for -masm=intel.
3044 (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
3045 avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
3046 avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
3047 order of %0 and %{%5%}%{z%} for -masm=intel.
3048
3049 2018-04-17 Jan Hubicka <jh@suse.cz>
3050
3051 PR lto/85405
3052 * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
3053
3054 2018-04-17 Martin Liska <mliska@suse.cz>
3055
3056 PR ipa/85329
3057 * multiple_target.c (create_dispatcher_calls): Set apostrophes
3058 for target_clone error message. Make default implementation
3059 clone to be a local declaration.
3060 (separate_attrs): Add new argument and check for an empty
3061 string.
3062 (expand_target_clones): Handle it.
3063 (ipa_target_clone): Make redirection just for target_clones
3064 functions.
3065
3066 2018-04-16 Cesar Philippidis <cesar@codesourcery.com>
3067 Tom de Vries <tom@codesourcery.com>
3068
3069 PR middle-end/84955
3070 * omp-expand.c (expand_oacc_for): Add dummy false branch for
3071 tiled basic blocks without omp continue statements.
3072
3073 2018-04-16 Aaron Sawdey <acsawdey@linux.ibm.com>
3074
3075 PR target/83660
3076 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
3077 vec_extract expression as having side effects to make sure it gets
3078 a cleanup point.
3079
3080 2018-04-16 H.J. Lu <hongjiu.lu@intel.com>
3081
3082 PR target/85403
3083 * config/i386/i386.c (get_builtin_code_for_version): Check
3084 error_mark_node.
3085
3086 2018-04-16 Olga Makhotina <olga.makhotina@intel.com>
3087
3088 PR target/84331
3089 * gcc/config.gcc: Support "skylake".
3090 * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
3091 PROCESSOR_SKYLAKE.
3092 * gcc/config/i386/i386.c (m_SKYLAKE): Define.
3093 (processor_target_table): Add "skylake".
3094 (ix86_option_override_internal): Add "skylake".
3095 (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
3096 PROCESSOR_CANNONLAKE.
3097 (get_builtin_code_for_version): Fix priority for
3098 PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
3099 PROCESSOR_SKYLAKE-AVX512.
3100 * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
3101 (processor_type): Add PROCESSOR_SKYLAKE.
3102
3103 2018-04-16 Paolo Carlini <paolo.carlini@oracle.com>
3104 Jason Merrill <jason@redhat.com>
3105
3106 PR c++/85112
3107 * convert.c (convert_to_integer_1): Use direct recursion for
3108 enumeral types and types with a precision less than the number
3109 of bits in their mode.
3110
3111 2018-04-16 Julia Koval <julia.koval@intel.com>
3112
3113 PR target/84413
3114 * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
3115 X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
3116
3117 2018-04-14 Segher Boessenkool <segher@kernel.crashing.org>
3118
3119 PR target/85293
3120 * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
3121 * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
3122 and -mno-direct-move.
3123
3124 2018-04-13 Paul A. Clarke <pc@us.ibm.com>
3125
3126 PR target/83402
3127 * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
3128 Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
3129 Ensure negative shifts result in {0}.
3130
3131 2018-04-13 Vladimir Makarov <vmakarov@redhat.com>
3132
3133 PR rtl-optimization/79916
3134 * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
3135 regs (if any) to define how to gnerate SD moves when LRA is in
3136 progress.
3137
3138 2018-04-13 Jakub Jelinek <jakub@redhat.com>
3139
3140 PR rtl-optimization/85393
3141 * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
3142 * except.c (expand_dw2_landing_pad_for_region): Make static.
3143 * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
3144 a label and unconditional jump to old_bb, rather than
3145 expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
3146 basic block.
3147
3148 PR rtl-optimization/85376
3149 * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
3150 zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
3151 instead of a specific value.
3152
3153 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
3154 Bin Cheng <bin.cheng@arm.com>
3155
3156 PR tree-optimization/82965
3157 PR tree-optimization/83991
3158 * cfgloopanal.c (expected_loop_iterations_unbounded): Add
3159 by_profile_only parameter.
3160 * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
3161 information if the loop was predicted to iterate too many times.
3162 * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
3163
3164 2018-04-13 Jan Hubicka <hubicka@ucw.cz>
3165
3166 PR lto/71991
3167 * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
3168 always inline.
3169
3170 2018-04-13 Martin Liska <mliska@suse.cz>
3171 Jakub Jelinek <jakub@redhat.com>
3172
3173 PR middle-end/81657
3174 * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
3175 * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
3176 * builtins.c (expand_builtin_memory_copy_args): Use
3177 BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
3178 handle dest_addr == pc_rtx.
3179
3180 2018-04-12 Segher Boessenkool <segher@kernel.crashing.org>
3181
3182 PR target/85291
3183 * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
3184 asked to not generate direct moves.
3185 (fix_trunc<mode>si2_stfiwx): Similar.
3186 (fix_trunc<mode>si2_internal): Similar.
3187
3188 2018-04-12 Jakub Jelinek <jakub@redhat.com>
3189
3190 PR debug/83157
3191 * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
3192 * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
3193 lookup if dest in some wider mode is known to be const0_rtx and
3194 if so, record permanent equivalence for it to be ZERO_EXTEND of
3195 the narrower mode destination.
3196
3197 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
3198
3199 * lto-streamer-out.c (output_function): Revert 259346.
3200 * omp-expand.c (expand_oacc_for): Likewise.
3201
3202 2018-04-12 Alexander Monakov <amonakov@ispras.ru>
3203
3204 PR rtl-optimization/85354
3205 * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
3206 * sel-sched.c (sel_global_init): ... here.
3207
3208 2018-04-12 Eric Botcazou <ebotcazou@adacore.com>
3209
3210 PR target/85238
3211 * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
3212 * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
3213 mode for PE-COFF targets.
3214 * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
3215 (i386_pe_asm_lto_end): Likewise.
3216 * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
3217 (TARGET_ASM_LTO_END): Likewise.
3218 * config/i386/winnt.c (saved_debug_info_level): New static variable.
3219 (i386_pe_asm_lto_start): New function.
3220 (i386_pe_asm_lto_end): Likewise.
3221
3222 2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
3223 Richard Biener <rguenther@suse.de>
3224
3225 PR middle-end/84955
3226 * lto-streamer-out.c (output_function): Fix CFG loop state before
3227 streaming out.
3228 * omp-expand.c (expand_oacc_for): Handle calls to internal
3229 functions like regular functions.
3230
3231 2018-04-12 Richard Biener <rguenther@suse.de>
3232
3233 PR lto/85371
3234 * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
3235 for the early LTO debug to properly generate references to it
3236 during DIE emission. Do not re-use that for the skeleton for
3237 split-dwarf.
3238 (dwarf2out_early_finish): Likewise.
3239
3240 2018-04-12 Jakub Jelinek <jakub@redhat.com>
3241
3242 PR target/85328
3243 * config/i386/sse.md
3244 (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
3245 <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
3246 vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
3247 vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
3248 and output is a reg, avoid creating invalid lowpart subreg, but
3249 instead split into a 512-bit move. Don't split if not AVX512VL,
3250 input is xmm16+ reg and output is a mem.
3251 (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
3252 vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
3253 xmm16+ reg and output is a mem.
3254
3255 2018-04-12 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
3256
3257 * config/s390/s390.c (s390_output_indirect_thunk_function): Check
3258 also for flag_dwarf2_cfi_asm.
3259
3260 2018-04-12 Jakub Jelinek <jakub@redhat.com>
3261
3262 PR rtl-optimization/85342
3263 * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
3264 a bool scalar var inside of the loop instead. Don't try to update
3265 recog_data.operand after failed apply_change_group.
3266
3267 2018-04-12 Tom de Vries <tom@codesourcery.com>
3268
3269 PR target/85296
3270 * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
3271 (nvptx_assemble_decl_begin): Add undefined param. Declare undefined
3272 array with flexible array member as array without given dimension.
3273 (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
3274 argument for undefined param to true.
3275
3276 2018-04-11 Aaron Sawdey <acsawdey@linux.ibm.com>
3277
3278 PR target/85321
3279 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
3280 -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
3281 from PowerPC section.
3282 * config/rs6000/sysv4.opt (mcall-): Improve help text.
3283 * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
3284 help text that is too long.
3285 * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
3286 help text that is too long.
3287 * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
3288 help text that is too long.
3289
3290 2018-04-11 Uros Bizjak <ubizjak@gmail.com>
3291
3292 * config/alpha/alpha.md (stack_probe_internal): Rename
3293 from "probe_stack". Update all callers.
3294
3295 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
3296
3297 PR rtl-optimization/84566
3298 * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
3299 sched_macro_fuse_insns.
3300
3301 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
3302
3303 PR target/84301
3304 * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
3305 (compute_block_dependences): ... from here.
3306
3307 2018-04-11 Jakub Jelinek <jakub@redhat.com>
3308
3309 PR tree-optimization/85331
3310 * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
3311 from int to HOST_WIDE_INT.
3312
3313 2018-04-11 Martin Jambor <mjambor@suse.cz>
3314
3315 PR ipa/84149
3316 * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
3317 (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
3318 not the same as the source val.
3319 (cgraph_edge_brings_value_p): New parameter.
3320 (gather_edges_for_value): Pass destination value to
3321 cgraph_edge_brings_value_p.
3322 (perhaps_add_new_callers): Likewise.
3323 (get_info_about_necessary_edges): Likewise and exclude values brought
3324 only by self-recursive edges.
3325 (create_specialized_node): Redirect only clones of self-calling edges.
3326 (+self_recursive_pass_through_p): New function.
3327 (find_more_scalar_values_for_callers_subset): Use it.
3328 (find_aggregate_values_for_callers_subset): Likewise.
3329 (known_aggs_to_agg_replacement_list): Removed.
3330 (decide_whether_version_node): Re-calculate known constants for all
3331 remaining context clones.
3332
3333 2018-04-11 Richard Biener <rguenther@suse.de>
3334
3335 PR lto/85339
3336 * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
3337 from early DWARF output.
3338 (dwarf2out_early_finish): Output line info unconditionally into
3339 early DWARF and add reference to it.
3340
3341 2018-04-11 Jakub Jelinek <jakub@redhat.com>
3342
3343 PR target/85281
3344 * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
3345 (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
3346 other than V2DFmode using iptr mode attribute.
3347 (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
3348
3349 2018-04-11 Alexander Monakov <amonakov@ispras.ru>
3350
3351 PR rtl-optimization/84659
3352 * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
3353
3354 2018-04-11 Jakub Jelinek <jakub@redhat.com>
3355
3356 PR debug/85302
3357 * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
3358 SIZEP is NULL.
3359 (output_loc_list): Pass address of a dummy size variable even in the
3360 locview handling loop.
3361 (index_location_lists): Add comment on why skip_loc_list_entry can't
3362 call size_of_locs.
3363
3364 2018-04-11 Thomas Preud'homme <thomas.preudhomme@arm.com>
3365
3366 PR target/85261
3367 * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
3368 into register.
3369
3370 2018-04-10 Aaron Sawdey <acsawdey@linux.ibm.com>
3371
3372 PR target/85321
3373 * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
3374 -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
3375 and -mstring-compare-inline-limit.
3376
3377 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
3378
3379 PR target/85287
3380 * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
3381 for stack clash protection in a register whenever we need it to be in
3382 a register.
3383
3384 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
3385
3386 * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
3387 Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
3388
3389 2018-04-10 Segher Boessenkool <segher@kernel.crashing.org>
3390
3391 PR target/85321
3392 * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
3393 the help text.
3394 (mlong-double-): Ditto.
3395 * config/rs6000/sysv4.opt (msdata=): Ditto.
3396 (mtls-size=): Ditto.
3397
3398 2018-04-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
3399
3400 * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
3401 erroneous entries for
3402 "vector int vec_ldl (int, long int *)", and
3403 "vector unsigned int vec_ldl (int, unsigned long int *)".
3404 Add comments and entries for
3405 "vector bool char vec_ldl (int, bool char *)",
3406 "vector bool short vec_ldl (int, bool short *)",
3407 "vector bool int vec_ldl (int, bool int *)",
3408 "vector bool long long vec_ldl (int, bool long long *)",
3409 "vector pixel vec_ldl (int, pixel *)",
3410 "vector long long vec_ldl (int, long long *)",
3411 "vector unsigned long long vec_ldl (int, unsigned long long *)".
3412 * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
3413 type tree bool_long_long_type_node and correct definition of
3414 bool_V2DI_type_node to make reference to this new type tree.
3415 (rs6000_mangle_type): Replace erroneous reference to
3416 bool_long_type_node with bool_long_long_type_node.
3417 * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
3418 comments to emphasize sign distinctions for char and int types and
3419 replace RS6000_BTI_bool_long constant with
3420 RS6000_BTI_bool_long_long constant. Also add comment to restrict
3421 use of RS6000_BTI_pixel.
3422 (bool_long_type_node): Remove this macro definition.
3423 (bool_long_long_type_node): New macro definition
3424
3425 2018-04-10 Jakub Jelinek <jakub@redhat.com>
3426
3427 PR rtl-optimization/85300
3428 * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
3429 into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
3430 simplify_unary_operation fails.
3431
3432 2018-04-10 Martin Liska <mliska@suse.cz>
3433
3434 * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
3435 cgraph_edge and ipa_ref.
3436
3437 2018-04-10 Jakub Jelinek <jakub@redhat.com>
3438
3439 PR target/85177
3440 PR target/85255
3441 * config/i386/sse.md
3442 (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
3443 computation of the VEC_MERGE selector from mask.
3444 (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
3445 Fix decoding of the VEC_MERGE selector into mask.
3446
3447 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
3448
3449 PR tree-optimization/85286
3450 * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
3451
3452 2018-04-10 Richard Sandiford <richard.sandiford@linaro.org>
3453
3454 * final.c (final_1): Set insn_last_address as well as
3455 insn_current_address.
3456
3457 2018-04-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
3458
3459 PR target/85173
3460 * explow.c (emit_stack_probe): Call validize_mem on memory location
3461 before passing it to gen_probe_stack. Create address operand and
3462 legitimize it for the probe_stack_address case.
3463
3464 2018-04-09 Jan Hubicka <jh@suse.cz>
3465
3466 PR lto/85078
3467 * ipa-devirt.c (rebuild_type_inheritance-hash): New.
3468 * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
3469 * tree.c (free_lang_data_in_type): Fix handling of binfos;
3470 walk basetypes.
3471 (free_lang_data): Rebuild type inheritance graph.
3472
3473 2018-04-09 Martin Sebor <msebor@redhat.com>
3474
3475 * invoke.texi (-finline-small-functions): Mention other optimization
3476 options.
3477 (-findirect-inlining, -fpartial-inlining): Same.
3478 (-finline-functions-called-once): Same.
3479 (-freorder-blocks-and-partition): Same.
3480
3481 2018-04-09 Jan Hubicka <jh@suse.cz>
3482
3483 PR rtl/84058
3484 * cfgcleanup.c (try_forward_edges): Do not give up on crossing
3485 jumps; choose last target that matches the criteria (i.e.
3486 no partition changes for non-crossing jumps).
3487 * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
3488 support for redirecting crossing jumps to non-crossing.
3489
3490 2018-04-09 Alexey Brodkin <abrodkin@synopsys.com>
3491
3492 * config/arc/arc.c (arc_expand_prologue): Set stack usage info
3493 also for naked functions.
3494
3495 2018-04-09 Claudiu Zissulescu <claziss@synopsys.com>
3496
3497 * config/arc/arc.md (add_shift): New pattern.
3498 (add_shift2): Likewise.
3499 (sub_shift): Likewise.
3500 (sub_shift_cmp0_noout): Likewise.
3501 (compare_si_ashiftsi): Likewise.
3502 (xbfu_cmp0_noout): New combine pattern.
3503 (xbfu_cmp0"): Likewise.
3504 (movsi_set_cc_insn): Place the predicable variant first.
3505 (commutative_binary_cmp0_noout): Remove clobber.
3506 (commutative_binary_cmp0): New pattern.
3507 (noncommutative_binary_cmp0): Likewise.
3508 (noncommutative_binary_cmp0_noout): Likewise.
3509 (noncommutative_binary_comparison_result_used): Removed.
3510 (rsub_cmp0): New pattern.
3511 (rsub_cmp0_noout): Likewise.
3512 (extzvsi): Changed, keep only meaningful variants.
3513 (SQH, SEZ): New iterators.
3514 (SQH_postfix): New mode attribute.
3515 (SEZ_prefix): New code attribute.
3516 (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
3517 (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
3518 * config/arc/predicates.md (cc_set_register): Use CC_REG instead
3519 of numerical value.
3520 (noncommutative_operator): Check the availability of barrel
3521 shifter option.
3522
3523 2018-04-09 Richard Biener <rguenther@suse.de>
3524
3525 PR tree-optimization/85284
3526 * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
3527 Only use the niter constraining form of simple_iv when the exit
3528 is always executed.
3529
3530 2018-04-09 Tom de Vries <tom@codesourcery.com>
3531
3532 PR target/84041
3533 * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
3534 (define_expand "*memory_barrier"): New define_expand.
3535 (define_insn "memory_barrier"): New insn.
3536
3537 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3538
3539 PR rtl-optimization/80463
3540 PR rtl-optimization/83972
3541 PR rtl-optimization/83480
3542
3543 * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
3544 correct producer for the insn.
3545 (tidy_control_flow): Fixup seqnos in case of debug insns.
3546
3547 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3548
3549 PR rtl-optimization/83913
3550
3551 * sel-sched-ir.c (merge_expr_data): Choose the middle between two
3552 different sched-times when merging exprs.
3553
3554 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3555
3556 PR rtl-optimization/83962
3557
3558 * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
3559 tidy_fallthru_edge and tidy_control_flow.
3560
3561 2018-04-09 Andrey Belevantsev <abel@ispras.ru>
3562
3563 PR rtl-optimization/83530
3564
3565 * sel-sched.c (force_next_insn): New global variable.
3566 (remove_insn_for_debug): When force_next_insn is true, also leave only
3567 next insn in the ready list.
3568 (sel_sched_region): When the region wasn't scheduled, make another pass
3569 over it with force_next_insn set to 1.
3570
3571 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
3572
3573 * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
3574 into tm_file.
3575 * config/nds32/constants.md (unspec_volatile_element): Add enum values
3576 for interrupt control.
3577 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
3578 functions for interrupt control.
3579 * config/nds32/nds32-intrinsic.md: Likewise.
3580 * config/nds32/nds32_intrinsic.h: Likewise.
3581 * config/nds32/nds32.h (nds32_builtins): Likewise.
3582
3583 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
3584
3585 * config/nds32/nds32.c (nds32_init_machine_status,
3586 nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
3587 strict_aligned_p field.
3588 (nds32_expand_to_rtl_hook): New function.
3589 (TARGET_EXPAND_TO_RTL_HOOK): Define.
3590 * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
3591
3592 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3593 Chung-Ju Wu <jasonwucj@gmail.com>
3594
3595 * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
3596 * config/nds32/nds32-n7.md: New file.
3597 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
3598 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
3599 pipeline.
3600 * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
3601 * config/nds32/nds32.md (pipeline_model): Add n7.
3602 * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
3603 * config/nds32/pipelines.md: Include n7 settings.
3604
3605 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3606 Chung-Ju Wu <jasonwucj@gmail.com>
3607
3608 * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
3609 * config/nds32/nds32-e8.md: New file.
3610 * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
3611 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
3612 pipeline.
3613 * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
3614 * config/nds32/nds32.md (pipeline_model): Add e8.
3615 * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
3616 * config/nds32/pipelines.md: Include e8 settings.
3617
3618 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3619 Chung-Ju Wu <jasonwucj@gmail.com>
3620
3621 * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
3622 * config/nds32/nds32-n8.md: New file.
3623 * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
3624 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
3625 pipeline.
3626 * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
3627 * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
3628 * config/nds32/nds32.md (pipeline_model): Add n8.
3629 * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
3630 * config/nds32/pipelines.md: Include n8 settings.
3631
3632 2018-04-08 Kito Cheng <kito.cheng@gmail.com>
3633 Chung-Ju Wu <jasonwucj@gmail.com>
3634
3635 * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
3636 * config/nds32/nds32-n9-2r1w.md: New file.
3637 * config/nds32/nds32-n9-3r2w.md: New file.
3638 * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
3639 nds32_register_ports): New or modify for cpu n9.
3640 * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
3641 pipeline.
3642 * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
3643 * config/nds32/nds32-utils.c: New file.
3644 * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
3645 TARGET_MUL_SLOW): Define.
3646 * config/nds32/nds32.md (pipeline_model): New attribute.
3647 * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
3648 New options that support cpu n9.
3649 * config/nds32/pipelines.md: Include n9 settings.
3650 * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
3651
3652 2018-04-08 Chung-Ju Wu <jasonwucj@gmail.com>
3653
3654 * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
3655 information if necessary.
3656 (output_cond_branch_compare_zero): Likewise.
3657 * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
3658 (nds32_target_alignment): Refine for alignment.
3659 * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
3660 (FUNCTION_BOUNDARY): Modify.
3661 * config/nds32/nds32.md (call_internal, call_value_internal): Consider
3662 align case.
3663 * config/nds32/nds32.opt (malways-align, malign-functions): New.
3664
3665 2018-04-08 Monk Chiang <sh.chiang04@gmail.com>
3666
3667 * config/nds32/constants.md (unspec_volatile_element): Add values for
3668 TLB operation and data prefetch.
3669 * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
3670 functions for TLB operation and data prefetch.
3671 * config/nds32/nds32-intrinsic.md: Likewise.
3672 * config/nds32/nds32_intrinsic.h: Likewise.
3673 * config/nds32/nds32.c (nds32_dpref_names): Likewise.
3674 (nds32_print_operand): Likewise.
3675 * config/nds32/nds32.h (nds32_builtins): Likewise.
3676
3677 2018-04-07 Thomas Koenig <tkoenig@gcc.gnu.org>
3678 Andrew Pinski <pinsika@gcc.gnu.org>
3679
3680 PR middle-end/82976
3681 * match.pd: Use constant_boolean_node of correct type instead of
3682 boolean_true_node or boolean_false_node for simplifying
3683 pointer comparisons to zero.
3684
3685 2018-04-07 Jakub Jelinek <jakub@redhat.com>
3686
3687 PR tree-optimization/80021
3688 * tree.c (verify_type_variant): Make error call in verify_variant_match
3689 translatable and remove final full stop.
3690
3691 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3692
3693 * config/nds32/constants.md (unspec_volatile_element): Add
3694 UNSPEC_VOLATILE_EH_RETURN.
3695 * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
3696 nds32_output_stack_pop): Support dwarf exception handling process.
3697 * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
3698 * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
3699 exception handling process.
3700 (nds32_compute_stack_frame): Likewise.
3701 (nds32_return_addr_rtx): Likewise.
3702 (nds32_initial_elimination_offset): Likewise.
3703 (nds32_expand_prologue): Likewise.
3704 (nds32_expand_epilogue): Likewise.
3705 (nds32_dynamic_chain_address): New function.
3706 * config/nds32/nds32.h (machine_function): Add fields for dwarf
3707 exception handling.
3708 (DYNAMIC_CHAIN_ADDRESS): Define.
3709 (EH_RETURN_DATA_REGNO): Define.
3710 (EH_RETURN_STACKADJ_RTX): Define.
3711 * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
3712 patterns for dwarf exception handling.
3713
3714 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3715
3716 * config/nds32/nds32.h: Clean up obsolete macros.
3717
3718 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3719
3720 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3721 Add enum values for particular instructions.
3722 * config/nds32/nds32-intrinsic.c: Implementation of expanding
3723 particular intrinsic functions.
3724 * config/nds32/nds32-intrinsic.md: Likewise.
3725 * config/nds32/nds32_intrinsic.h: Likewise.
3726 * config/nds32/nds32.h (nds32_builtins): Likewise.
3727 * config/nds32/nds32.md (type): Add pbsad and pbsada.
3728 (btst, ave): New patterns for particular instructions.
3729
3730 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3731
3732 * config/nds32/constants.md (unspec_element, unspec_volatile_element):
3733 Add enum values for atomic load/store and memory sync.
3734 * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
3735 and memory sync.
3736 * config/nds32/nds32-intrinsic.md: Likewise.
3737 * config/nds32/nds32_intrinsic.h: Likewise.
3738 * config/nds32/nds32.h (nds32_builtins): Likewise.
3739
3740 2018-04-07 Jakub Jelinek <jakub@redhat.com>
3741
3742 PR tree-optimization/85257
3743 * fold-const.c (native_encode_vector): If not all elts could fit
3744 and off is -1, return 0 rather than offset.
3745 * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
3746 (offseti - offset2) / BITS_PER_UNIT as 4th argument to
3747 native_encode_expr. Verify len * BITS_PER_UNIT >= maxsizei. Don't
3748 adjust buffer in native_interpret_expr call.
3749
3750 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3751
3752 * config/nds32/constants.md (unspec_volatile_element): Add cache
3753 control enum values.
3754 * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
3755 * config/nds32/nds32-intrinsic.md: Add cache control patterns.
3756 * config/nds32/nds32.c (nds32_cctl_names): New.
3757 (nds32_print_operand): Handle cache control register names.
3758 * config/nds32/nds32.h (nds32_builtins): New enum values.
3759 * config/nds32/nds32_intrinsic.h: Add cache control enum types and
3760 macros.
3761 * config/nds32/nds32.md (type): Add mmu.
3762 * config/nds32/pipelines.md (simple_insn): Add mmu.
3763
3764 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3765
3766 * config/nds32/nds32.md (type): Remove call.
3767 * config/nds32/pipelines.md (simple_insn): Likewise.
3768
3769 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3770
3771 * config/nds32/constants.md (unspec_volatile_element): Add
3772 UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
3773 UNSPEC_VOLATILE_FMFCFG.
3774 * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
3775 description for fmfcfg and fmfcsr.
3776 (bdesc_1arg): Add fmtcsr.
3777 (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
3778 (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
3779 * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
3780 unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
3781 unspec_fmfcfg): New patterns.
3782 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
3783 NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
3784 NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
3785 * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
3786 __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
3787 __nds32__fmfcfg): Define.
3788
3789 2018-04-07 Monk Chiang <sh.chiang04@gmail.com>
3790
3791 * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
3792 intrinsic register names.
3793 * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
3794 intrinsic register enum values and macros.
3795
3796 2018-04-07 Chung-Ju Wu <jasonwucj@gmail.com>
3797
3798 * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
3799 for load/store addressing form.
3800 (nds32_print_operand_address): Likewise.
3801
3802 2018-04-06 Eric Botcazou <ebotcazou@adacore.com>
3803
3804 PR target/85196
3805 * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
3806 based on LABEL_REF. Remove useless assertion.
3807 (pic_address_needs_scratch): Fix formatting.
3808 (sparc_legitimize_pic_address): Minor tweaks.
3809 (sparc_delegitimize_address): Adjust assertion accordingly.
3810 * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
3811 into symbolic_operand.
3812 (movsi_high_pic_label_ref): Likewise.
3813 (movsi_lo_sum_pic_label_ref): Likewise.
3814 (movdi_pic_label_ref): Likewise.
3815 (movdi_high_pic_label_ref): Likewise.
3816 (movdi_lo_sum_pic_label_ref): Likewise.
3817
3818 2018-04-06 Amaan Cheval <amaan.cheval@gmail.com>
3819
3820 * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
3821 custom LIB_SPEC setup.
3822
3823 2018-04-06 Ruslan Bukin <br@bsdpad.com>
3824 Kito Cheng <kito.cheng@gmail.com>
3825
3826 * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
3827 * config/riscv/freebsd.h: New.
3828
3829 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
3830
3831 * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
3832 * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
3833 file.
3834
3835 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
3836 Kito Cheng <kito.cheng@gmail.com>
3837
3838 * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
3839 nds32_output_call, nds32_symbol_binds_local_p): New functions.
3840 * config/nds32/nds32-protos.h (nds32_output_call,
3841 nds32_output_return): Declare.
3842 * config/nds32/nds32.md: Refine all the call and return patterns.
3843
3844 2018-04-06 Jakub Jelinek <jakub@redhat.com>
3845
3846 PR debug/85252
3847 * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
3848 build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
3849
3850 PR rtl-optimization/84872
3851 * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
3852 nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
3853 EDGE_CROSSING edge.
3854
3855 2018-04-06 Tamar Christina <tamar.christina@arm.com>
3856
3857 * expr.c (copy_blkmode_to_reg): Revert 254862.
3858 * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
3859
3860 2018-04-06 Richard Biener <rguenther@suse.de>
3861
3862 PR middle-end/85244
3863 * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
3864 after seeing a component reference with an adjacent field. Treat
3865 refs to arrays at struct end of external decls similar to
3866 refs to unconstrained commons.
3867
3868 2018-04-06 Jakub Jelinek <jakub@redhat.com>
3869
3870 PR sanitizer/85213
3871 * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
3872 look through SAVE_EXPRs with non-side-effects argument. Adjust
3873 recursive calls.
3874 (fold_comparison): Adjust twoval_comparison_p caller, don't handle
3875 save_p here.
3876
3877 2018-04-06 Richard Biener <rguenther@suse.de>
3878
3879 PR middle-end/85180
3880 * alias.c (find_base_term): New wrapper around find_base_term
3881 unwinding CSELIB_VAL_PTR changes.
3882 (find_base_term): Do not restore CSELIB_VAL_PTR during the
3883 recursion.
3884
3885 2018-04-06 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
3886
3887 * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
3888 instructions.
3889 * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
3890 constant definitions.
3891 ("nop"): lr 0,0 -> nopr r0
3892 ("nop_lr0", "nop_lr1"): New insn definitions.
3893
3894 2018-04-06 Chung-Ju Wu <jasonwucj@gmail.com>
3895
3896 * config/nds32/nds32.md (*stack_push, *stack_pop): Use
3897 NDS32_V3PUSH_AVAILABLE_P macro.
3898
3899 2018-04-06 Monk Chiang <sh.chiang04@gmail.com>
3900 Chung-Ju Wu <jasonwucj@gmail.com>
3901
3902 * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
3903 (nds32*-*-*): Add float and fpu_config into supported_defaults.
3904 * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
3905 Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
3906 * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
3907 UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
3908 * config/nds32/constraints.md: New constraints and checking for hard
3909 float configuration.
3910 * config/nds32/iterators.md: New mode iterator and attribute for hard
3911 float configuration.
3912 * config/nds32/nds32-doubleword.md: Use hard float alternatives and
3913 patterns.
3914 * config/nds32/nds32-fpu.md: New file.
3915 * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
3916 deal with hard float code generation.
3917 * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
3918 ARCH_V3S.
3919 (abi_type, float_reg_number): New enum type.
3920 * config/nds32/nds32-predicates.c: New predicates for hard float.
3921 * config/nds32/nds32-protos.h: Declare functions for hard float.
3922 * config/nds32/nds32.c: Implementation for hard float configuration.
3923 * config/nds32/nds32.h: Definitions for hard float configuration.
3924 * config/nds32/nds32.md: Include hard float machine description and
3925 modify patterns for hard float configuration.
3926 * config/nds32/nds32.opt: New options for hard float configuration.
3927 * config/nds32/predicates.md: New predicates for hard float
3928 configuration.
3929
3930 2018-04-06 Kuan-Lin Chen <kuanlinchentw@gmail.com>
3931
3932 * common/config/nds32/nds32-common.c
3933 (nds32_option_optimization_table): Enable -mreleax-hint by default.
3934
3935 2018-04-05 Jakub Jelinek <jakub@redhat.com>
3936
3937 PR middle-end/85195
3938 * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
3939 CONSTRUCTOR_ELT (ctor, ...)->value.
3940
3941 2018-04-05 Uros Bizjak <ubizjak@gmail.com>
3942
3943 PR target/85193
3944 * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
3945
3946 2018-04-05 Tom de Vries <tom@codesourcery.com>
3947
3948 PR target/85204
3949 * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
3950 cond jump.
3951
3952 2018-04-05 Shiva Chen <shiva0217@gmail.com>
3953 Kito Cheng <kito.cheng@gmail.com>
3954
3955 * config/nds32/constraints.md (U33): Fine-tune checking condition.
3956 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
3957 * config/nds32/nds32.h (nds32_16bit_address_type): Add
3958 ADDRESS_POST_MODIFY_LO_REG_IMM3U.
3959
3960 2018-04-05 Shiva Chen <shiva0217@gmail.com>
3961 Kito Cheng <kito.cheng@gmail.com>
3962
3963 * config/nds32/constraints.md (Ufe): New memory constraint.
3964 * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
3965 nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
3966 * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
3967 operands.
3968 * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
3969 * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
3970
3971 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3972
3973 * config/nds32/nds32.md: Use optimize_size in the condition for
3974 alu-shift instructions.
3975
3976 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3977
3978 * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
3979
3980 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
3981
3982 * config/nds32/nds32.md (negsi2): Refine pattern.
3983
3984 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
3985 Chung-Ju Wu <jasonwucj@gmail.com>
3986
3987 * config/nds32/iterators.md (shift_rotate): New code iterator.
3988 (shift): New code attribute.
3989 * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
3990 * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
3991 * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
3992 * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
3993 bit-wise operations.
3994 (andsi3, *andsi3): Ditto.
3995 (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
3996 (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
3997 (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
3998 * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
3999 nds32_ior_operand, nds32_xor_operand): New predicates.
4000
4001 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
4002
4003 * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
4004 (addsi3, subsi3): ... this.
4005
4006 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
4007
4008 * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
4009
4010 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
4011
4012 * config/nds32/nds32.md: Adjust indention.
4013
4014 2018-04-05 Kito Cheng <kito.cheng@gmail.com>
4015
4016 * config/nds32/nds32.md (feature): New attribute.
4017
4018 2018-04-05 Chung-Ju Wu <jasonwucj@gmail.com>
4019
4020 * config/nds32/nds32.md (subtype): New attribute.
4021
4022 2018-04-04 Thomas Preud'homme <thomas.preudhomme@arm.com>
4023
4024 PR target/85203
4025 * config/arm/arm-builtins.c (arm_expand_builtin): Change
4026 expansion to perform a bitwise AND of the argument followed by a
4027 boolean negation of the result.
4028
4029 2018-04-04 Peter Bergner <bergner@vnet.ibm.com>
4030
4031 PR rtl-optimization/84878
4032 * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
4033 the basic block. Assert the use reference is not artificial and that
4034 it has an associated insn.
4035
4036 2018-04-04 Michael Matz <matz@suse.de>
4037
4038 * builtins.c (compute_objsize): Pass correct operand
4039 to array_at_struct_end_p.
4040
4041 2018-04-04 Richard Biener <rguenther@suse.de>
4042
4043 PR lto/85176
4044 * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
4045 from contexts for DINFO_LEVEL_TERSE and below.
4046
4047 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
4048
4049 * config/nds32/nds32-doubleword.md (move_<mode>): Require
4050 resiter_operand condition.
4051 * config/nds32/nds32.md (*move<mode>): Ditto.
4052
4053 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
4054 Monk Chiang <sh.chiang04@gmail.com>
4055
4056 * config/nds32/nds32.md (movmisalign<mode>): New pattern.
4057
4058 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
4059
4060 * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
4061
4062 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
4063 Kito Cheng <kito.cheng@gmail.com>
4064
4065 * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
4066 nds32_cond_code_str, output_cond_branch,
4067 output_cond_branch_compare_zero, nds32_expand_cbranch,
4068 nds32_expand_cstore, nds32_expand_movcc,
4069 nds32_output_cbranchsi4_equality_zero,
4070 nds32_output_cbranchsi4_equality_reg,
4071 nds32_output_cbranchsi4_equality_reg_or_const_int,
4072 nds32_output_cbranchsi4_greater_less_zero: New functions.
4073 * config/nds32/nds32-protos.h (nds32_expand_cbranch,
4074 nds32_expand_cstore, nds32_expand_movcc,
4075 nds32_output_cbranchsi4_equality_zero,
4076 nds32_output_cbranchsi4_equality_reg,
4077 nds32_output_cbranchsi4_equality_reg_or_const_int,
4078 nds32_output_cbranchsi4_greater_less_zero): Declare.
4079 * config/nds32/predicates.md (nds32_movecc_comparison_operator,
4080 nds32_rimm11s_operand): New predicates.
4081 * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
4082 * config/nds32/nds32.md: Rewrite all the branch and conditional move
4083 patterns.
4084
4085 2018-04-04 Kito Cheng <kito.cheng@gmail.com>
4086
4087 * config/nds32/nds32-doubleword.md: Refine all the instruction type.
4088 * config/nds32/nds32.md: Ditto.
4089 * config/nds32/pipelines.md: Ditto.
4090
4091 2018-04-04 Richard Biener <rguenther@suse.de>
4092
4093 PR tree-optimization/85168
4094 * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
4095 propagating abnormals.
4096
4097 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
4098
4099 * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
4100
4101 2018-04-04 Chung-Ju Wu <jasonwucj@gmail.com>
4102 Kito Cheng <kito.cheng@gmail.com>
4103
4104 * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
4105 * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
4106 * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
4107 (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
4108 * config/nds32/nds32.md (sibcall_internal): New.
4109 (sibcall_register): Remove.
4110 (sibcall_immediate): Remove.
4111 (sibcall_value_internal): New.
4112 (sibcall_value_register): Remove.
4113 (sibcall_value_immediate): Remove.
4114 * config/nds32/predicates.md (nds32_general_register_operand): New.
4115 (nds32_call_address_operand): New.
4116
4117 2018-04-03 Jakub Jelinek <jakub@redhat.com>
4118
4119 PR rtl-optimization/85167
4120 * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
4121 bb_defs if *split_p, instead preinitialize it to NULL.
4122
4123 PR tree-optimization/85156
4124 * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
4125 evaluating the argument multiple times.
4126
4127 2018-04-03 Bill Schmidt <wschmidt@linux.ibm.com>
4128
4129 * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
4130 than vector.
4131 (_mm_cvtpd_ps): Likewise.
4132 (_mm_cvttpd_epi32): Likewise.
4133 * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
4134 * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
4135 vector, pixel, and bool following altivec.h include.
4136
4137 2018-04-03 Martin Sebor <msebor@redhat.com>
4138
4139 * doc/extend.texi (Common Function Attributes): Clarify.
4140 (const attribute): Likewise.
4141 (pure attribute): Likewise.
4142
4143 2018-04-03 Jakub Jelinek <jakub@redhat.com>
4144
4145 PR target/85169
4146 * config/i386/i386.c (ix86_expand_vector_set): Use
4147 HOST_WIDE_INT_1U << elt instead of 1 << elt. Formatting fix.
4148
4149 2018-04-03 Uros Bizjak <ubizjak@gmail.com>
4150
4151 * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
4152 instructions when changing rounding bits to preserve precision bits
4153 in the x87 control word.
4154
4155 2018-04-03 Martin Liska <mliska@suse.cz>
4156
4157 PR tree-optimization/82491
4158 * rtl.h (strip_offset_and_add): Replace += suboffset with
4159 poly_uint64 () + suboffset.
4160
4161 2018-03-29 Martin Liska <mliska@suse.cz>
4162 Martin Jambor <mjambor@suse.cz>
4163
4164 PR ipa/84947
4165 * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
4166 param_type is not an integral or pointer type.
4167
4168 2018-04-03 Richard Biener <rguenther@suse.de>
4169
4170 * sese.h (recompute_all_dominators): Remove.
4171
4172 2018-04-02 Martin Sebor <msebor@redhat.com>
4173
4174 * doc/invoke.texi (-Wrestrict): Fix typos.
4175
4176 2018-04-02 Jim Wilson <jimw@sifive.com>
4177
4178 * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
4179 * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
4180 (<optab>di3, <optab>si3_extend): Likewise.
4181 (<optab>si3_mask, <optab>si3_mask_1): New.
4182 (<optab>di3_mask, <optab>di3_mask_1): New.
4183 (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
4184 (lshrsi3_zero_extend_1): Use VOIDmode shift count.
4185 * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
4186
4187 2018-04-02 Gerald Pfeifer <gerald@pfeifer.com>
4188
4189 * doc/cpp.texi (Variadic Macros): Fix line continuation in an
4190 example.
4191
4192 2018-04-02 Chung-Ju Wu <jasonwucj@gmail.com>
4193
4194 * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
4195 (nds32_canonicalize_comparison): New function.
4196
4197 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
4198 Kito Cheng <kito.cheng@gmail.com>
4199 Kuan-Lin Chen <kuanlinchentw@gmail.com>
4200
4201 * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
4202 * config/nds32/constants.md (unspec_volatile_element): Add
4203 UNSPEC_VOLATILE_RELAX_GROUP.
4204 * config/nds32/nds32-relax-opt.c: New file.
4205 * config/nds32/nds32-predicates.c
4206 (nds32_symbol_load_store_p): New function.
4207 * config/nds32/nds32-protos.h
4208 (nds32_symbol_load_store_p): Declare function.
4209 (make_pass_nds32_relax_opt): Declare new rtl pass function.
4210 * config/nds32/nds32.c
4211 (nds32_register_pass): New function to register pass.
4212 (nds32_register_passes): New function to register passes.
4213 * config/nds32/nds32.md (relax_group): New pattern.
4214 * config/nds32/nds32.opt (mrelax-hint): New option.
4215 * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
4216
4217 2018-04-01 Kito Cheng <kito.cheng@gmail.com>
4218
4219 * config/nds32/t-nds32: Modify files dependency.
4220
4221 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
4222
4223 * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
4224 (PROFILE_HOOK): Define its implementation.
4225
4226 2018-04-01 Chung-Ju Wu <jasonwucj@gmail.com>
4227
4228 * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
4229 type and 32-bit size.
4230
4231 2018-04-01 Jakub Jelinek <jakub@redhat.com>
4232
4233 PR middle-end/85090
4234 * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
4235 (V_128_256): New mode iterator.
4236 (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
4237 (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
4238 (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
4239 of V.
4240 * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
4241 V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
4242
4243 2018-03-31 Segher Boessenkool <segher@kernel.crashing.org>
4244
4245 PR target/83315
4246 * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
4247 NaN inputs correctly.
4248
4249 2018-03-30 Peter Bergner <bergner@vnet.ibm.com>
4250
4251 PR target/80546
4252 * config/rs6000/vsx.md (??r): New mode attribute.
4253 (*vsx_mov<mode>_64bit): Use it.
4254 (*vsx_mov<mode>_32bit): Likewise.
4255
4256 2018-03-30 Martin Sebor <msebor@redhat.com>
4257
4258 PR tree-optimization/84818
4259 * builtins.c (check_access): Use warning_n.
4260
4261 2018-03-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
4262
4263 PR target/83822
4264 * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
4265 condition.
4266 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
4267 condition.
4268
4269 2018-03-30 Julia Koval <julia.koval@intel.com>
4270
4271 PR target/84413
4272 * x86-tune.def (movx, partial_reg_dependency): Enable for
4273 m_SKYLAKE_AVX512.
4274
4275 2018-03-29 Vladimir Makarov <vmakarov@redhat.com>
4276
4277 PR inline-asm/84985
4278 * lra-constraints.c (process_alt_operands): Move setting
4279 this_alternative_matches below.
4280
4281 2018-03-29 Martin Liska <mliska@suse.cz>
4282
4283 PR lto/84995.
4284 * doc/invoke.texi: Document how LTO works with debug info.
4285 Describe auto-load support of binutils. Mention 'x86-64'
4286 as valid option value of -march option.
4287
4288 2018-03-29 Jakub Jelinek <jakub@redhat.com>
4289
4290 * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
4291
4292 PR c/85094
4293 * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
4294 For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
4295 OEP_NO_HASH_CHECK for recursive call, to avoid exponential
4296 checking.
4297
4298 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
4299
4300 PR target/84912
4301 * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
4302 (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
4303 * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
4304 for RS6000_BTM_POWERPC64.
4305 (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
4306 (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
4307 * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
4308 definition.
4309 (DIVDE): Use it.
4310 (DIVDEU): Likewise.
4311
4312 2018-03-28 Carl Love <cel@us.ibm.com>
4313
4314 Revert
4315 2017-09-27 Carl Love <cel@us.ibm.com>
4316
4317 * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
4318 (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
4319 * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
4320 fctiw instruction.
4321
4322 2018-03-28 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
4323
4324 * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
4325 instead of __vector bool.
4326 (_mm_max_pu8): Likewise.
4327 (_mm_min_pi16): Likewise.
4328
4329 2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
4330
4331 PR target/84912
4332 * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
4333 (DIVWEUO): Likewise.
4334 (DIVDEO): Likewise.
4335 (DIVDEUO): Likewise.
4336 * config/rs6000/rs6000.c (builtin_function_type): Remove support for
4337 DIVWEUO and DIVDEUO.
4338 * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
4339 (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
4340 (div_extend): Likewise.
4341 * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
4342 builtin function.
4343 (__builtin_divweuo): Likewise.
4344 (__builtin_divdeo): Likewise.
4345 (__builtin_divdeuo): Likewise.
4346
4347 2018-03-28 Jakub Jelinek <jakub@redhat.com>
4348
4349 PR target/85095
4350 * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
4351 *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
4352
4353 PR tree-optimization/82004
4354 * gimple-match-head.c (optimize_pow_to_exp): New function.
4355 * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
4356 Don't fold to exp if optimize_pow_to_exp is false.
4357
4358 2018-03-28 Martin Liska <mliska@suse.cz>
4359
4360 PR other/84819
4361 * calls.c (initialize_argument_information): Fix trailing space.
4362 * common.opt: Fix typo and provide better explanation for
4363 -fsanitize-coverage option.
4364 * config/i386/i386.opt: Fix typo.
4365
4366 2018-03-28 Jakub Jelinek <jakub@redhat.com>
4367 Martin Liska <mliska@suse.cz>
4368
4369 PR sanitizer/85081
4370 * gimplify.c (asan_poison_variable): Don't do the check for
4371 gimplify_omp_ctxp here.
4372 (gimplify_decl_expr): Do it here.
4373 (gimplify_target_expr): Likewise.
4374
4375 2018-03-28 Martin Liska <mliska@suse.cz>
4376
4377 PR target/84988
4378 * config/i386/i386.c (ix86_function_arg_advance): Do not call
4379 chkp_type_bounds_count if MPX is not enabled.
4380
4381 2018-03-27 Chung-Ju Wu <jasonwucj@gmail.com>
4382
4383 * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
4384
4385 2018-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
4386
4387 PR target/84914
4388 * config/rs6000/rs6000.c (create_complex_muldiv): New helper
4389 function to create the function decl for complex long double
4390 multiply and divide for -mabi=ieeelongdouble.
4391 (init_float128_ieee): Call it.
4392
4393 2018-03-27 H.J. Lu <hongjiu.lu@intel.com>
4394
4395 PR target/85044
4396 * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
4397 -fcf-protection=branch -mibt.
4398 * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
4399
4400 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4401
4402 PR target/81863
4403 * config/arm/arm.c (arm_valid_symbolic_address): Handle arm_word_relocations
4404
4405 2018-03-27 Cesar Philippidis <cesar@codesourcery.com>
4406
4407 PR target/85056
4408 * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
4409 extern array declarations.
4410
4411 2018-03-27 Richard Biener <rguenther@suse.de>
4412
4413 PR middle-end/84067
4414 * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
4415 explicit single_use checks.
4416
4417 2018-03-27 Richard Biener <rguenther@suse.de>
4418
4419 PR tree-optimization/85082
4420 * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
4421 Valueize the VUSE.
4422
4423 2018-03-27 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
4424
4425 * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
4426 * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
4427 Turn on fasynchronous-unwind-tables and funwind-tables.
4428
4429 2018-03-26 Uros Bizjak <ubizjak@gmail.com>
4430
4431 PR target/85073
4432 * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
4433 (*bmi_blsr_<mode>_ccz): Ditto.
4434
4435 2018-03-26 Tom de Vries <tom@codesourcery.com>
4436
4437 PR tree-optimization/85063
4438 * omp-general.c (offloading_function_p): New function. Factor out
4439 of ...
4440 * omp-offload.c (pass_omp_target_link::gate): ... here.
4441 * omp-general.h (offloading_function_p): Declare.
4442 * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
4443 with attribute omp declare target for offloading functions.
4444
4445 2018-03-24 Richard Sandiford <richard.sandiford@linaro.org>
4446
4447 PR tree-optimization/84005
4448 * tree-data-ref.h (get_base_for_alignment): Declare.
4449 * tree-data-ref.c (get_base_for_alignment_1): New function.
4450 (get_base_for_alignment): Likewise.
4451 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
4452 get_base_for_alignment to find a suitable base object, instead
4453 of always using drb->base_address.
4454
4455 2018-03-23 Jakub Jelinek <jakub@redhat.com>
4456
4457 PR inline-asm/85022
4458 * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
4459 known size by default.
4460
4461 2018-03-23 Vladimir Makarov <vmakarov@redhat.com>
4462
4463 PR inline-asm/85030
4464 * lra-constraints.c (process_alt_operands): Don't match BLKmode
4465 and non BLKmode operands.
4466
4467 2018-03-23 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4468
4469 PR target/85026
4470 * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
4471 Clean up attributes.
4472
4473 2018-03-23 Richard Biener <rguenther@suse.de>
4474
4475 PR debug/85020
4476 * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
4477 we are going to emit early debug for LTO.
4478
4479 2018-03-23 Jakub Jelinek <jakub@redhat.com>
4480
4481 PR inline-asm/85034
4482 * function.c (match_asm_constraints_1): Don't optimize if input
4483 doesn't satisfy general_operand predicate for output's mode.
4484
4485 PR inline-asm/85022
4486 * alias.c (write_dependence_p): Don't require for x_canonicalized
4487 non-VOIDmode if x has VOIDmode.
4488
4489 PR sanitizer/85029
4490 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
4491 just don't try to optimize it rather than assert it never happens.
4492
4493 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
4494
4495 * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
4496 macro expansions for definition of ST_INTERNAL_<mode> and
4497 LD_INTERNAL_<mode> builtins.
4498 * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
4499 Remove prototype.
4500 * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
4501 function.
4502 (altivec_expand_st_builtin): Likewise.
4503 (altivec_expand_builtin): Remove calls to deleted functions.
4504 (rs6000_address_for_altivec): Delete this function.
4505 * config/rs6000/vector.md: Remove expands for
4506 vector_altivec_load_<mode> and vector_altivec_store_<mode>.
4507
4508 2018-03-22 Sudakshina Das <sudi.das@arm.com>
4509
4510 PR target/84826
4511 * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
4512 * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
4513 re-computing once computed.
4514 (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
4515 (arm_init_machine_status): Initialize
4516 machine->static_chain_stack_bytes.
4517
4518 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org>
4519
4520 PR target/84760
4521 * doc/extend.texi: Add four new prototypes for vec_ld.
4522 * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
4523 definitions for more logical presentation.
4524 * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
4525 entries for V1TI variants of __builtin_altivec_ld builtin.
4526 * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
4527 handling of V1TI variant of LVX icode pattern.
4528 (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
4529 (rs6000_gimple_fold_builtin): Likewise.
4530 (altivec_init_builtins): Add code to define
4531 __builtin_altivec_lvx_v1ti function.
4532
4533 2018-03-22 Jakub Jelinek <jakub@redhat.com>
4534
4535 PR inline-asm/84941
4536 * function.c (match_asm_constraints_1): Don't do the optimization
4537 if input isn't a REG, SUBREG, MEM or constant.
4538
4539 2018-03-22 Tom de Vries <tom@codesourcery.com>
4540
4541 PR tree-optimization/84956
4542 * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
4543 bb_has_abnormal_pred.
4544
4545 2018-03-22 Jakub Jelinek <jakub@redhat.com>
4546
4547 PR sanitizer/85018
4548 * dwarf2asm.c (dw2_output_indirect_constant_1): Set
4549 DECL_INITIAL (decl) to decl at the end.
4550 * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
4551 adjust the comment.
4552
4553 2018-03-21 Joseph Myers <joseph@codesourcery.com>
4554
4555 * doc/extend.texi (__builtin_tgmath): Document when complex
4556 integer types are treated as _Complex _Float64.
4557
4558 2018-03-21 Tom de Vries <tom@codesourcery.com>
4559
4560 * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
4561
4562 2018-03-21 Jakub Jelinek <jakub@redhat.com>
4563
4564 PR tree-optimization/84960
4565 * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
4566 if it is ENTRY block, move them into single succ of ENTRY in that case.
4567
4568 2018-03-21 Richard Sandiford <richard.sandiford@linaro.org>
4569
4570 PR tree-optimization/84811
4571 * poly-int.h (poly_span_traits): Remove the T3 parameter and
4572 promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
4573 (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
4574 (known_subrange_p): Update accordingly. Cast each value involved
4575 in the size comparison, rather than casting the result of the
4576 subtraction.
4577
4578 2018-03-21 Jakub Jelinek <jakub@redhat.com>
4579
4580 PR tree-optimization/84982
4581 * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
4582 by flipping the least significant bit rather than all bits from
4583 bitpos to bitpos + bitsize - 1.
4584
4585 2018-03-21 Nathan Sidwell <nathan@acm.org>
4586
4587 * doc/extend.texi (Deprecated Features): Remove mention of
4588 long-deleted deprecations.
4589
4590 2018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
4591
4592 PR jit/84288
4593 * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
4594 * configure: Regenerate.
4595
4596 2018-03-21 Tom de Vries <tom@codesourcery.com>
4597
4598 PR tree-optimization/83126
4599 * tree-parloops.c (num_phis): New function.
4600 (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
4601
4602 2018-03-21 Nathan Sidwell <nathan@acm.org>
4603
4604 * doc/extend.texi (Deprecated Features): Update deprecated flags,
4605 mention anon-struct/union members and trailing attributes.
4606
4607 2018-03-21 Bin Cheng <bin.cheng@arm.com>
4608
4609 PR tree-optimization/84969
4610 * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
4611 builtin memset partitions if they set different rhs values.
4612
4613 2018-03-21 Jakub Jelinek <jakub@redhat.com>
4614
4615 PR rtl-optimization/84989
4616 * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
4617 VEC_DUPLICATE with scalar result mode.
4618
4619 2018-03-21 Martin Liska <mliska@suse.cz>
4620
4621 PR ipa/84963
4622 * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
4623 not intended return statement.
4624
4625 2018-03-21 Martin Liska <mliska@suse.cz>
4626
4627 PR target/84988
4628 * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
4629 (chkp_find_bound_slots_1): Limit number of iterations.
4630
4631 2018-03-20 David H. Gutteridge <dhgutteridge@sympatico.ca>
4632
4633 PR target/84838
4634 * Minor grammar fixes for x86 options.
4635
4636 2018-03-20 Jakub Jelinek <jakub@redhat.com>
4637
4638 PR debug/84875
4639 * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
4640 holding REG_CFA_RESTORE notes, instead turn them into a USE.
4641
4642 2018-03-20 Peter Bergner <bergner@vnet.ibm.com>
4643
4644 PR target/83789
4645 * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
4646 (altivec_lvx_<mode>_1op): Likewise.
4647 (altivec_stvx_<mode>_2op): Likewise.
4648 (altivec_stvx_<mode>_1op): Likewise.
4649 (altivec_lvx_<VM2:mode>): New define_expand.
4650 (altivec_stvx_<VM2:mode>): Likewise.
4651 (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
4652 (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
4653 (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
4654 (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
4655 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
4656 (rs6000_gen_lvx): Likewise.
4657 * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
4658 (altivec_expand_stv_builtin): Likewise.
4659 (altivec_expand_builtin): Likewise.
4660 * config/rs6000/vector.md: Likewise.
4661
4662 2018-03-20 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
4663
4664 PR target/82518
4665 * config/arm/arm.c (arm_array_mode_supported_p): Return false for
4666 BYTES_BIG_ENDIAN.
4667
4668 2018-03-20 Richard Biener <rguenther@suse.de>
4669
4670 PR target/84986
4671 * config/i386/i386.c (ix86_add_stmt_cost): Only cost
4672 sign-conversions as zero, fall back to standard scalar_stmt
4673 cost for the rest.
4674
4675 2018-03-20 Martin Liska <mliska@suse.cz>
4676
4677 PR ipa/84825
4678 * predict.c (rebuild_frequencies): Handle case when we have
4679 PROFILE_ABSENT, but flag_guess_branch_prob is false.
4680
4681 2018-03-20 Jakub Jelinek <jakub@redhat.com>
4682
4683 PR target/84990
4684 * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
4685 flag_section_anchors.
4686 * varasm.c (use_blocks_for_decl_p): Remove hack for
4687 dw2_force_const_mem.
4688
4689 PR target/84845
4690 * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
4691 to ...
4692 (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this. If pseudos can't
4693 be created, use lowpart_subreg of operands[0] rather than operands[0]
4694 itself.
4695 (*aarch64_reg_<mode>3_minus_mask): Rename to ...
4696 (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
4697 (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
4698 and n constraint instead of aarch64_shift_imm_di and Usd.
4699 (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
4700 (*aarch64_<optab>_reg_minus<mode>3): ... this.
4701
4702 2018-03-20 Sudakshina Das <sudi.das@arm.com>
4703
4704 PR target/82989
4705 * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
4706 to favor GPR over NEON registers.
4707 (<shift>di3_neon): Likewise.
4708
4709 2018-03-20 Tom de Vries <tom@codesourcery.com>
4710
4711 PR target/84952
4712 * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
4713 (nvptx_process_pars): Emit bar.sync asap and alap.
4714
4715 2018-03-20 Tom de Vries <tom@codesourcery.com>
4716
4717 PR target/84954
4718 * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
4719 seen_label if seen_label is already set.
4720
4721 2018-03-20 Jakub Jelinek <jakub@redhat.com>
4722
4723 PR target/84945
4724 * config/i386/i386.c (fold_builtin_cpu): For features above 31
4725 use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
4726 Use 1U instead of 1. Formatting fixes.
4727
4728 PR c/84953
4729 * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
4730 instead of TREE_TYPE (s1) for the return value.
4731
4732 2018-03-19 Jakub Jelinek <jakub@redhat.com>
4733
4734 PR tree-optimization/84946
4735 * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
4736 bitsize + bitsize in poly_uint64 rather than poly_int64.
4737
4738 PR sanitizer/78651
4739 * dwarf2asm.c: Include fold-const.c.
4740 (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
4741 of decl rather than decl itself.
4742
4743 PR rtl-optimization/84643
4744 * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
4745
4746 2018-03-19 Maxim Ostapenko <m.ostapenko@samsung.com>
4747
4748 PR sanitizer/78651
4749 * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
4750 calling assemble_variable.
4751
4752 2018-03-19 Sudakshina Das <sudi.das@arm.com>
4753
4754 PR target/81647
4755 * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
4756 instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
4757
4758 2018-03-19 Jim Wilson <jimw@sifive.com>
4759
4760 PR bootstrap/84856
4761 * config/riscv/riscv.c (riscv_function_arg_boundary): Use
4762 PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
4763 (riscv_first_stack_step): Likewise.
4764 (riscv_option_override): Use STACK_BOUNDARY instead of
4765 MIN_STACK_BOUNDARY.
4766 * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
4767 MIN_STACK_BOUNDARY.
4768 (BIGGEST_ALIGNMENT): Set to 128.
4769 (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
4770 (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
4771 STACK_BOUNDARY.
4772
4773 2018-03-19 Richard Biener <rguenther@suse.de>
4774
4775 PR tree-optimization/84933
4776 * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
4777 values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
4778
4779 2018-03-19 Richard Biener <rguenther@suse.de>
4780
4781 PR tree-optimization/84859
4782 * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
4783 (cond_if_else_store_replacement): Perform sinking operation on
4784 single-store BBs regardless of MAX_STORES_TO_SINK setting.
4785 Generalize what a BB with a single eligible store is.
4786
4787 2018-03-19 Richard Biener <rguenther@suse.de>
4788
4789 PR tree-optimization/84929
4790 * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
4791 chrec_is_positive against non-chrec arg.
4792
4793 2018-03-19 Tamar Christina <tamar.christina@arm.com>
4794
4795 PR target/84711
4796 * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
4797
4798 2018-03-18 Martin Liska <mliska@suse.cz>
4799
4800 PR rtl-optimization/84635
4801 * regrename.c (build_def_use): Use matches_mode only when
4802 matches >= 0.
4803
4804 2018-03-18 Richard Sandiford <richard.sandiford@linaro.org>
4805
4806 PR tree-optimization/84913
4807 * tree-vect-loop.c (vectorizable_reduction): Don't try to
4808 vectorize chains of COND_EXPRs.
4809
4810 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
4811
4812 * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
4813
4814 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
4815
4816 * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
4817
4818 2018-03-18 Chung-Ju Wu <jasonwucj@gmail.com>
4819
4820 * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
4821
4822 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
4823 Kito Cheng <kito.cheng@gmail.com>
4824
4825 * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
4826 * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
4827 (nds32_adjust_reg_alloc_order): New function.
4828 * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
4829
4830 2018-03-17 Kito Cheng <kito.cheng@gmail.com>
4831
4832 * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
4833 nds32_print_operand, nds32_print_operand_address): Use
4834 HOST_WIDE_INT_PRINT_DEC instead.
4835
4836 2018-03-17 Chung-Ju Wu <jasonwucj@gmail.com>
4837
4838 * config/nds32/nds32.c (nds32_register_priority): Modify cost.
4839
4840 2018-03-17 Jakub Jelinek <jakub@redhat.com>
4841
4842 PR target/84902
4843 * config/i386/i386.c (initial_ix86_tune_features,
4844 initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
4845 unsigned long long.
4846 (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
4847 to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
4848 rather than 1u << ix86_tune. Formatting fix.
4849 (ix86_option_override_internal): Change ix86_arch_mask from
4850 unsigned int to unsigned HOST_WIDE_INT, initialize to
4851 HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
4852 (ix86_function_specific_restore): Likewise.
4853
4854 2018-03-16 Jakub Jelinek <jakub@redhat.com>
4855
4856 PR target/84899
4857 * postreload.c (reload_combine_recognize_pattern): Perform
4858 INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
4859 truncate_int_for_mode the result for the destination's mode.
4860
4861 PR c/84909
4862 * hsa-gen.c (mem_type_for_type): Fix comment typo.
4863 * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
4864 Likewise.
4865 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
4866 Likewise.
4867
4868 2018-03-16 Vladimir Makarov <vmakarov@redhat.com>
4869
4870 PR target/84876
4871 * lra-assigns.c (lra_split_hard_reg_for): Don't use
4872 regno_allocno_class_array and sorted_pseudos.
4873 * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
4874 insns where regno is used.
4875
4876 2018-03-16 Martin Liska <mliska@suse.cz>
4877
4878 PR ipa/84833
4879 * multiple_target.c (create_dispatcher_calls): Redirect
4880 reference in the symbol table.
4881
4882 2018-03-16 Martin Liska <mliska@suse.cz>
4883
4884 PR ipa/84722
4885 * multiple_target.c (create_dispatcher_calls): Redirect also
4886 an alias.
4887
4888 2018-03-16 Jakub Jelinek <jakub@redhat.com>
4889
4890 PR c++/79937
4891 PR c++/82410
4892 * tree.h (TARGET_EXPR_NO_ELIDE): Define.
4893 * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
4894 TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
4895
4896 2018-03-16 Julia Koval <julia.koval@intel.com>
4897
4898 * doc/invoke.texi (Skylake Server): Add CLWB.
4899 Cannonlake): Remove CLWB.
4900
4901 2018-03-16 Jakub Jelinek <jakub@redhat.com>
4902
4903 PR tree-optimization/84841
4904 * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
4905 1 << 3.
4906 (FLOAT_ONE_CONST_TYPE): Define.
4907 (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
4908 (sort_by_operand_rank): Put entries with higher constant_type last
4909 rather than first to match comments.
4910
4911 2018-03-15 Sandra Loosemore <sandra@codesourcery.com>
4912
4913 * config/nios2/nios2.md (movsi_internal): Fix thinko in
4914 split predicate.
4915
4916 2018-03-15 Jakub Jelinek <jakub@redhat.com>
4917
4918 PR c++/79085
4919 * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
4920 check and use address of target always.
4921
4922 2018-03-15 H.J. Lu <hongjiu.lu@intel.com>
4923
4924 PR target/84574
4925 * config/i386/i386.c (indirect_thunk_needed): Update comments.
4926 (indirect_thunk_bnd_needed): Likewise.
4927 (indirect_thunks_used): Likewise.
4928 (indirect_thunks_bnd_used): Likewise.
4929 (indirect_return_needed): New.
4930 (indirect_return_bnd_needed): Likewise.
4931 (output_indirect_thunk_function): Add a bool argument for
4932 function return.
4933 (output_indirect_thunk_function): Don't generate alias for
4934 function return thunk.
4935 (ix86_code_end): Call output_indirect_thunk_function to generate
4936 function return thunks.
4937 (ix86_output_function_return): Set indirect_return_bnd_needed
4938 and indirect_return_needed instead of indirect_thunk_bnd_needed
4939 and indirect_thunk_needed.
4940
4941 2018-03-15 Olga Makhotina <olga.makhotina@intel.com>
4942
4943 * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
4944 (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
4945 (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
4946
4947 2018-03-15 David Malcolm <dmalcolm@redhat.com>
4948 Paul Hua <paul.hua.gm@gmail.com>
4949
4950 PR c/84852
4951 * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
4952
4953 2018-03-15 Segher Boessenkool <segher@kernel.crashing.org>
4954
4955 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
4956 TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
4957 resp. SFmode cases.
4958
4959 2018-03-15 Tamar Christina <tamar.christina@arm.com>
4960
4961 PR target/84711
4962 * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
4963 instead of GET_MODE_SIZE when comparing Units.
4964
4965 2018-03-15 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
4966
4967 PR target/68256
4968 * varasm.c (hash_section): Return an unchangeble hash value
4969 * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
4970 Return !aarch64_can_use_per_function_literal_pools_p ().
4971
4972 2018-03-15 Jakub Jelinek <jakub@redhat.com>
4973
4974 PR target/84860
4975 * optabs.c (emit_conditional_move): Pass address of cmode's copy
4976 rather than address of cmode as last argument to prepare_cmp_insn.
4977
4978 2018-03-15 Julia Koval <julia.koval@intel.com>
4979
4980 * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
4981 F_AVX512VNNI, F_AVX512BITALG): New.
4982
4983 2018-03-14 John David Anglin <danglin@gcc.gnu.org>
4984
4985 PR target/83451
4986 * config/pa/pa.c (pa_emit_move_sequence): Always emit secondary reload
4987 insn for floating-point loads and stores.
4988
4989 2018-03-14 Carl Love <cel@us.ibm.com>
4990
4991 * config/rs6000/rs6000-c.c: Add macro definitions for
4992 ALTIVEC_BUILTIN_VEC_PERMXOR.
4993 * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
4994 * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
4995 * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
4996 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
4997 UNSPEC_VPERMXOR.
4998 * config/doc/extend.texi: Add prototypes for vec_permxor.
4999
5000 2018-03-14 David Malcolm <dmalcolm@redhat.com>
5001
5002 PR c/84852
5003 * diagnostic-show-locus.c (class layout_point): Convert m_line
5004 from int to linenum_type.
5005 (line_span::comparator): Use linenum "compare" function when
5006 comparing line numbers.
5007 (test_line_span): New function.
5008 (layout_range::contains_point): Convert param "row" from int to
5009 linenum_type.
5010 (layout_range::intersects_line_p): Likewise.
5011 (layout::will_show_line_p): Likewise.
5012 (layout::print_source_line): Likewise.
5013 (layout::should_print_annotation_line_p): Likewise.
5014 (layout::print_annotation_line): Likewise.
5015 (layout::print_leading_fixits): Likewise.
5016 (layout::annotation_line_showed_range_p): Likewise.
5017 (struct line_corrections): Likewise for field m_row.
5018 (line_corrections::line_corrections): Likewise for param "row".
5019 (layout::print_trailing_fixits): Likewise.
5020 (layout::get_state_at_point): Likewise.
5021 (layout::get_x_bound_for_row): Likewise.
5022 (layout::print_line): Likewise.
5023 (diagnostic_show_locus): Likewise for locals "last_line" and
5024 "row".
5025 (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
5026 * input.c (selftest::test_linenum_comparisons): New function.
5027 (selftest::input_c_tests): Call it.
5028 * selftest.c (selftest::test_assertions): Test ASSERT_GT,
5029 ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
5030 * selftest.h (ASSERT_GT): New macro.
5031 (ASSERT_GT_AT): New macro.
5032 (ASSERT_LT): New macro.
5033 (ASSERT_LT_AT): New macro.
5034
5035 2018-03-14 Segher Boessenkool <segher@kernel.crashing.org>
5036
5037 PR rtl-optimization/84780
5038 * combine.c (distribute_links): Don't make a link based on pc_rtx.
5039
5040 2018-03-14 Martin Liska <mliska@suse.cz>
5041
5042 * tree.c (record_node_allocation_statistics): Use
5043 get_stats_node_kind.
5044 (get_stats_node_kind): New function extracted from
5045 record_node_allocation_statistics.
5046 (free_node): Use get_stats_node_kind.
5047
5048 2018-03-14 Richard Biener <rguenther@suse.de>
5049
5050 * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
5051 that the value-set of ANTIC_IN doesn't grow.
5052
5053 Revert
5054 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
5055 member.
5056 (BB_VISITED_WITH_VISITED_SUCCS): New define.
5057 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
5058
5059 2018-03-14 Julia Koval <julia.koval@intel.com>
5060
5061 * config.gcc (icelake-client, icelake-server): New.
5062 (icelake): Remove.
5063 * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
5064 (initial_ix86_arch_features): Ditto.
5065 (PTA_SKYLAKE): Add SGX.
5066 (PTA_ICELAKE): Remove.
5067 (PTA_ICELAKE_CLIENT): New.
5068 (PTA_ICELAKE_SERVER): New.
5069 (ix86_option_override_internal): Split up icelake on icelake client and
5070 icelake server.
5071 (get_builtin_code_for_version): Ditto.
5072 (fold_builtin_cpu): Ditto.
5073 * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
5074 * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
5075 * config/i386/i386.h (processor_type): Ditto.
5076 * doc/invoke.texi: Ditto.
5077
5078 2018-03-14 Jakub Jelinek <jakub@redhat.com>
5079
5080 PR sanitizer/83392
5081 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
5082 INTEGER_CST offset, add it together with bitpos / 8 and
5083 sign extend based on POINTER_SIZE.
5084
5085 PR target/84844
5086 Revert
5087 2017-04-20 Uros Bizjak <ubizjak@gmail.com>
5088
5089 PR target/78090
5090 * config/i386/constraints.md (Yc): New register constraint.
5091 * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
5092 Use Yc constraint for alternative 2 of operand 0. Remove
5093 preferred_for_speed attribute.
5094
5095 2018-03-14 Richard Biener <rguenther@suse.de>
5096
5097 PR tree-optimization/84830
5098 * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
5099 with the old one to avoid oscillations.
5100
5101 2018-03-13 Vladimir Makarov <vmakarov@redhat.com>
5102
5103 PR target/83712
5104 * lra-assigns.c (find_all_spills_for): Ignore uninteresting
5105 pseudos.
5106 (assign_by_spills): Return a flag of reload assignment failure.
5107 Do not process the reload assignment failures. Do not spill other
5108 reload pseudos if they has the same reg class. Update n if
5109 necessary.
5110 (lra_assign): Add a return arg. Set up from the result of
5111 assign_by_spills call.
5112 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5113 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
5114 usage_insns if it is not NULL.
5115 (spill_hard_reg_in_range): New function.
5116 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5117 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5118 function prototypes.
5119 (lra_assign): Change prototype.
5120 * lra.c (lra): Add code to deal with fails by splitting hard reg
5121 live ranges.
5122
5123 2018-03-01 Palmer Dabbelt <palmer@sifive.com>
5124
5125 * config/riscv/riscv.opt (mrelax): New option.
5126 * config/riscv/riscv.c (riscv_file_start): Emit ".option
5127 "norelax" when riscv_mrelax is disabled.
5128 * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
5129
5130 2018-03-13 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
5131
5132 PR target/84743
5133 * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
5134 reassociation for int modes.
5135
5136 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
5137
5138 * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
5139 Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
5140 for big-endian.
5141 * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
5142 * config/aarch64/aarch64-sve.md
5143 (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
5144 (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
5145 (*extend<mode><Vwide>2): Rename to...
5146 (aarch64_sve_extend<mode><Vwide>2): ...this.
5147 (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
5148 renaming the old pattern to...
5149 (aarch64_sve_punpk<perm_hilo>_<mode>): ...this. Only define
5150 unsigned packs.
5151 (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
5152 define_expand, renaming the old pattern to...
5153 (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
5154 (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
5155 (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
5156 account when deciding which SVE instruction the optab should use.
5157 (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
5158
5159 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
5160
5161 * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
5162 (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
5163 (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
5164 (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
5165 (tlsdesc_small_<mode>): Turn a define_expand and use
5166 tlsdesc_small_sve_<mode> for SVE. Rename original define_insn to...
5167 (tlsdesc_small_advsimd_<mode>): ...this.
5168 (tlsdesc_small_sve_<mode>): New pattern.
5169
5170 2018-03-13 Richard Sandiford <richard.sandiford@linaro.org>
5171
5172 * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
5173 (UNSPEC_UMUL_HIGHPART): New constants.
5174 (MUL_HIGHPART): New int iteraor.
5175 (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
5176 * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
5177 define_expand.
5178 (*<su>mul<mode>3_highpart): New define_insn.
5179
5180 2018-03-13 Eric Botcazou <ebotcazou@adacore.com>
5181
5182 PR lto/84805
5183 * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
5184 incomplete types.
5185
5186 2018-03-13 Martin Liska <mliska@suse.cz>
5187
5188 PR ipa/84658.
5189 * (sem_item_optimizer::sem_item_optimizer): Initialize new
5190 vector.
5191 (sem_item_optimizer::~sem_item_optimizer): Release it.
5192 (sem_item_optimizer::merge_classes): Register variable aliases.
5193 (sem_item_optimizer::fixup_pt_set): New function.
5194 (sem_item_optimizer::fixup_points_to_sets): Likewise.
5195 * ipa-icf.h: Declare new variables and functions.
5196
5197 2018-03-13 Jakub Jelinek <jakub@redhat.com>
5198
5199 PR middle-end/84834
5200 * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
5201 integer_pow2p@2 and test integer_pow2p in condition.
5202 (A < 0 ? C : 0): Similarly for @1.
5203
5204 PR middle-end/84831
5205 * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
5206 characters starting at p contain '\0' character, don't look beyond
5207 that.
5208
5209 PR target/84827
5210 * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
5211 pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
5212
5213 PR target/84828
5214 * reg-stack.c (change_stack): Change update_end var from int to
5215 rtx_insn *, if non-NULL don't update just BB_END (current_block), but
5216 also call set_block_for_insn on the newly added insns and rescan.
5217
5218 PR target/84786
5219 * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
5220 on the last operand.
5221
5222 PR c++/84704
5223 * tree.c (stabilize_reference_1): Return save_expr (e) for
5224 STATEMENT_LIST even if it doesn't have side-effects.
5225
5226 2018-03-12 Jonathan Wakely <jwakely@redhat.com>
5227
5228 * doc/invoke.texi (-mclflushopt): Fix spelling of option.
5229
5230 2018-03-12 Renlin Li <renlin.li@arm.com>
5231
5232 * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
5233 aarch64_output_scalar_simd_mov_immediate.
5234
5235 2018-03-12 Martin Sebor <msebor@redhat.com>
5236
5237 PR tree-optimization/83456
5238 * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
5239 for perfectly overlapping calls to memcpy.
5240 (gimple_fold_builtin_memory_chk): Same.
5241 (gimple_fold_builtin_strcpy): Handle no-warning.
5242 (gimple_fold_builtin_stxcpy_chk): Same.
5243 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
5244
5245 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
5246
5247 * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
5248 parameter. Use it for SFmode.
5249 (rs6000_function_arg_advance_1): Adjust.
5250 (rs6000_function_arg): Adjust.
5251 (rs6000_gimplify_va_arg): Pass false for that new parameter.
5252
5253 2018-03-12 Segher Boessenkool <segher@kernel.crashing.org>
5254
5255 PR rtl-optimization/84169
5256 PR rtl-optimization/84780
5257 * combine.c (can_combine_p): Check for a 2-insn combination whether
5258 the destination register is used between the two insns, too.
5259
5260 2018-03-12 Richard Biener <rguenther@suse.de>
5261
5262 PR tree-optimization/84803
5263 * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
5264 for refs DR analysis didn't process.
5265
5266 2018-03-12 Richard Biener <rguenther@suse.de>
5267
5268 PR tree-optimization/84777
5269 * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
5270 force-vectorize loops ignore whether we are optimizing for size.
5271
5272 2018-03-12 Chung-Ju Wu <jasonwucj@gmail.com>
5273
5274 * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
5275 (TARGET_MD_ASM_ADJUST): Define.
5276
5277 2018-03-12 Monk Chiang <sh.chiang04@gmail.com>
5278 Kito Cheng <kito.cheng@gmail.com>
5279 Chung-Ju Wu <jasonwucj@gmail.com>
5280
5281 * config/nds32/nds32.c (nds32_compute_stack_frame,
5282 nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
5283 nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
5284 nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
5285 nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
5286 * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
5287 NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
5288 * config/nds32/nds32.md (prologue, epilogue): Use macro
5289 NDS32_V3PUSH_AVAILABLE_P to do checking.
5290
5291 2018-03-11 Jakub Jelinek <jakub@redhat.com>
5292
5293 PR debug/58150
5294 * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
5295 DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
5296 but on TYPE_SIZE. Don't do anything for ENUM_IS_OPAQUE if not creating
5297 a new die. Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE. Guard
5298 addition of most attributes on !orig_type_die or the attribute not
5299 being present already. Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
5300
5301 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
5302 Chung-Ju Wu <jasonwucj@gmail.com>
5303
5304 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
5305 __NDS32_VH__ macro.
5306 * config/nds32/nds32.opt (mvh): New option.
5307
5308 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
5309 Chung-Ju Wu <jasonwucj@gmail.com>
5310
5311 * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
5312 function.
5313 * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
5314 * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
5315 definition.
5316
5317 2018-03-11 Kito Cheng <kito.cheng@gmail.com>
5318 Chung-Ju Wu <jasonwucj@gmail.com>
5319
5320 * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
5321 function.
5322 * config/nds32/nds32-multiple.md (strlensi): New pattern.
5323 * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
5324
5325 2018-03-11 Monk Chiang <sh.chiang04@gmail.com>
5326 Kito Cheng <kito.cheng@gmail.com>
5327 Chung-Ju Wu <jasonwucj@gmail.com>
5328
5329 * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
5330 UNSPEC_FFMISM and UNSPEC_FLMISM.
5331 * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
5332 for ffb, ffmism and flmism.
5333 * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
5334 (unspec_ffmism): Ditto.
5335 (unspec_flmism): Ditto.
5336 (nds32_expand_builtin_impl): Check if string extension is available.
5337 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
5338 NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
5339
5340 2018-03-10 Vladimir Makarov <vmakarov@redhat.com>
5341
5342 Reverting patch:
5343 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
5344
5345 PR target/83712
5346 * lra-assigns.c (assign_by_spills): Return a flag of reload
5347 assignment failure. Do not process the reload assignment
5348 failures. Do not spill other reload pseudos if they has the same
5349 reg class.
5350 (lra_assign): Add a return arg. Set up from the result of
5351 assign_by_spills call.
5352 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5353 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
5354 usage_insns if it is not NULL.
5355 (spill_hard_reg_in_range): New function.
5356 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5357 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5358 function prototypes.
5359 (lra_assign): Change prototype.
5360 * lra.c (lra): Add code to deal with fails by splitting hard reg
5361 live ranges.
5362
5363 2018-03-10 H.J. Lu <hongjiu.lu@intel.com>
5364
5365 PR target/84807
5366 * config/i386/i386.opt: Replace Enforcment with Enforcement.
5367
5368 2018-03-10 Alexandre Oliva <aoliva@redhat.com>
5369
5370 PR debug/84620
5371 * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
5372 (dw_val_node): Add val_symbolic_view.
5373 * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
5374 (symview_upper_bound): New.
5375 (new_line_info_table): Initialize symviews_since_reset.
5376 (dwarf2out_source_line): Count symviews_since_reset and set
5377 symview_upper_bound.
5378 (dw_val_equal_p): Handle symview.
5379 (add_AT_symview): New.
5380 (print_dw_val): Handle symview.
5381 (attr_checksum, attr_checksum_ordered): Likewise.
5382 (same_dw_val_p, size_of_die): Likewise.
5383 (value_format, output_die): Likewise.
5384 (add_high_low_attributes): Use add_AT_symview for entry_view.
5385 (dwarf2out_finish): Reset symview_upper_bound, clear
5386 zero_view_p.
5387
5388 2018-03-09 Peter Bergner <bergner@vnet.ibm.com>
5389
5390 PR target/83969
5391 * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
5392 Add strict argument and use it.
5393 (rs6000_split_multireg_move): Update for new strict argument.
5394 (mem_operand_gpr): Disallow all non-offsettable addresses.
5395 * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
5396
5397 2018-03-09 Jakub Jelinek <jakub@redhat.com>
5398
5399 PR target/84772
5400 * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
5401 temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
5402 * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
5403
5404 PR c++/84767
5405 * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
5406 decl, use remap_type if we want to use the type.
5407
5408 2018-03-09 Martin Sebor <msebor@redhat.com>
5409
5410 PR tree-optimization/84526
5411 * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
5412 Remove dead code.
5413 (builtin_access::generic_overlap): Be prepared to handle non-array
5414 base objects.
5415
5416 2018-03-09 Alexandre Oliva <aoliva@redhat.com>
5417
5418 PR rtl-optimization/84682
5419 * lra-constraints.c (process_address_1): Check is_address flag
5420 for address constraints.
5421 (process_alt_operands): Likewise.
5422 * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
5423 preprocess_constraints.
5424 * recog.h (preprocess_constraints): Add oploc parameter.
5425 Adjust callers.
5426 * recog.c (preprocess_constraints): Test address_operand for
5427 CT_ADDRESS constraints.
5428
5429 2018-03-09 Vladimir Makarov <vmakarov@redhat.com>
5430
5431 PR target/83712
5432 * lra-assigns.c (assign_by_spills): Return a flag of reload
5433 assignment failure. Do not process the reload assignment
5434 failures. Do not spill other reload pseudos if they has the same
5435 reg class.
5436 (lra_assign): Add a return arg. Set up from the result of
5437 assign_by_spills call.
5438 (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
5439 * lra-constraints.c (split_reg): Add a new arg. Use it instead of
5440 usage_insns if it is not NULL.
5441 (spill_hard_reg_in_range): New function.
5442 (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
5443 * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
5444 function prototypes.
5445 (lra_assign): Change prototype.
5446 * lra.c (lra): Add code to deal with fails by splitting hard reg
5447 live ranges.
5448
5449 2018-03-09 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5450
5451 PR target/83193
5452 * common/config/arm/arm-common.c (arm_parse_arch_option_name):
5453 Accept complain bool parameter. Only emit errors if it is true.
5454 (arm_parse_cpu_option_name): Likewise.
5455 (arm_target_thumb_only): Adjust callers of the above.
5456 * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
5457 prototype to take a default true bool parameter.
5458 (arm_parse_arch_option_name): Likewise.
5459
5460 2018-03-09 David Malcolm <dmalcolm@redhat.com>
5461 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
5462
5463 PR jit/64089
5464 PR jit/84288
5465 * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
5466 * configure: Regenerate.
5467 * configure.ac ("linker --version-script option"): New.
5468 ("linker soname option"): New.
5469
5470 2018-03-09 Richard Biener <rguenther@suse.de>
5471
5472 PR tree-optimization/84775
5473 * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
5474 immediate uses of predicate stmts and mark them modified.
5475
5476 Revert
5477 PR tree-optimization/84178
5478 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
5479 to caller.
5480 (version_loop_for_if_conversion): Delay update_ssa call.
5481 (tree_if_conversion): Delay update_ssa until after predicate
5482 insertion.
5483
5484 2018-03-09 Eric Botcazou <ebotcazou@adacore.com>
5485
5486 PR target/84763
5487 * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
5488 when the function accesses prior frames.
5489
5490 2018-03-08 Jakub Jelinek <jakub@redhat.com>
5491
5492 PR debug/84456
5493 * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
5494 gen_llsym, otherwise call maybe_gen_llsym.
5495
5496 PR inline-asm/84742
5497 * recog.c (asm_operand_ok): Return 0 if multi-character constraint
5498 has ',' character inside of it.
5499
5500 2018-03-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
5501
5502 PR target/84748
5503 * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
5504 as clobbering CC_REGNUM.
5505
5506 2018-03-08 Richard Biener <rguenther@suse.de>
5507
5508 PR middle-end/84552
5509 * tree-scalar-evolution.c: Include tree-into-ssa.h.
5510 (follow_copies_to_constant): Do not follow SSA names registered
5511 for update.
5512
5513 2018-03-08 Richard Biener <rguenther@suse.de>
5514
5515 PR tree-optimization/84178
5516 * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
5517 to caller.
5518 (version_loop_for_if_conversion): Delay update_ssa call.
5519 (tree_if_conversion): Delay update_ssa until after predicate
5520 insertion.
5521
5522 2018-03-08 David Malcolm <dmalcolm@redhat.com>
5523
5524 PR tree-optimization/84178
5525 * tree-if-conv.c (release_bb_predicate): Remove the
5526 the assertion that the stmts have NULL use_ops.
5527 Discard the statements, asserting that they haven't
5528 yet been added to a BB.
5529
5530 2018-03-08 Richard Biener <rguenther@suse.de>
5531
5532 PR tree-optimization/84746
5533 * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
5534 (phi_translate): Pass in destination ANTIC_OUT set.
5535 (phi_translate_1): Likewise. For a simplified result lookup
5536 a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
5537 (phi_translate_set): Adjust.
5538 (do_pre_regular_insertion): Likewise.
5539 (do_pre_partial_partial_insertion): Likewise.
5540
5541 2018-03-08 Martin Liska <mliska@suse.cz>
5542
5543 PR gcov-profile/84735
5544 * doc/gcov.texi: Document usage of profile files.
5545 * gcov-io.h: Document changes in the format.
5546
5547 2018-03-08 Alexandre Oliva <aoliva@redhat.com>
5548
5549 PR debug/84404
5550 PR debug/84408
5551 * dwarf2out.c (struct dw_line_info_table): Update comments for
5552 view == -1.
5553 (FORCE_RESET_NEXT_VIEW): New.
5554 (FORCE_RESETTING_VIEW_P): New.
5555 (RESETTING_VIEW_P): Check for -1 too.
5556 (ZERO_VIEW_P): Likewise.
5557 (new_line_info_table): Force-reset next view.
5558 (dwarf2out_begin_function): Likewise.
5559 (dwarf2out_source_line): Simplify zero_view_p initialization.
5560 Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
5561 view directly. Omit view when omitting .loc at line 0.
5562
5563 2018-03-08 Jakub Jelinek <jakub@redhat.com>
5564
5565 PR tree-optimization/84740
5566 * tree-switch-conversion.c (process_switch): Call build_constructors
5567 only if info.phi_count is non-zero.
5568
5569 PR tree-optimization/84739
5570 * tree-tailcall.c (find_tail_calls): Check call arguments against
5571 DECL_ARGUMENTS (current_function_decl) rather than
5572 DECL_ARGUMENTS (func) when checking for tail recursion.
5573
5574 2018-03-07 Jakub Jelinek <jakub@redhat.com>
5575
5576 * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
5577 Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
5578 Volker Reichelt's entry and add entries for people that perform
5579 GCC fuzzy testing and report numerous bugs.
5580
5581 2018-03-07 Segher Boessenkool <segher@kernel.crashing.org>
5582
5583 PR target/82411
5584 * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
5585 readonly data in sdata, if that is disabled.
5586 * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
5587 * doc/invoke.texi (RS/6000 and PowerPC Options): Document
5588 -mreadonly-in-sdata option.
5589
5590 2018-03-07 Martin Sebor <msebor@redhat.com>
5591
5592 PR tree-optimization/84468
5593 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
5594 basic block when looking for nul assignment.
5595
5596 2018-03-07 Eric Botcazou <ebotcazou@adacore.com>
5597
5598 PR target/84277
5599 * except.h (output_function_exception_table): Adjust prototype.
5600 * except.c (output_function_exception_table): Remove FNNAME parameter
5601 and add SECTION parameter. Ouput one part of the table at a time.
5602 * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
5603 the first part of the exception table and emit unwind directives.
5604 * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
5605 (i386_pe_seh_cold_init): Likewise.
5606 * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
5607 (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
5608 * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
5609 (ix86_output_call_insn): Emit a nop in one more case for SEH.
5610 * config/i386/winnt.c: Include except.h.
5611 (struct seh_frame_state): Add reg_offset, after_prologue and
5612 in_cold_section fields.
5613 (i386_pe_seh_end_prologue): Set seh->after_prologue.
5614 (i386_pe_seh_cold_init): New function.
5615 (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
5616 to seh->in_cold_section.
5617 (seh_emit_push): Record the offset of the push.
5618 (seh_emit_save): Record the offet of the save.
5619 (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
5620 Test seh->after_prologue to disregard the epilogue.
5621 (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
5622 (i386_pe_end_cold_function): New function.
5623
5624 2018-03-07 Jakub Jelinek <jakub@redhat.com>
5625
5626 PR fortran/84565
5627 * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
5628 aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
5629
5630 PR c++/84704
5631 * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
5632 on tmp_var.
5633 * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
5634 don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
5635
5636 PR middle-end/84723
5637 * multiple_target.c: Include tree-inline.h and intl.h.
5638 (expand_target_clones): Diagnose and fail if node->definition and
5639 !tree_versionable_function_p (node->decl).
5640
5641 2018-03-06 John David Anglin <danglin@gcc.gnu.org>
5642
5643 * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
5644 sprint_ul.
5645 (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
5646 (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
5647 * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
5648
5649 2018-03-06 Jakub Jelinek <jakub@redhat.com>
5650
5651 PR target/84710
5652 * combine.c (try_combine): Use reg_or_subregno instead of handling
5653 just paradoxical SUBREGs and REGs.
5654
5655 2018-03-06 Claudiu Zissulescu <claziss@synopsys.com>
5656
5657 * config/arc/arc.c (arc_finalize_pic): Remove function.
5658 (arc_must_save_register): We use single base PIC register, remove
5659 checks to save/restore the PIC register.
5660 (arc_expand_prologue): Likewise.
5661 * config/arc/arc-protos.h (arc_set_default_type_attributes):
5662 Remove.
5663 (arc_verify_short): Likewise.
5664 (arc_attr_type): Likewise.
5665 * config/arc/arc.c (arc_set_default_type_attributes): Remove.
5666 (walk_stores): Likewise.
5667 (arc_address_cost): Make it static.
5668 (arc_verify_short): Likewise.
5669 (branch_dest): Likewise.
5670 (arc_attr_type): Likewise.
5671 * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
5672 (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
5673 (arc_final_prescan_insn): Remove inserting the nops due to
5674 hardware hazards. It is done in reorg step.
5675 (insn_length_variant_t): Remove.
5676 (insn_length_parameters_t): Likewise.
5677 (arc_insn_length_parameters): Likewise.
5678 (arc_get_insn_variants): Likewise.
5679 * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
5680
5681 2018-03-06 Jakub Jelinek <jakub@redhat.com>
5682
5683 PR inline-asm/84683
5684 * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
5685 assertion failure.
5686
5687 PR tree-optimization/84687
5688 * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
5689 on new_node->decl.
5690 * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
5691
5692 2018-03-05 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
5693
5694 * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
5695 Rename to ppc_speculation_barrier.
5696 * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
5697 __builtin_ppc_speculation_barrier.
5698
5699 2018-03-05 Jakub Jelinek <jakub@redhat.com>
5700
5701 PR target/84700
5702 * combine.c (combine_simplify_rtx): Don't try to simplify if
5703 if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
5704 are equal to x.
5705
5706 2018-03-05 Segher Boessenkool <segher@kernel.crashing.org>
5707
5708 * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
5709 to 32 bytes when compiling for POWER9.
5710
5711 2018-03-05 Jakub Jelinek <jakub@redhat.com>
5712
5713 PR target/84564
5714 * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
5715 regparm >= 3 with no arg reg available also for calls with
5716 flag_force_indirect_call. Pass decl to ix86_function_regparm.
5717
5718 PR target/84524
5719 * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
5720 orig,vex.
5721 (*<plusminus_insn><mode>3): Likewise. Remove <mask_operand3> uses.
5722
5723 2018-03-05 Peter Bergner <bergner@vnet.ibm.com>
5724
5725 PR target/84264
5726 * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
5727
5728 2018-03-05 Richard Biener <rguenther@suse.de>
5729
5730 PR tree-optimization/84486
5731 * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
5732 When inserting a __builtin_assume_aligned call set the LHS
5733 SSA name alignment info accordingly.
5734
5735 2018-03-05 Wilco Dijkstra <wdijkstr@arm.com>
5736
5737 PR tree-optimization/84114
5738 * config/aarch64/aarch64.c (aarch64_reassociation_width)
5739 Avoid reassociation of FLOAT_MODE addition.
5740
5741 2018-03-05 Olga Makhotina <olga.makhotina@intel.com>
5742
5743 * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
5744 OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
5745 OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
5746 (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
5747 * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
5748 * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
5749 * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
5750 and -mwbnoinvd.
5751 * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
5752 __builtin_ia32_wbinvd): New builtins.
5753 (SPECIAL_ARGS2): New.
5754 * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
5755 (SPECIAL_ARGS2): New.
5756 * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
5757 (ix86_valid_target_attribute_inner_p): Ditto.
5758 (ix86_init_mmx_sse_builtins): Add special_args2.
5759 * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
5760 TARGET_WBNOINVD_P): New.
5761 * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
5762 (define_insn "wbinvd", define_insn "wbnoinvd"): New.
5763 * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
5764 * config/i386/immintrin.h (_wbinvd): New intrinsic.
5765 * config/i386/pconfigintrin.h: New file.
5766 * config/i386/wbnoinvdintrin.h: Ditto.
5767 * config/i386/x86intrin.h: Add headers pconfigintrin.h and wbnoinvdintrin.h.
5768 * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
5769
5770 2018-03-05 Richard Biener <rguenther@suse.de>
5771
5772 PR tree-optimization/84670
5773 * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
5774 member.
5775 (BB_VISITED_WITH_VISITED_SUCCS): New define.
5776 (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
5777 (compute_antic_aux): Only assert the number of values in ANTIC_IN
5778 doesn't grow if all successors (recursively) were visited at least
5779 once.
5780
5781 2018-03-05 Richard Biener <rguenther@suse.de>
5782
5783 PR tree-optimization/84650
5784 * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
5785 if executed in the loop pipeline.
5786
5787 2018-03-05 Sandra Loosemore <sandra@codesourcery.com>
5788
5789 * doc/configfiles.texi (Configuration Files): Move info about
5790 conditionalizing $target-protos.h to...
5791 * doc/sourcebuild.texi (Back End): Here. Explain how $target.h
5792 differs from $target-protos.h.
5793
5794 2018-03-05 Kito Cheng <kito.cheng@gmail.com>
5795 Chung-Ju Wu <jasonwucj@gmail.com>
5796
5797 * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
5798 * config/nds32/nds32-multiple.md (setmemsi): Define.
5799 * config/nds32/nds32-memory-manipulation.c
5800 (nds32_gen_dup_4_byte_to_word_value): New.
5801 (emit_setmem_word_loop): New.
5802 (emit_setmem_byte_loop): New.
5803 (nds32_expand_setmem_loop): New.
5804 (nds32_expand_setmem_loop_v3m): New.
5805 (nds32_expand_setmem_unroll): New.
5806 (nds32_expand_setmem): New.
5807
5808 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
5809 Chung-Ju Wu <jasonwucj@gmail.com>
5810
5811 * config/nds32/nds32-memory-manipulation.c
5812 (nds32_emit_load_store): New.
5813 (nds32_emit_post_inc_load_store): New.
5814 (nds32_emit_mem_move): New.
5815 (nds32_emit_mem_move_block): New.
5816 (nds32_expand_movmemsi_loop_unknown_size): New.
5817 (nds32_expand_movmemsi_loop_known_size): New.
5818 (nds32_expand_movmemsi_loop): New.
5819 (nds32_expand_movmemsi_unroll): New.
5820 (nds32_expand_movmemqi): Rename ...
5821 (nds32_expand_movmemsi): ... to this.
5822 * config/nds32/nds32-multiple.md (movmemqi): Rename ...
5823 (movmemsi): ... to this.
5824 * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
5825 (nds32_expand_movmemsi): ... to this.
5826
5827 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
5828 Monk Chiang <sh.chiang04@gmail.com>
5829 Chung-Ju Wu <jasonwucj@gmail.com>
5830
5831 * config/nds32/nds32-protos.h
5832 (nds32_expand_load_multiple): New arguments.
5833 (nds32_expand_store_multiple): Ditto.
5834 (nds32_valid_multiple_load_store): Rename ...
5835 (nds32_valid_multiple_load_store_p): ... to this.
5836 * config/nds32/nds32-memory-manipulation.c
5837 (nds32_expand_load_multiple): Refine implementation.
5838 (nds32_expand_store_multiple): Ditto.
5839 * config/nds32/nds32-multiple.md
5840 (load_multiple): Update nds32_expand_load_multiple interface.
5841 (store_multiple): Update nds32_expand_store_multiple interface.
5842 * config/nds32/nds32-predicates.c
5843 (nds32_valid_multiple_load_store): Rename ...
5844 (nds32_valid_multiple_load_store_p): ... to this and refine
5845 implementation.
5846 * config/nds32/predicates.md
5847 (nds32_load_multiple_and_update_address_operation): New predicate.
5848 (nds32_store_multiple_and_update_address_operation): New predicate.
5849
5850 2018-03-04 Kito Cheng <kito.cheng@gmail.com>
5851 Chung-Ju Wu <jasonwucj@gmail.com>
5852
5853 * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
5854 (combo): New attribute.
5855 * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
5856
5857 2018-03-03 Chung-Ju Wu <jasonwucj@gmail.com>
5858
5859 * config/nds32/nds32.opt: Change -mcmodel= default value.
5860
5861 2018-03-03 Kito Cheng <kito.cheng@gmail.com>
5862 Monk Chiang <sh.chiang04@gmail.com>
5863 Chung-Ju Wu <jasonwucj@gmail.com>
5864
5865 * config/nds32/constants.md (unspec_element): New enum.
5866 * config/nds32/constraints.md (Umw): New constraint.
5867 * config/nds32/nds32-intrinsic.c: Add more builtin functions.
5868 * config/nds32/nds32-intrinsic.md: Likewise.
5869 * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
5870 (nds32_valid_smw_lwm_base_p): New.
5871 (nds32_output_smw_single_word): New.
5872 (nds32_output_lmw_single_word): New.
5873 (nds32_expand_unaligned_load): New.
5874 (nds32_expand_unaligned_store): New.
5875 * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
5876 (nds32_output_smw_single_word): Declare.
5877 (nds32_output_lmw_single_word): Declare.
5878 (nds32_expand_unaligned_load): Declare.
5879 (nds32_expand_unaligned_store): Declare.
5880 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
5881 NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
5882 NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
5883 NDS32_BUILTIN_UASTORE_DW.
5884 * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
5885 predicate.
5886
5887 2018-03-03 Monk Chiang <sh.chiang04@gmail.com>
5888 Kito Cheng <kito.cheng@gmail.com>
5889 Chung-Ju Wu <jasonwucj@gmail.com>
5890
5891 * config/nds32/nds32-intrinsic.c
5892 (nds32_expand_builtin_null_ftype_reg): Delete.
5893 (nds32_expand_builtin_reg_ftype_imm): Ditto.
5894 (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
5895 (nds32_read_argument): New.
5896 (nds32_legitimize_target): Ditto.
5897 (nds32_legitimize_argument): Ditto.
5898 (nds32_check_constant_argument): Ditto.
5899 (nds32_expand_unop_builtin): Ditto.
5900 (nds32_expand_unopimm_builtin): Ditto.
5901 (nds32_expand_binop_builtin): Ditto.
5902 (nds32_builtin_decl_impl): Ditto.
5903 (builtin_description): Ditto.
5904 (nds32_expand_builtin_impl): Rewrite with new infrastructure.
5905 (nds32_init_builtins_impl): Ditto.
5906 * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
5907 (nds32_builtin_decl): New.
5908 * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
5909 * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
5910
5911 2018-03-02 Jeff Law <law@redhat.com>
5912
5913 * reorg.c (stop_search_p): Handle DEBUG_INSN.
5914 (redundant_insn, fill_simple_delay_slots): Likewise.
5915 (fill_slots_from_thread): Likewise.
5916 * resource.c (mark_referenced_resources): Likewise.
5917 (mark_set_resources, find_dead_or_set_registers): Likewise.
5918
5919 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5920
5921 * substring-locations.h (format_warning_va): Formatting fix for
5922 ATTRIBUTE_GCC_DIAG.
5923 (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
5924 argument.
5925 (format_warning_n_va, format_warning_at_substring_n): New prototypes.
5926 * substring-locations.c: Include intl.h.
5927 (format_warning_va): Turned into small wrapper around
5928 format_warning_n_va, renamed to ...
5929 (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
5930 rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
5931 use ngettext.
5932 (format_warning_at_substring_n): New function.
5933 * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
5934 (fmtwarn): Add ATTRIBUTE_GCC_DIAG. Turn into a copy of
5935 format_warning_at_substring with just a shorter name instead of
5936 const function pointer.
5937 (fmtwarn_n): New function.
5938 (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
5939 appropriate, get rid of all the fmtstr temporaries, move conditionals
5940 with G_() wrapped string literals directly into fmtwarn arguments,
5941 cast dir.len to (int), formatting fixes.
5942
5943 2018-03-02 Thomas Schwinge <thomas@codesourcery.com>
5944
5945 * doc/invoke.texi: Remove "Cilk Plus" references.
5946
5947 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5948 Richard Biener <rguenther@suse.de>
5949
5950 PR ipa/84628
5951 * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
5952 for error or warning attributes if CALL_FROM_THUNK_P is set.
5953 Formatting fixes.
5954
5955 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5956
5957 PR target/56540
5958 * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
5959 __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
5960
5961 PR target/56540
5962 * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
5963 __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
5964
5965 * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
5966 instead of -1U in last predictors element's probability member.
5967
5968 2018-03-02 Eric Botcazou <ebotcazou@adacore.com>
5969
5970 PR ipa/83983
5971 * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
5972 arguments if they are comparable.
5973
5974 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
5975
5976 PR tree-optimization/84634
5977 * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
5978 masks and masked_loop_p with a single loop_masks, making sure it's
5979 null for bb vectorization.
5980
5981 2018-03-02 Richard Sandiford <richard.sandiford@linaro.org>
5982
5983 * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
5984 (vect_analyze_data_ref_access): Use loop->safe_len rather than
5985 loop->force_vectorize to check whether there is no alias.
5986
5987 2018-03-02 Jakub Jelinek <jakub@redhat.com>
5988
5989 PR target/84614
5990 * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
5991 prototypes.
5992 * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
5993 comments.
5994 (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
5995 * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
5996 instead of a loop around prev_real_insn.
5997 * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
5998 prev_real_insn.
5999
6000 PR inline-asm/84625
6001 * config/i386/i386.c (ix86_print_operand): Use conditional
6002 output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
6003 zero vector.
6004
6005 2018-03-02 Richard Biener <rguenther@suse.de>
6006
6007 PR tree-optimization/84427
6008 * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
6009 (bitmap_set_subtract_values): Rewrite to handle multiple
6010 exprs per value.
6011 (clean): Likewise.
6012 (prune_clobbered_mems): Likewise.
6013 (phi_translate): Take edge instead of pred/phiblock.
6014 (phi_translate_1): Likewise.
6015 (phi_translate_set): Likewise. Insert all translated
6016 exprs for a value into the set, keeping possibly multiple
6017 expressions per value.
6018 (compute_antic_aux): Adjust for phi_translate changes.
6019 When intersecting union the expressions and prune those
6020 not in the final value set, keeping possibly multiple
6021 expressions per value. Do not use value-insertion
6022 for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
6023 all expressions. Add verification that the value-sets
6024 only shrink during iteration.
6025 (compute_partial_antic_aux): Adjust for the phi_translate changes.
6026 (do_pre_regular_insertion): Likewise.
6027 (do_pre_partial_partial_insertion): Likewise.
6028
6029 2018-03-02 Richard Biener <rguenther@suse.de>
6030
6031 PR target/82005
6032 * config/darwin.c (saved_debug_info_level): New static global.
6033 (darwin_asm_lto_start): Disable debug info generation for LTO out.
6034 (darwin_asm_lto_end): Restore debug info generation settings.
6035
6036 2018-03-01 Martin Liska <mliska@suse.cz>
6037
6038 PR sanitizer/82484
6039 * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
6040 volatile arguments.
6041
6042 2018-03-01 Richard Biener <rguenther@suse.de>
6043
6044 PR debug/84645
6045 * dwarf2out.c (gen_variable_die): Properly handle late VLA
6046 type annotation with LTO when debug was disabled at compile-time.
6047
6048 2018-03-01 Matthew Fortune <mfortune@gmail.com>
6049
6050 * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
6051 XINT with INTVAL.
6052 (mips_final_postscan_insn): Likewise.
6053
6054 2018-03-01 Richard Sandiford <richard.sandiford@linaro.org>
6055
6056 PR rtl-optimization/84528
6057 * alias.c (init_alias_target): Add commentary.
6058 (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
6059 a unique base value if the frame pointer is not eliminated
6060 to the stack pointer.
6061
6062 2018-03-01 Tom de Vries <tom@codesourcery.com>
6063
6064 PR rtl-optimization/83327
6065 * lra-int.h (hard_regs_spilled_into): Declare.
6066 * lra.c (hard_regs_spilled_into): Define.
6067 (init_reg_info): Init hard_regs_spilled_into.
6068 * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
6069 * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
6070 (process_bb_lives): Handle hard_regs_spilled_into.
6071 (lra_create_live_ranges_1): Before doing liveness propagation, clear
6072 regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
6073
6074 2018-02-28 David Edelsohn <dje.gcc@gmail.com>
6075
6076 * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
6077 (powerpc-ibm-aix[789]*): Default to AIX 7.2.
6078 * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
6079 * config/rs6000/aix72.h: New file.
6080
6081 2018-02-28 Jakub Jelinek <jakub@redhat.com>
6082
6083 * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
6084 instead of warning_at with conditional singular and plural messages
6085 where possible.
6086
6087 PR target/52991
6088 * stor-layout.c (update_alignment_for_field): For
6089 targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
6090 && !DECL_PACKED (field), do the alignment update, just use
6091 only desired_align instead of MAX (type_align, desired_align)
6092 as the alignment.
6093 (place_field): Don't do known_align < desired_align handling
6094 early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
6095 is non-NULL, instead do it after rli->prev_field handling and
6096 only if not within a bitfield word. For DECL_PACKED (field)
6097 use type_align of BITS_PER_UNIT.
6098
6099 2018-02-28 Eric Botcazou <ebotcazou@adacore.com>
6100
6101 * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
6102 superfluous parentheses and trailing spaces.
6103
6104 2018-02-28 Richard Biener <rguenther@suse.de>
6105
6106 PR tree-optimization/84584
6107 * graphite-scop-detection.c (scop_detection::add_scop): Discard
6108 SCoPs with fake exit edge.
6109
6110 2018-02-28 Martin Liska <mliska@suse.cz>
6111
6112 PR testsuite/84597
6113 * timevar.c (timer::print): Fix format to properly print 100%
6114 values.
6115
6116 2018-02-28 Richard Biener <rguenther@suse.de>
6117
6118 PR middle-end/84607
6119 * genmatch.c (capture_info::walk_match): Do not mark
6120 captured expressions without operands as expr_p given
6121 they act more like predicates and should be subject to
6122 "lost tail" side-effect preserving.
6123
6124 2018-02-28 Alexandre Oliva <aoliva@redhat.com>
6125
6126 PR rtl-optimization/81611
6127 * auto-inc-dec.c (attempt_change): Move dead note from
6128 mem_insn if it's the next use of regno
6129 (find_address): Take address use of reg holding
6130 non-incremented value. Add parm to limit search to the named
6131 reg only.
6132 (merge_in_block): Attempt to use a mem insn that is the next
6133 use of the original regno.
6134
6135 2018-02-27 Martin Sebor <msebor@redhat.com>
6136
6137 PR c++/83871
6138 * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
6139 * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
6140
6141 2018-02-27 Martin Sebor <msebor@redhat.com>
6142
6143 PR translation/84207
6144 * diagnostic-core.h (warning_n, error_n, inform_n): Change
6145 n argument to unsigned HOST_WIDE_INT.
6146 * diagnostic.c (warning_n, error_n, inform_n): Ditto.
6147 (diagnostic_n_impl): Ditto. Handle arguments in excess of LONG_MAX.
6148 * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
6149 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
6150
6151 2018-02-27 Richard Biener <rguenther@suse.de>
6152
6153 PR tree-optimization/84512
6154 * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
6155 Do not use the estimate returned from record_stmt_cost for
6156 the scalar iteration cost but sum properly using add_stmt_cost.
6157
6158 2018-02-27 Richard Biener <rguenther@suse.de>
6159
6160 PR tree-optimization/84466
6161 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
6162 Adjust last change to less strictly validate use operands.
6163
6164 2018-02-27 Martin Liska <mliska@suse.cz>
6165
6166 PR gcov-profile/84548
6167 * gcov.c (process_file): Allow partial overlap and consider it
6168 also as group functions.
6169 (output_lines): Properly calculate range of lines for a group.
6170
6171 2018-02-27 Martin Liska <mliska@suse.cz>
6172
6173 * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
6174 'ggc' suffixes. Change first column width.
6175 (timer::print): Fix formatting of the column.
6176
6177 2018-02-27 Alexandre Oliva <aoliva@redhat.com>
6178
6179 * tree-ssa-live.c (remove_unused_scope_block_p): Do not
6180 preserve inline entry blocks for the sake of debug inline
6181 entry point markers alone.
6182 (remove_unused_locals): Suggest in comments a better place to
6183 force the preservation of inline entry blocks that are
6184 otherwise unused, but do not preserve them.
6185
6186 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
6187
6188 * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
6189
6190 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
6191
6192 PR target/84039
6193 * config/i386/constraints.md (Bs): Replace
6194 ix86_indirect_branch_register with
6195 TARGET_INDIRECT_BRANCH_REGISTER.
6196 (Bw): Likewise.
6197 * config/i386/i386.md (indirect_jump): Likewise.
6198 (tablejump): Likewise.
6199 (*sibcall_memory): Likewise.
6200 (*sibcall_value_memory): Likewise.
6201 Peepholes of indirect call and jump via memory: Likewise.
6202 (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
6203 (*sibcall_value_GOT_32): Likewise.
6204 * config/i386/predicates.md (indirect_branch_operand): Likewise.
6205 (GOT_memory_operand): Likewise.
6206 (call_insn_operand): Likewise.
6207 (sibcall_insn_operand): Likewise.
6208 (GOT32_symbol_operand): Likewise.
6209 * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
6210
6211 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
6212
6213 PR rtl-optimization/83496
6214 * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
6215 booleans to RTXes. Call fix_reg_dead_note on every non-null element.
6216 (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
6217 redundant insn, if any.
6218 (relax_delay_slots): Likewise.
6219 (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
6220
6221 2018-02-26 Richard Sandiford <richard.sandiford@linaro.org>
6222
6223 PR tree-optimization/83965
6224 * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
6225 that grouped statements are part of a reduction chain. Return
6226 true if the statement is not marked as a reduction itself but
6227 is part of a group.
6228 (vect_recog_dot_prod_pattern): Don't check whether the statement
6229 is part of a group here.
6230 (vect_recog_sad_pattern): Likewise.
6231 (vect_recog_widen_sum_pattern): Likewise.
6232
6233 2018-02-26 Eric Botcazou <ebotcazou@adacore.com>
6234
6235 PR debug/84545
6236 * final.c (rest_of_clean_state): Also look for calls inside sequences.
6237
6238 2018-02-26 H.J. Lu <hongjiu.lu@intel.com>
6239
6240 PR target/84530
6241 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
6242 the bool argument.
6243 (ix86_output_indirect_function_return): New prototype.
6244 (ix86_split_simple_return_pop_internal): Likewise.
6245 * config/i386/i386.c (indirect_return_via_cx): New.
6246 (indirect_return_via_cx_bnd): Likewise.
6247 (indirect_thunk_name): Handle return va CX_REG.
6248 (output_indirect_thunk_function): Create alias for
6249 __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
6250 (ix86_output_indirect_jmp): Remove the bool argument.
6251 (ix86_output_indirect_function_return): New function.
6252 (ix86_split_simple_return_pop_internal): Likewise.
6253 * config/i386/i386.md (*indirect_jump): Don't pass false
6254 to ix86_output_indirect_jmp.
6255 (*tablejump_1): Likewise.
6256 (simple_return_pop_internal): Change it to define_insn_and_split.
6257 Call ix86_split_simple_return_pop_internal to split it for
6258 -mfunction-return=.
6259 (simple_return_indirect_internal): Call
6260 ix86_output_indirect_function_return instead of
6261 ix86_output_indirect_jmp.
6262
6263 2018-02-26 Jakub Jelinek <jakub@redhat.com>
6264
6265 PR bootstrap/84405
6266 * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
6267 memset and value initialization afterwards.
6268
6269 2018-02-26 Christophe Lyon <christophe.lyon@linaro.org>
6270
6271 * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
6272
6273 2018-02-26 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
6274
6275 PR target/84521
6276 * common/config/aarch64/aarch64-common.c
6277 (aarch_option_optimization_table[]): Switch
6278 off fomit-frame-pointer
6279
6280 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
6281 Chung-Ju Wu <jasonwucj@gmail.com>
6282
6283 * config/nds32/nds32-multiple.md (load_multiple): Disallow
6284 volatile memory.
6285 (store_multiple): Ditto.
6286
6287 2018-02-26 Kito Cheng <kito.cheng@gmail.com>
6288
6289 * config.gcc: Add --with-cpu support for nds32 target.
6290 * config/nds32/nds32-opts.h (nds32_cpu_type): New.
6291 * config/nds32/nds32.opt: Add -mcpu= option.
6292
6293 2018-02-25 Segher Boessenkool <segher@kernel.crashing.org>
6294
6295 * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
6296 isel=yes): Warn for these deprecated options.
6297
6298 2018-02-23 David Edelsohn <dje.gcc@gmail.com>
6299
6300 * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
6301 ISA_2_5_MASKS_EMBEDDED.
6302
6303 2018-02-23 Jakub Jelinek <jakub@redhat.com>
6304
6305 * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
6306 p->max as pointers rather than using iterative_hash_expr.
6307
6308 2018-02-23 Carl Love <cel@us.ibm.com>
6309
6310 * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
6311 macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
6312 BU_P8V_OVERLOAD_2.
6313 * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
6314 P8V_BUILTIN_VEC_VSIGNED2. Change VSX_BUILTIN_VEC_VUNSIGNED2 to
6315 P8V_BUILTIN_VEC_VUNSIGNED2.
6316
6317 2018-02-22 Vladimir Makarov <vmakarov@redhat.com>
6318
6319 PR target/81572
6320 * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
6321 * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
6322 LRA_UNKNOWN_ALT.
6323 * lra-constraints.c (curr_insn_transform): Set up
6324 LRA_NON_CLOBBERED_ALT for moves processed on the fast path. Use
6325 LRA_UNKNOWN_ALT.
6326 (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
6327 * lra-eliminations.c (spill_pseudos): Ditto.
6328 (process_insn_for_elimination): Ditto.
6329 * lra-lives.c (reg_early_clobber_p): Use the new macros.
6330 * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
6331 LRA_NON_CLOBBERED_ALT.
6332
6333 2018-02-22 Martin Sebor <msebor@redhat.com>
6334
6335 PR tree-optimization/84480
6336 * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
6337 to maybe_diag_stxncpy_trunc. Call it.
6338 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
6339 from gimple_fold_builtin_strcpy. Print inlining stack.
6340 (handle_builtin_stxncpy): Print inlining stack.
6341 * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
6342
6343 2018-02-22 H.J. Lu <hongjiu.lu@intel.com>
6344
6345 PR target/84176
6346 * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
6347 error when -mindirect-branch=thunk-extern, -fcf-protection=branch
6348 and -fcheck-pointer-bounds are used together.
6349 (indirect_thunk_prefix): New enum.
6350 (indirect_thunk_need_prefix): New function.
6351 (indirect_thunk_name): Replace need_bnd_p with need_prefix. Use
6352 "_nt" instead of "_bnd" for NOTRACK prefix.
6353 (output_indirect_thunk): Replace need_bnd_p with need_prefix.
6354 (output_indirect_thunk_function): Likewise.
6355 (): Likewise.
6356 (ix86_code_end): Update output_indirect_thunk_function calls.
6357 (ix86_output_indirect_branch_via_reg): Replace
6358 ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
6359 (ix86_output_indirect_branch_via_push): Likewise.
6360 (ix86_output_function_return): Likewise.
6361 * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
6362 incompatible with -fcf-protection=branch and
6363 -fcheck-pointer-bounds.
6364
6365 2018-02-22 Steve Ellcey <sellcey@cavium.com>
6366
6367 PR target/83335
6368 * config/aarch64/aarch64.c (aarch64_print_address_internal):
6369 Change gcc_assert call to output_operand_lossage.
6370
6371 2018-02-22 Steve Ellcey <sellcey@cavium.com>
6372
6373 * doc/extend.texi (__builtin_extend_pointer): Document builtin.
6374
6375 2018-02-22 DJ Delorie <dj@redhat.com>
6376 Sebastian Perta <sebastian.perta@renesas.com>
6377 Oleg Endo <olegendo@gcc.gnu.org>
6378
6379 * config/rx/rx.c (rx_rtx_costs): New function.
6380 (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
6381
6382 2018-02-22 Thomas Preud'homme <thomas.preudhomme@arm.com>
6383
6384 * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
6385
6386 2018-02-22 Martin Liska <mliska@suse.cz>
6387
6388 PR driver/83193
6389 * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
6390 Add "native" as a possible value.
6391
6392 2018-02-22 Martin Liska <mliska@suse.cz>
6393
6394 PR driver/83193
6395 * config/i386/i386.c (ix86_option_override_internal):
6396 Add "native" as a possible value for -march and -mtune.
6397
6398 2018-02-22 Jakub Jelinek <jakub@redhat.com>
6399
6400 PR target/84502
6401 * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
6402 to all type variants.
6403
6404 PR tree-optimization/84503
6405 * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
6406 width as info->bitpos + info->bitsize - start.
6407 (merged_store_group::merge_overlapping): Simplify width computation.
6408 (check_no_overlap): New function.
6409 (imm_store_chain_info::try_coalesce_bswap): Compute expected
6410 start + width and last_order of the group, fail if check_no_overlap
6411 fails.
6412 (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
6413 to group if check_no_overlap fails.
6414
6415 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
6416
6417 * config/rs6000/altivec.md: Delete contraint arguments to
6418 define_expand, define_split, and define_peephole2, and in
6419 define_insn_and_split if always unused.
6420 * config/rs6000/darwin.md: Ditto.
6421 * config/rs6000/dfp.md: Ditto.
6422 * config/rs6000/rs6000.md: Ditto.
6423 * config/rs6000/sync.md: Ditto.
6424 * config/rs6000/vector.md: Ditto.
6425 * config/rs6000/vsx.md: Ditto.
6426
6427 2018-02-21 Segher Boessenkool <segher@kernel.crashing.org>
6428
6429 * config/rs6000/altivec.md: Write output control strings as braced
6430 blocks instead of double-quoted strings.
6431 * config/rs6000/darwin.md: Ditto.
6432 * config/rs6000/rs6000.md: Ditto.
6433 * config/rs6000/vector.md: Ditto.
6434 * config/rs6000/vsx.md: Ditto.
6435
6436 2018-02-21 Jason Merrill <jason@redhat.com>
6437
6438 PR c++/84314 - ICE with templates and fastcall attribute.
6439 * attribs.c (build_type_attribute_qual_variant): Remove assert.
6440
6441 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
6442
6443 * ipa-cp.c (determine_versionability): Fix comment typos.
6444
6445 2018-02-21 Jan Hubicka <hubicka@ucw.cz>
6446
6447 PR c/84229
6448 * ipa-cp.c (determine_versionability): Do not version functions caling
6449 va_arg_pack.
6450
6451 2018-02-21 Martin Liska <mliska@suse.cz>
6452
6453 PR driver/83193
6454 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
6455 Add "native" as a possible value.
6456 * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT): Define
6457 the macro when native cpu detection is available.
6458
6459 2018-02-21 Martin Liska <mliska@suse.cz>
6460
6461 PR driver/83193
6462 * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
6463 Add "native" as a possible value.
6464 * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
6465 when native cpu detection is available.
6466
6467 2018-02-21 Jakub Jelinek <jakub@redhat.com>
6468 Martin Sebor <msebor@redhat.com>
6469
6470 PR tree-optimization/84478
6471 * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
6472 false.
6473 * gimple-fold.c (get_range_strlen): Make minlen const and assume it
6474 can't be NULL. Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
6475 support which is conservatively correct, for 2 only stay conservative
6476 for maxlen. Formatting and comment capitalization fixes. Add STRICT
6477 argument to the 2 argument get_range_strlen, adjust 6 arg
6478 get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
6479 false.
6480 (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
6481 (gimple_fold_builtin_strlen): Pass true as last argument to
6482 get_range_strlen.
6483
6484 2018-02-20 Martin Sebor <msebor@redhat.com>
6485
6486 PR middle-end/84095
6487 * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
6488 (builtin_memref::set_base_and_offset): Same. Handle inner references.
6489 (builtin_memref::builtin_memref): Factor out parts into
6490 set_base_and_offset and call it.
6491
6492 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
6493
6494 PR middle-end/84406
6495 * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
6496 is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
6497 greater precision. If to_mode is a MODE_PARTIAL_INT, stop the
6498 search at the associated MODE_INT.
6499
6500 2018-02-20 Jeff Law <law@redhat.com>
6501
6502 PR middle-end/82123
6503 PR tree-optimization/81592
6504 PR middle-end/79257
6505 * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
6506 for range data rather than using global data.
6507 * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
6508 range data rather than using global data.
6509 * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
6510 pass it to children as needed.
6511 (struct directive::fmtresult): Similarly.
6512 (struct directive::set_width): Similarly.
6513 (struct directive::set_precision): Similarly.
6514 (format_integer, format_directive, parse_directive): Similarly.
6515 (format_none): Accept unnamed vr_values parameter.
6516 (format_percent, format_floating, format_character): Similarly.
6517 (format_string, format_plain): Similarly.
6518 * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
6519 the EVRP range analyzer for range data rather than using global data.
6520 * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
6521 gimple-ssa-evrp-analyze.h
6522 (class sprintf_dom_walker): Add after_dom_children member function.
6523 Add evrp_range_analyzer member.
6524 (sprintf_dom_walker::before_dom_children): Call into the EVRP
6525 range analyzer as needed.
6526 (sprintf_dom_walker::after_dom_children): New member function.
6527 * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
6528 if not optimizing.
6529 (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
6530 (evrp_range_analyzer::pop_to_marker): Likewise.
6531
6532 2018-02-20 Richard Sandiford <richard.sandiford@linaro.org>
6533
6534 PR tree-optimization/84419
6535 * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
6536 with the required type if its current type is compatible but
6537 different.
6538
6539 2018-02-20 Jakub Jelinek <jakub@redhat.com>
6540
6541 PR middle-end/82004
6542 * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
6543 after vectorization.
6544
6545 2018-02-20 Martin Liska <mliska@suse.cz>
6546
6547 PR driver/83193
6548 * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
6549 possible values if we don't have a hint.
6550
6551 2018-02-20 Martin Liska <mliska@suse.cz>
6552
6553 PR c/84310
6554 PR target/79747
6555 * final.c (shorten_branches): Build align_tab array with one
6556 more element.
6557 * opts.c (finish_options): Add alignment option limit check.
6558 (MAX_CODE_ALIGN): Likewise.
6559 (MAX_CODE_ALIGN_VALUE): Likewise.
6560 * doc/invoke.texi: Document maximum allowed option value for
6561 all -falign-* options.
6562
6563 2018-02-19 Jakub Jelinek <jakub@redhat.com>
6564
6565 PR target/84146
6566 * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
6567 * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
6568 * var-tracking.c (emit_note_insn_var_location): Remove all references
6569 to NOTE_INSN_CALL_ARG_LOCATION.
6570 (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
6571 the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
6572 Use copy_rtx_if_shared.
6573 * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
6574 NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
6575 (dwarf2out_var_location): Remove handling of
6576 NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
6577 on call_insn.
6578 * final.c (final_scan_insn): Remove all references to
6579 NOTE_INSN_CALL_ARG_LOCATION.
6580 (rest_of_clean_state): Likewise. Remove REG_CALL_ARG_LOCATION notes
6581 before dumping final insns.
6582 * except.c (emit_note_eh_region_end): Remove all references to
6583 NOTE_INSN_CALL_ARG_LOCATION.
6584 * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
6585 * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
6586 * config/arc/arc.c (hwloop_optimize): Likewise.
6587 * config/arm/arm.c (create_fix_barrier): Likewise.
6588 * config/s390/s390.c (s390_chunkify_start): Likewise.
6589 * config/sh/sh.c (find_barrier): Likewise.
6590 * config/i386/i386.c (rest_of_insert_endbranch,
6591 ix86_seh_fixup_eh_fallthru): Likewise.
6592 * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
6593 * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
6594 * config/frv/frv.c (frv_function_prologue): Likewise.
6595 * emit-rtl.c (try_split): Likewise. Copy over REG_CALL_ARG_LOCATION
6596 reg note.
6597 (note_outside_basic_block_p): Remove all references to
6598 NOTE_INSN_CALL_ARG_LOCATION.
6599 * gengtype.c (adjust_field_rtx_def): Likewise.
6600 * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
6601 Likewise.
6602 * jump.c (cleanup_barriers, delete_related_insns): Likewise.
6603 * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
6604
6605 PR c++/84444
6606 * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
6607 is ADDR_EXPR.
6608
6609 PR tree-optimization/84452
6610 * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
6611 expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
6612 is NULL.
6613
6614 2018-02-19 Martin Liska <mliska@suse.cz>
6615
6616 PR sanitizer/82183
6617 * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
6618
6619 2018-02-19 Martin Liska <mliska@suse.cz>
6620 Richard Sandiford <richard.sandiford@linaro.org>
6621
6622 PR tree-optimization/82491
6623 * gimple-fold.c (get_base_constructor): Make earlier bail out
6624 to prevent ubsan.
6625
6626 2018-02-19 Carl Love <cel@us.ibm.com>
6627
6628 * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
6629 BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
6630 BU_P8V_OVERLOAD_1.
6631 * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
6632 P8V_BUILTIN_VEC_NEG.
6633
6634 2018-02-19 Sebastian Perta <sebastian.perta@renesas.com>
6635
6636 * config/rl78/rl78.md (movdf): New define expand.
6637
6638 2018-02-19 Martin Liska <mliska@suse.cz>
6639
6640 PR other/80589
6641 * doc/invoke.texi: Fix typo.
6642 * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
6643
6644 2018-02-18 Segher Boessenkool <segher@kernel.crashing.org>
6645
6646 * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
6647 handle rs6000_single_float and rs6000_double_float specially for
6648 e500 family CPUs.
6649
6650 2018-02-16 Jeff Law <law@redhat.com>
6651
6652 * config/rx/rx.c (add_pop_cfi_notes): New function.;
6653 (pop_regs): Use it.
6654
6655 2018-02-16 Jakub Jelinek <jakub@redhat.com>
6656
6657 PR ipa/84425
6658 * ipa-inline.c (inline_small_functions): Fix a typo.
6659
6660 2018-02-16 Nathan Sidwell <nathan@acm.org>
6661
6662 * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
6663
6664 2018-02-16 Carl Love <cel@us.ibm.com>
6665
6666 * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
6667 Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
6668 from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
6669 * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
6670 expansion to P8V_BUILTIN_VEC_FLOAT2.
6671
6672 2018-02-16 Vladimir Makarov <vmakarov@redhat.com>
6673
6674 PR rtl-optimization/70023
6675 * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
6676 src_regno into account.
6677
6678 2018-02-16 Carl Love <cel@us.ibm.com>
6679
6680 * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
6681 * config/rs6000/rs6000-builtin.def: Remove macro expansion for
6682 VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
6683 * config/rs6000/rs6000.c: Remove case statements for
6684 P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
6685 P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
6686 and P9V_BUILTIN_VEC_VINSERT4B.
6687 * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
6688 P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
6689 * config/rs6000/vsx.md:
6690 * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
6691 vec_insert4b.
6692
6693 2018-02-16 Carl Love <cel@us.ibm.com>
6694
6695 * config/rs6000/altivec.h: Add builtin names vec_extract4b
6696 vec_insert4b.
6697 * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
6698 definitions.
6699 * config/rs6000/rs6000-c.c: Add the definitions for
6700 P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
6701 * config/rs6000/rs6000.c (altivec_expand_builtin): Add
6702 P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
6703 * config/rs6000/vsx.md: Add define_insn extract4b. Add define_expand
6704 definition for insert4b and define insn *insert3b_internal.
6705 * doc/extend.texi: Add documentation for vec_extract4b.
6706
6707 2018-02-16 Nathan Sidwell <nathan@acm.org>
6708
6709 * doc/extend.texi (Backwards Compatibility): Mention friend
6710 injection. Note for-scope is deprecated.
6711 * doc/invoke.texi (-ffriend-injection): Deprecate.
6712
6713 2018-02-16 Segher Boessenkool <segher@kernel.crashing.org>
6714
6715 * combine.c (try_combine): When adjusting LOG_LINKS for the destination
6716 that moved to I2, also allow destinations that are a paradoxical
6717 subreg (instead of a normal reg).
6718
6719 2018-02-16 Oleg Endo <olegendo@gcc.gnu.org>
6720
6721 PR target/83831
6722 * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
6723 to QImode.
6724
6725 2018-02-16 Richard Biener <rguenther@suse.de>
6726
6727 PR tree-optimization/84037
6728 PR tree-optimization/84016
6729 PR target/82862
6730 * config/i386/i386.c (ix86_builtin_vectorization_cost):
6731 Adjust vec_construct for the fact we need additional higher latency
6732 128bit inserts for AVX256 and AVX512 vector builds.
6733 (ix86_add_stmt_cost): Scale vector construction cost for
6734 elementwise loads.
6735
6736 2018-02-16 Richard Biener <rguenther@suse.de>
6737
6738 PR tree-optimization/84417
6739 * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
6740 the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
6741 (non_rewritable_lvalue_p): Likewise, use poly-ints.
6742
6743 2018-02-16 Martin Liska <mliska@suse.cz>
6744
6745 PR sanitizer/84307
6746 * internal-fn.def (ASAN_CHECK): Set proper flags.
6747 (ASAN_MARK): Likewise.
6748
6749 2018-02-16 Julia Koval <julia.koval@intel.com>
6750
6751 * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
6752 from PTA_CANNONLAKE.
6753
6754 2018-02-16 Jakub Jelinek <jakub@redhat.com>
6755
6756 PR target/84272
6757 * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
6758 Use ++iter rather than iter++ for std::list iterators.
6759 (func_fma_steering::dfs): Likewise. Don't delete nodes right away,
6760 defer deleting them until all nodes in the forest are processed. Do
6761 free even leaf nodes. Change to_process into auto_vec.
6762
6763 PR bootstrap/84405
6764 * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
6765 * vec.h (vec_default_construct): Use memset instead of placement new
6766 if BROKEN_VALUE_INITIALIZATION is defined.
6767 * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
6768 memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
6769 is defined.
6770
6771 PR rtl-optimization/83723
6772 * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
6773 * lra.c (lra_substitute_pseudo): Likewise. If true, use
6774 gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG. Pass DEBUG_P to
6775 recursive calls.
6776 (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
6777 callers.
6778 * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
6779
6780 2018-02-16 Eric Botcazou <ebotcazou@adacore.com>
6781
6782 PR rtl-optimization/81443
6783 * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
6784 from inner REGs to paradoxical SUBREGs.
6785
6786 2018-02-16 Richard Biener <rguenther@suse.de>
6787
6788 PR tree-optimization/84399
6789 * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
6790 For operands we can analyze at their definition make sure we can
6791 analyze them at each use as well.
6792
6793 2018-02-16 Richard Biener <rguenther@suse.de>
6794
6795 PR tree-optimization/84190
6796 * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
6797 volatile accesses if the decl isn't volatile.
6798
6799 2018-02-15 Jason Merrill <jason@redhat.com>
6800
6801 PR c++/84314 - ICE with templates and fastcall attribute.
6802 * attribs.c (build_type_attribute_qual_variant): Don't clobber
6803 TYPE_CANONICAL on an existing type.
6804
6805 2018-02-15 Jakub Jelinek <jakub@redhat.com>
6806
6807 PR tree-optimization/84383
6808 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
6809 dstoff nor call operand_equal_p if dstbase is NULL.
6810
6811 PR tree-optimization/84334
6812 * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
6813 also a CONSTANT_CLASS_P, punt.
6814
6815 2018-02-14 Jim Wilson <jimw@sifive.com>
6816
6817 * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
6818 first SMALL_OPERAND check. New local min_second_step. Move assert
6819 to where locals are set. Add TARGET_RVC support.
6820 * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
6821
6822 2018-02-14 Indu Bhagat <indu.bhagat@oracle.com>
6823
6824 * doc/invoke.texi: Correct -Wformat-overflow code sample.
6825
6826 2018-02-14 Martin Sebor <msebor@redhat.com>
6827
6828 PR tree-optimization/83698
6829 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
6830 arrays constrain the offset range to their bounds.
6831 (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
6832 (builtin_access::overlap): Avoid setting the size of overlap if it's
6833 already been set.
6834 (maybe_diag_overlap): Also consider arrays when deciding what values
6835 of offsets to include in diagnostics.
6836
6837 2018-02-14 Martin Sebor <msebor@redhat.com>
6838
6839 PR c/84108
6840 * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
6841 that correspond to the kind of a declaration.
6842
6843 2018-02-14 John David Anglin <danglin@gcc.gnu.org>
6844
6845 PR target/83984
6846 * config/pa/pa.md: Load address of PIC label using the linkage table
6847 if the label is nonlocal.
6848
6849 2018-02-14 Kelvin Nilsen <kelvin@gcc.gnu.org>
6850
6851 * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
6852 warning message if user requests -maltivec=be.
6853 * doc/invoke.texi: Document deprecation of -maltivec=be.
6854
6855 2018-02-14 Will Schmidt <will_schmidt@vnet.ibm.com>
6856
6857 PR target/84220
6858 * config/rs6000/rs6000-c.c: Update definitions for
6859 ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
6860 VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
6861
6862 2018-02-14 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
6863
6864 PR target/84239
6865 * config/i386/cetintrin.h: Remove _rdssp[d|q] and
6866 add _get_ssp intrinsics. Remove argument from
6867 __builtin_ia32_rdssp[d|q].
6868 * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
6869 * config/i386/i386-builtin.def: Remove argument from
6870 __builtin_ia32_rdssp[d|q].
6871 * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
6872 ix86_expand_special_args_builtin for _rdssp[d|q].
6873 * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
6874 Clear register before usage.
6875 * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
6876 Add documentation for new _get_ssp and _inc_ssp intrinsics.
6877
6878 2018-02-14 Richard Sandiford <richard.sandiford@linaro.org>
6879
6880 PR tree-optimization/84357
6881 * tree-data-ref.c (object_address_invariant_in_loop_p): Check
6882 operand 1 of an ARRAY_REF too.
6883
6884 2018-02-14 Oleg Endo <olegendo@gcc.gnu.org>
6885
6886 PR target/83831
6887 * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
6888 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6889 declarations.
6890 (set_of_reg): New struct.
6891 (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
6892 * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
6893 rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
6894 functions.
6895 * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
6896 Split into bitclr, bitset, bitinvert patterns if appropriate.
6897 (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
6898 use rx_fuse_in_memory_bitop.
6899 (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
6900 to named insn, correct maximum insn length.
6901
6902 2018-02-14 Jozef Lawrynowicz <jozefl.gcc@gmail.com>
6903
6904 PR target/79242
6905 * machmode.def: Define a complex mode for PARTIAL_INT.
6906 * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
6907 MODE_PARTIAL_INT.
6908 * doc/rtl.texi: Document CSPImode.
6909 * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
6910 handling.
6911 (msp430_hard_regno_nregs_with_padding): Likewise.
6912
6913 2018-02-13 Peter Bergner <bergner@vnet.ibm.com>
6914
6915 PR target/84279
6916 * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
6917
6918 2018-02-13 Segher Boessenkool <segher@kernel.crashing.org>
6919
6920 PR rtl-optimization/84169
6921 * combine.c (try_combine): New variable split_i2i3. Set it to true if
6922 we generated a parallel as new i3 and we split that to new i2 and i3
6923 instructions. Handle split_i2i3 similar to swap_i2i3: scan the
6924 LOG_LINKs of i3 to see which of those need to link to i2 now. Link
6925 those to i2, not i1. Partially rewrite this scan code.
6926
6927 2018-02-13 Jakub Jelinek <jakub@redhat.com>
6928
6929 PR c/82210
6930 * stor-layout.c (place_field): For variable length fields, adjust
6931 offset_align afterwards not just based on the field's alignment,
6932 but also on the size.
6933
6934 PR middle-end/84309
6935 * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
6936 of exps and logs in the use_exp2 case.
6937
6938 2018-02-13 Jeff Law <law@redhat.com>
6939
6940 * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
6941 entry for "vector".
6942
6943 * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
6944 ARGS as unused.
6945
6946 2018-02-13 Alexandre Oliva <aoliva@redhat.com>
6947
6948 PR debug/84342
6949 PR debug/84319
6950 * common.opt (gas-loc-support, gas-locview-support): New.
6951 (ginline-points, ginternal-reset-location-views): New.
6952 * doc/invoke.texi: Document them. Use @itemx where intended.
6953 (gvariable-location-views): Adjust.
6954 * target.def (reset_location_view): New.
6955 * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
6956 (TARGET_RESET_LOCATION_VIEW): New.
6957 * doc/tm.texi: Rebuilt.
6958 * dwarf2out.c (dwarf2out_default_as_loc_support): New.
6959 (dwarf2out_default_as_locview_support): New.
6960 (output_asm_line_debug_info): Use option variables.
6961 (dwarf2out_maybe_output_loclist_view_pair): Likewise.
6962 (output_loc_list): Likewise.
6963 (add_high_low_attributes): Check option variables.
6964 Don't output entry view attribute in strict mode.
6965 (gen_inlined_subroutine_die): Check option variables.
6966 (dwarf2out_inline_entry): Likewise.
6967 (init_sections_and_labels): Likewise.
6968 (dwarf2out_early_finish): Likewise.
6969 (maybe_reset_location_view): New, from...
6970 (dwarf2out_var_location): ... here. Call it.
6971 * debug.h (dwarf2out_default_as_loc_support): Declare.
6972 (dwarf2out_default_as_locview_support): Declare.
6973 * hooks.c (hook_int_rtx_insn_0): New.
6974 * hooks.h (hook_int_rtx_insn_0): Declare.
6975 * toplev.c (process_options): Take -gas-loc-support and
6976 -gas-locview-support from dwarf2out. Enable
6977 -gvariable-location-views by default only with locview
6978 assembler support. Enable -ginternal-reset-location-views by
6979 default only if the target defines the corresponding hook.
6980 Enable -ginline-points by default if location views are
6981 enabled; force it disabled if statement frontiers are
6982 disabled.
6983 * tree-inline.c (expand_call_inline): Check option variables.
6984 * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
6985
6986 2018-02-13 Richard Sandiford <richard.sandiford@linaro.org>
6987
6988 PR tree-optimization/84321
6989 * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
6990 handling. Also check whether the anti-range contains any values
6991 that satisfy the mask; switch to a VR_RANGE if not.
6992
6993 2018-02-13 Paolo Bonzini <bonzini@gnu.org>
6994
6995 PR sanitizer/84340
6996 * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
6997
6998 2018-02-13 Martin Jambor <mjambor@suse.cz>
6999
7000 PR c++/83990
7001 * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
7002 of call statements, also set location of a load to a temporary.
7003
7004 2018-02-13 Sebastian Perta <sebastian.perta@renesas.com>
7005
7006 * config/rl78/rl78.c (add_vector_labels): New function.
7007 * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
7008 * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
7009 * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert
7010 which checks that no arguments are passed.
7011 * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
7012 * doc/extend.texi: Documentation for the new attribute.
7013
7014 2018-02-13 Andreas Schwab <schwab@suse.de>
7015
7016 * config/riscv/linux.h (CPP_SPEC): Define.
7017
7018 2018-02-13 Jakub Jelinek <jakub@redhat.com>
7019
7020 PR target/84335
7021 * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
7022 OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
7023 OPTION_MASK_ISA_AES as first argument to def_builtin_const
7024 for AES builtins. Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
7025 instead of OPTION_MASK_ISA_PCLMUL as first argument to
7026 def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
7027 * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
7028 temporarily for AES and PCLMUL builtins.
7029
7030 PR tree-optimization/84339
7031 * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
7032 ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
7033 Formatting fixes.
7034
7035 PR middle-end/84309
7036 * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
7037 exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
7038 * generic-match-head.c (canonicalize_math_after_vectorization_p): New
7039 inline function.
7040 * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
7041 inline function.
7042 * omp-simd-clone.h: New file.
7043 * omp-simd-clone.c: Include omp-simd-clone.h.
7044 (expand_simd_clones): No longer static.
7045 * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
7046 cgraph.h and omp-simd-clone.h.
7047 (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
7048 (vect_recog_widen_shift_pattern): Formatting fix.
7049 (vect_pattern_recog_1): Don't check optab for calls.
7050
7051 PR target/84336
7052 * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
7053 operands[2] into a REG before using gen_lowpart on it.
7054
7055 2018-02-12 Jeff Law <law@redhat.com>
7056
7057 PR target/83760
7058 * config/sh/sh.c (find_barrier): Consider a sibling call
7059 a barrier as well.
7060
7061 * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
7062 successfully back substituting a reg.
7063
7064 2018-02-12 Richard Biener <rguenther@suse.de>
7065
7066 PR tree-optimization/84037
7067 * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
7068 parameter, move visited init to caller.
7069 (vect_slp_analyze_operations): Separate cost from validity
7070 check, initialize visited once for all instances.
7071 (vect_schedule_slp): Analyze map to CSE vectorized nodes once
7072 for all instances.
7073 * tree-vect-stmts.c (vect_model_simple_cost): Make early
7074 out an assert.
7075 (vect_model_promotion_demotion_cost): Likewise.
7076 (vectorizable_bswap): Guard cost modeling with !slp_node
7077 instead of !PURE_SLP_STMT to avoid double-counting on hybrid
7078 SLP stmts.
7079 (vectorizable_call): Likewise.
7080 (vectorizable_conversion): Likewise.
7081 (vectorizable_assignment): Likewise.
7082 (vectorizable_shift): Likewise.
7083 (vectorizable_operation): Likewise.
7084 (vectorizable_store): Likewise.
7085 (vectorizable_load): Likewise.
7086 (vectorizable_condition): Likewise.
7087 (vectorizable_comparison): Likewise.
7088
7089 2018-02-12 Paolo Bonzini <bonzini@gnu.org>
7090
7091 PR sanitizer/84307
7092 * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
7093 (ASAN_MARK): Fix fnspec to account for return value, change pointer
7094 argument from 'R' to 'W' so that the pointed-to datum is clobbered.
7095
7096 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
7097
7098 PR middle-end/83665
7099 * params.def (inline-min-speedup): Increase from 8 to 15.
7100 (max-inline-insns-auto): Decrease from 40 to 30.
7101 * ipa-split.c (consider_split): Add some buffer for function to
7102 be considered inlining candidate.
7103 * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
7104 default values.
7105
7106 2018-02-12 Richard Biener <rguenther@suse.de>
7107
7108 PR tree-optimization/84037
7109 * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
7110 matched stmts if we cannot swap the non-matched ones.
7111
7112 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
7113
7114 * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
7115 _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
7116 _mm_maskz_scalef_round_ss): New intrinsics.
7117 (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
7118 * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
7119 __builtin_ia32_scalefss_round): Remove.
7120 (__builtin_ia32_scalefsd_mask_round,
7121 __builtin_ia32_scalefss_mask_round): New intrinsics.
7122 * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
7123 (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
7124 ((match_operand:VF_128 2 "<round_nimm_predicate>"
7125 "<round_constraint>")): Changed to ...
7126 ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
7127 "<round_scalar_constraint>")): ... this.
7128 ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
7129 %0, %1, %2<round_op3>}"): Changed to ...
7130 ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
7131 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
7132 %2<round_scalar_mask_op3>}"): ... this.
7133 * config/i386/subst.md (round_scalar_nimm_predicate): New.
7134
7135 2018-02-12 Olga Makhotina <olga.makhotina@intel.com>
7136
7137 * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
7138 (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
7139 (_mm_maskz_sqrt_round_ss): New intrinsics.
7140 (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
7141 (__builtin_ia32_sqrtsd_mask_round)
7142 (__builtin_ia32_sqrtss_mask_round): New builtins.
7143 * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
7144 (__builtin_ia32_sqrtss_round): Remove.
7145 (__builtin_ia32_sqrtsd_mask_round)
7146 (__builtin_ia32_sqrtss_mask_round): New builtins.
7147 * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
7148 (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
7149 ((match_operand:VF_128 1 "vector_operand"
7150 "xBm,<round_constraint>")): Changed to ...
7151 ((match_operand:VF_128 1 "vector_operand"
7152 "xBm,<round_scalar_constraint>")): ... this.
7153 (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
7154 %0, %2, %<iptr>1<round_op3>}): Changed to ...
7155 (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
7156 %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
7157 %<iptr>1<round_scalar_mask_op3>}): ... this.
7158 ((set_attr "prefix" "<round_prefix>")): Changed to ...
7159 ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
7160
7161 2018-02-11 Steven Munroe <munroesj@gcc.gnu.org>
7162
7163 PR target/84266
7164 * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
7165 Cast vec_cmpeq result to correct type.
7166 * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
7167 Cast vec_cmpgt result to correct type.
7168
7169 2018-02-11 Alexandre Oliva <aoliva@redhat.com>
7170
7171 * final.c (final_scan_insn_1): Renamed from...
7172 (final_scan_insn): ... this. New wrapper, to recover
7173 seen from the outermost call in recursive ones.
7174 * config/sparc/sparc.c (output_return): Drop seen from call.
7175 (output_sibcall): Likewise.
7176 * config/visium/visium.c (output_branch): Likewise.
7177
7178 2018-02-10 John David Anglin <danglin@gcc.gnu.org>
7179
7180 * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
7181 function label.
7182
7183 2018-02-10 Alan Modra <amodra@gmail.com>
7184
7185 PR target/84300
7186 * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
7187 Specify LR as an input.
7188
7189 2018-02-10 Jakub Jelinek <jakub@redhat.com>
7190
7191 PR sanitizer/83987
7192 * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
7193 remove_member_access_dummy_vars): New functions.
7194 (lower_omp_for, lower_omp_taskreg, lower_omp_target,
7195 lower_omp_1, execute_lower_omp): Use them.
7196
7197 PR rtl-optimization/84308
7198 * shrink-wrap.c (spread_components): Release todo vector.
7199
7200 2018-02-09 Vladimir Makarov <vmakarov@redhat.com>
7201
7202 PR rtl-optimization/57193
7203 * ira-color.c (struct allocno_color_data): Add member
7204 conflict_allocno_hard_prefs.
7205 (update_conflict_allocno_hard_prefs): New.
7206 (bucket_allocno_compare_func): Add a preference based on
7207 conflict_allocno_hard_prefs.
7208 (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
7209 (color_allocnos): Remove a dead code. Initiate
7210 conflict_allocno_hard_prefs. Call update_costs_from_prefs.
7211
7212 2018-02-09 Jakub Jelinek <jakub@redhat.com>
7213
7214 PR target/84226
7215 * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
7216 constraint from =wa to wa. Avoid a subreg on the output operand,
7217 instead use a pseudo and subreg it in a move.
7218 (p9_xxbrd_<mode>): Changed to ...
7219 (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
7220 (p9_xxbrd_v2df): New expander.
7221 (p9_xxbrw_<mode>): Changed to ...
7222 (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
7223 (p9_xxbrw_v4sf): New expander.
7224
7225 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
7226
7227 * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
7228
7229 2018-02-09 Peter Bergner <bergner@vnet.ibm.com>
7230
7231 PR target/83926
7232 * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
7233 multiply in 32-bit mode.
7234 (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
7235 (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
7236 mode.
7237
7238 2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
7239
7240 * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
7241 to allow or block "symbol_ref" depending on the value of TARGET_JSR.
7242 * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
7243 * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
7244
7245 2018-02-09 Pierre-Marie de Rodat <derodat@adacore.com>
7246
7247 PR lto/84213
7248 * dwarf2out.c (is_trivial_indirect_ref): New function.
7249 (dwarf2out_late_global_decl): Do not generate a location
7250 attribute for variables that have a non-trivial DECL_VALUE_EXPR
7251 and that are not defined in the current unit.
7252
7253 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
7254
7255 * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
7256 instead of a libcall for UNORDERED.
7257
7258 2018-02-09 Tamar Christina <tamar.christina@arm.com>
7259
7260 PR target/82641
7261 * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
7262 __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
7263
7264 2018-02-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
7265
7266 PR target/PR84295
7267 * config/s390/s390.c (s390_set_current_function): Invoke
7268 s390_indirect_branch_settings also if fndecl didn't change.
7269
7270 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
7271
7272 * config/rs6000/rs6000.md (blockage): Set length to zero.
7273
7274 2018-02-09 Eric Botcazou <ebotcazou@adacore.com>
7275
7276 * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
7277
7278 2018-02-09 Jakub Jelinek <jakub@redhat.com>
7279
7280 PR sanitizer/84285
7281 * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
7282 STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
7283 -static-lib*san.
7284
7285 PR debug/84252
7286 * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
7287 PARALLEL incoming that failed vt_get_decl_and_offset check.
7288
7289 PR middle-end/84237
7290 * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
7291 * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
7292 TREE_READONLY bit.
7293 (get_variable_section): For decls in named .bss* sections pass true as
7294 second argument to bss_initializer_p.
7295
7296 2018-02-09 Marek Polacek <polacek@redhat.com>
7297 Jakub Jelinek <jakub@redhat.com>
7298
7299 PR c++/83659
7300 * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
7301 Formatting fixes. Verify first that tree_fits_poly_int64_p (op01).
7302 Sync some changes from cxx_fold_indirect_ref.
7303
7304 2018-02-09 Alexandre Oliva <aoliva@redhat.com>
7305
7306 * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
7307 markers.
7308 * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
7309 (BLOCK_INLINE_ENTRY_LABEL): New.
7310 (dwarf2out_var_location): Disregard inline entry markers.
7311 (inline_entry_data): New struct.
7312 (inline_entry_data_hasher): New hashtable type.
7313 (inline_entry_data_hasher::hash): New.
7314 (inline_entry_data_hasher::equal): New.
7315 (inline_entry_data_table): New variable.
7316 (add_high_low_attributes): Add DW_AT_entry_pc and
7317 DW_AT_GNU_entry_view attributes if a pending entry is found
7318 in inline_entry_data_table. Add old entry_pc attribute only
7319 if debug nonbinding markers are disabled.
7320 (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
7321 markers are enabled.
7322 (block_within_block_p, dwarf2out_inline_entry): New.
7323 (dwarf2out_finish): Check that no entries remained in
7324 inline_entry_data_table.
7325 * final.c (reemit_insn_block_notes): Handle inline entry notes.
7326 (final_scan_insn, notice_source_line): Likewise.
7327 (rest_of_clean_state): Skip inline entry markers.
7328 * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
7329 markers.
7330 * gimple.c (gimple_build_debug_inline_entry): New.
7331 * gimple.h (enum gimple_debug_subcode): Add
7332 GIMPLE_DEBUG_INLINE_ENTRY.
7333 (gimple_build_debug_inline_entry): Declare.
7334 (gimple_debug_inline_entry_p): New.
7335 (gimple_debug_nonbind_marker_p): Adjust.
7336 * insn-notes.def (INLINE_ENTRY): New.
7337 * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
7338 inline entry marker notes.
7339 (print_insn): Likewise.
7340 * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
7341 (INSN_DEBUG_MARKER_KIND): Likewise.
7342 (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
7343 * tree-inline.c (expand_call_inline): Build and insert
7344 debug_inline_entry stmt.
7345 * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
7346 inline entry blocks early, if nonbind markers are enabled.
7347 (dump_scope_block): Dump fragment info.
7348 * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
7349 * doc/gimple.texi (gimple_debug_inline_entry_p): New.
7350 (gimple_build_debug_inline_entry): New.
7351 * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
7352 Enable/disable inline entry points too.
7353 * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
7354 (DEBUG_INSN): Describe inline entry markers.
7355
7356 * common.opt (gvariable-location-views): New.
7357 (gvariable-location-views=incompat5): New.
7358 * config.in: Rebuilt.
7359 * configure: Rebuilt.
7360 * configure.ac: Test assembler for view support.
7361 * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
7362 * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
7363 * dwarf2out.c (var_loc_view): New typedef.
7364 (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
7365 (dwarf2out_locviews_in_attribute): New.
7366 (dwarf2out_locviews_in_loclist): New.
7367 (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
7368 (enum dw_line_info_opcode): Add LI_adv_address.
7369 (struct dw_line_info_table): Add view.
7370 (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
7371 (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
7372 (zero_view_p): New variable.
7373 (ZERO_VIEW_P): New macro.
7374 (output_asm_line_debug_info): New.
7375 (struct var_loc_node): Add view.
7376 (add_AT_view_list, AT_loc_list): New.
7377 (add_var_loc_to_decl): Add view param. Test it against last.
7378 (new_loc_list): Add view params. Record them.
7379 (AT_loc_list_ptr): Handle loc and view lists.
7380 (view_list_to_loc_list_val_node): New.
7381 (print_dw_val): Handle dw_val_class_view_list.
7382 (size_of_die): Likewise.
7383 (value_format): Likewise.
7384 (loc_list_has_views): New.
7385 (gen_llsym): Set vl_symbol too.
7386 (maybe_gen_llsym, skip_loc_list_entry): New.
7387 (dwarf2out_maybe_output_loclist_view_pair): New.
7388 (output_loc_list): Output view list or entries too.
7389 (output_view_list_offset): New.
7390 (output_die): Handle dw_val_class_view_list.
7391 (output_dwarf_version): New.
7392 (output_compilation_unit_header): Use it.
7393 (output_skeleton_debug_sections): Likewise.
7394 (output_rnglists, output_line_info): Likewise.
7395 (output_pubnames, output_aranges): Update version comments.
7396 (output_one_line_info_table): Output view numbers in asm comments.
7397 (dw_loc_list): Determine current endview, pass it to new_loc_list.
7398 Call maybe_gen_llsym.
7399 (loc_list_from_tree_1): Adjust.
7400 (add_AT_location_description): Create view list attribute if
7401 needed, check it's absent otherwise.
7402 (convert_cfa_to_fb_loc_list): Adjust.
7403 (maybe_emit_file): Call output_asm_line_debug_info for test.
7404 (dwarf2out_var_location): Reset views as needed. Precompute
7405 add_var_loc_to_decl args. Call get_attr_min_length only if we have the
7406 attribute. Set view.
7407 (new_line_info_table): Reset next view.
7408 (set_cur_line_info_table): Call output_asm_line_debug_info for test.
7409 (dwarf2out_source_line): Likewise. Output view resets and labels to
7410 the assembler, or select appropriate line info opcodes.
7411 (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
7412 (optimize_string_length): Catch it. Adjust.
7413 (resolve_addr): Copy vl_symbol along with ll_symbol. Handle
7414 dw_val_class_view_list, and remove it if no longer needed.
7415 (hash_loc_list): Hash view numbers.
7416 (loc_list_hasher::equal): Compare them.
7417 (optimize_location_lists): Check whether a view list symbol is
7418 needed, and whether the locview attribute is present, and
7419 whether they match. Remove the locview attribute if no longer
7420 needed.
7421 (index_location_lists): Call skip_loc_list_entry for test.
7422 (dwarf2out_finish): Call output_asm_line_debug_info for test.
7423 Use output_dwarf_version.
7424 * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
7425 (struct dw_val_node): Add val_view_list.
7426 * final.c (SEEN_NEXT_VIEW): New.
7427 (set_next_view_needed): New.
7428 (clear_next_view_needed): New.
7429 (maybe_output_next_view): New.
7430 (final_start_function): Rename to...
7431 (final_start_function_1): ... this. Take pointer to FIRST,
7432 add SEEN parameter. Emit param bindings in the initial view.
7433 (final_start_function): Reintroduce SEEN-less interface.
7434 (final): Rename to...
7435 (final_1): ... this. Take SEEN parameter. Output final pending
7436 next view at the end.
7437 (final): Reintroduce seen-less interface.
7438 (final_scan_insn): Output pending next view before switching
7439 sections or ending a block. Mark the next view as needed when
7440 outputting variable locations. Notify debug backend of section
7441 changes, and of location view changes.
7442 (rest_of_handle_final): Adjust.
7443 * toplev.c (process_options): Autodetect value for debug variable
7444 location views option. Warn on incompat5 without -gdwarf-5.
7445 * doc/invoke.texi (gvariable-location-views): New.
7446 (gvariable-location-views=incompat5): New.
7447 (gno-variable-location-views): New.
7448
7449 2018-02-08 David Malcolm <dmalcolm@redhat.com>
7450
7451 PR tree-optimization/84136
7452 * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
7453 that the result of find_edge is non-NULL.
7454
7455 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
7456
7457 PR target/83008
7458 * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
7459 storing integer register in SImode. Fix cost of 256 and 512
7460 byte aligned SSE register store.
7461
7462 2018-02-08 Sergey Shalnov <sergey.shalnov@intel.com>
7463
7464 * config/i386/i386.c (ix86_multiplication_cost): Fix
7465 multiplication cost for TARGET_AVX512DQ.
7466
7467 2018-02-08 Marek Polacek <polacek@redhat.com>
7468
7469 PR tree-optimization/84238
7470 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
7471 get_range_strlen.
7472
7473 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
7474
7475 PR tree-optimization/84265
7476 * tree-vect-stmts.c (vectorizable_store): Don't treat
7477 VMAT_CONTIGUOUS accesses as grouped.
7478 (vectorizable_load): Likewise.
7479
7480 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
7481
7482 PR tree-optimization/81635
7483 * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
7484 * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
7485 (test_round_for_mask): New functions.
7486 (wide_int_cc_tests): Call test_round_for_mask.
7487 * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
7488 * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
7489 * tree-data-ref.c (split_constant_offset_1): Use it to refine the
7490 range returned by get_range_info.
7491
7492 2018-02-08 Jan Hubicka <hubicka@ucw.cz>
7493
7494 PR ipa/81360
7495 * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
7496 * symtab.c: Include builtins.h
7497 (symtab_node::output_to_lto_symbol_table_p): Move here
7498 from lto-streamer-out.c:output_symbol_p.
7499 * lto-streamer-out.c (write_symbol): Turn early exit to assert.
7500 (output_symbol_p): Move all logic to symtab.c
7501 (produce_symtab): Update.
7502
7503 2018-02-08 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
7504
7505 * config/s390/s390-opts.h (enum indirect_branch): Define.
7506 * config/s390/s390-protos.h (s390_return_addr_from_memory)
7507 (s390_indirect_branch_via_thunk)
7508 (s390_indirect_branch_via_inline_thunk): Add function prototypes.
7509 (enum s390_indirect_branch_type): Define.
7510 * config/s390/s390.c (struct s390_frame_layout, struct
7511 machine_function): Remove.
7512 (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
7513 (indirect_branch_table_label_no, indirect_branch_table_name):
7514 Define variables.
7515 (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
7516 (enum s390_indirect_branch_option): Define.
7517 (s390_return_addr_from_memory): New function.
7518 (s390_handle_string_attribute): New function.
7519 (s390_attribute_table): Add new attribute handler.
7520 (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
7521 (s390_indirect_branch_via_thunk): New function.
7522 (s390_indirect_branch_via_inline_thunk): New function.
7523 (s390_function_ok_for_sibcall): When jumping via thunk disallow
7524 sibling call optimization for non z10 compiles.
7525 (s390_emit_call): Force indirect branch target to be a single
7526 register. Add r1 clobber for non-z10 compiles.
7527 (s390_emit_epilogue): Emit return jump via return_use expander.
7528 (s390_reorg): Handle JUMP_INSNs as execute targets.
7529 (s390_option_override_internal): Perform validity checks for the
7530 new command line options.
7531 (s390_indirect_branch_attrvalue): New function.
7532 (s390_indirect_branch_settings): New function.
7533 (s390_set_current_function): Invoke s390_indirect_branch_settings.
7534 (s390_output_indirect_thunk_function): New function.
7535 (s390_code_end): Implement target hook.
7536 (s390_case_values_threshold): Implement target hook.
7537 (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
7538 macros.
7539 * config/s390/s390.h (struct s390_frame_layout)
7540 (struct machine_function): Move here from s390.c.
7541 (TARGET_INDIRECT_BRANCH_NOBP_RET)
7542 (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
7543 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
7544 (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
7545 (TARGET_INDIRECT_BRANCH_NOBP_CALL)
7546 (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
7547 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
7548 (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
7549 (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
7550 * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
7551 (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
7552 (mnemonic attribute): Add values which aren't recognized
7553 automatically.
7554 ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
7555 pattern for branch conversion. Fix mnemonic attribute.
7556 ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
7557 indirect branch via thunk if requested.
7558 ("indirect_jump", "<code>"): Expand patterns for branch conversion.
7559 ("*indirect_jump"): Disable for branch conversion using out of
7560 line thunks.
7561 ("indirect_jump_via_thunk<mode>_z10")
7562 ("indirect_jump_via_thunk<mode>")
7563 ("indirect_jump_via_inlinethunk<mode>_z10")
7564 ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
7565 ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
7566 ("casesi_jump_via_inlinethunk<mode>_z10")
7567 ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
7568 ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
7569 ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
7570 ("*indirect2_jump"): Disable for branch conversion.
7571 ("casesi_jump"): Turn into expander and expand patterns for branch
7572 conversion.
7573 ("return_use"): New expander.
7574 ("*return"): Emit return via thunk and rename it to ...
7575 ("*return<mode>"): ... this one.
7576 * config/s390/s390.opt: Add new options and and enum for the
7577 option values.
7578
7579 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
7580
7581 * lra-constraints.c (match_reload): Unconditionally use
7582 gen_lowpart_SUBREG, rather than selecting between that
7583 and equivalent gen_rtx_SUBREG code.
7584
7585 2018-02-08 Richard Biener <rguenther@suse.de>
7586
7587 PR tree-optimization/84233
7588 * tree-ssa-phiprop.c (propagate_with_phi): Use separate
7589 changed flag instead of boguously re-using phi_inserted.
7590
7591 2018-02-08 Martin Jambor <mjambor@suse.cz>
7592
7593 * hsa-gen.c (get_symbol_for_decl): Set program allocation for
7594 static local variables.
7595
7596 2018-02-08 Richard Biener <rguenther@suse.de>
7597
7598 PR tree-optimization/84278
7599 * tree-vect-stmts.c (vectorizable_store): When looking for
7600 smaller vector types to perform grouped strided loads/stores
7601 make sure the mode is supported by the target.
7602 (vectorizable_load): Likewise.
7603
7604 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
7605
7606 * config/aarch64/aarch64.c (aarch64_components_for_bb):
7607 Increase LDP/STP opportunities by adding adjacent callee-saves.
7608
7609 2018-02-08 Wilco Dijkstra <wdijkstr@arm.com>
7610
7611 PR rtl-optimization/84068
7612 PR rtl-optimization/83459
7613 * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
7614
7615 2018-02-08 Aldy Hernandez <aldyh@redhat.com>
7616
7617 PR tree-optimization/84224
7618 * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
7619 * calls.c (gimple_alloca_call_p): Only return TRUE when we have
7620 non-zero arguments.
7621
7622 2018-02-07 Iain Sandoe <iain@codesourcery.com>
7623
7624 PR target/84113
7625 * config/rs6000/altivec.md (*restore_world): Remove LR use.
7626 * config/rs6000/predicates.md (restore_world_operation): Adjust op
7627 count, remove one USE.
7628
7629 2018-02-07 Michael Meissner <meissner@linux.vnet.ibm.com>
7630
7631 * doc/install.texi (Configuration): Document the
7632 --with-long-double-format={ibm,ieee} PowerPC configuration
7633 options.
7634
7635 PR target/84154
7636 * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
7637 Convert from define_expand to be define_insn_and_split. Rework
7638 float/double/_Float128 conversions to QI/HI/SImode to work with
7639 both ISA 2.07 (power8) or ISA 3.0 (power9). Fix regression where
7640 conversions to QI/HImode types did a store and then a load to
7641 truncate the value. For conversions to VSX registers, don't split
7642 the insn, instead emit the code directly. Use the code iterator
7643 any_fix to combine signed and unsigned conversions.
7644 (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
7645 (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
7646 (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
7647 (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
7648 (fix_<mode>di2_hw): Likewise.
7649 (fixuns_<mode>di2_hw): Likewise.
7650 (fix_<mode>si2_hw): Likewise.
7651 (fixuns_<mode>si2_hw): Likewise.
7652 (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
7653 (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
7654 (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
7655 fix<uns>_trunc<SFDF:mode>si2_p8.
7656 (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer
7657 used.
7658 (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
7659 (fix<uns>_<mode>_mem): Likewise.
7660 (fctiw<u>z_<mode>_mem): Likewise.
7661 (fix<uns>_<mode>_mem): Likewise.
7662 (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
7663 the register allocator from doing a direct move to the GPRs to do
7664 a store, and instead use the ISA 3.0 store byte/half-word from
7665 vector register instruction. For IEEE 128-bit floating point,
7666 also optimize stores of 32-bit ints.
7667 (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
7668
7669 2018-02-07 Alan Hayward <alan.hayward@arm.com>
7670
7671 * genextract.c (push_pathstr_operand): New function to support
7672 [a-zA-Z].
7673 (walk_rtx): Call push_pathstr_operand.
7674 (print_path): Support [a-zA-Z].
7675
7676 2018-02-07 Richard Biener <rguenther@suse.de>
7677
7678 PR tree-optimization/84037
7679 * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
7680 (cse_and_gimplify_to_preheader): Declare.
7681 (vect_get_place_in_interleaving_chain): Likewise.
7682 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
7683 ivexpr_map.
7684 (_loop_vec_info::~_loop_vec_info): Delete it.
7685 (cse_and_gimplify_to_preheader): New function.
7686 * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
7687 * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
7688 (vectorizable_load): Likewise. For grouped stores always base
7689 the IV on the first element.
7690 * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
7691 condition before gimplifying.
7692
7693 2018-02-07 Jakub Jelinek <jakub@redhat.com>
7694
7695 * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
7696 *DIV_EXPR and *MOD_EXPR.
7697
7698 2018-02-07 H.J. Lu <hongjiu.lu@intel.com>
7699
7700 PR target/84248
7701 * config/i386/i386.c (ix86_option_override_internal): Mask out
7702 the CF_SET bit when checking -fcf-protection.
7703
7704 2018-02-07 Tom de Vries <tom@codesourcery.com>
7705
7706 PR libgomp/84217
7707 * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
7708 enough.
7709
7710 2018-02-07 Richard Biener <rguenther@suse.de>
7711
7712 PR tree-optimization/84204
7713 * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
7714 this place.
7715
7716 PR tree-optimization/84205
7717 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
7718 special-case isl_ast_op_zdiv_r.
7719
7720 PR tree-optimization/84223
7721 * graphite-scop-detection.c (gather_bbs::before_dom_children):
7722 Only add conditions from within the region.
7723 (gather_bbs::after_dom_children): Adjust.
7724
7725 2018-02-07 Georg-Johann Lay <avr@gjlay.de>
7726
7727 PR target/84209
7728 * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
7729 * config/avr/avr.md: Only post-reload split REG-REG moves if
7730 either register is GENERAL_REG_P.
7731
7732 2018-02-07 Jakub Jelinek <jakub@redhat.com>
7733
7734 PR tree-optimization/84235
7735 * tree-ssa-scopedtables.c
7736 (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
7737 if the subtraction is performed in floating point type where NaNs are
7738 honored. For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
7739 build 1. Formatting fix.
7740
7741 2018-02-06 Jakub Jelinek <jakub@redhat.com>
7742
7743 PR target/84146
7744 * config/i386/i386.c (rest_of_insert_endbranch): Only skip
7745 NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
7746 and skip it regardless of bb boundaries. Use CALL_P macro,
7747 don't test INSN_P (insn) together with CALL_P or JUMP_P check
7748 unnecessarily, formatting fix.
7749
7750 2018-02-06 Michael Collison <michael.collison@arm.com>
7751
7752 * config/arm/thumb2.md:
7753 (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
7754 (*thumb_mov_notscc): Ditto.
7755
7756 2018-02-06 Michael Meissner <meissner@linux.vnet.ibm.com>
7757
7758 PR target/84154
7759 * config/rs6000/rs6000.md (su code attribute): Use "u" for
7760 unsigned_fix, not "s".
7761
7762 2018-02-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
7763
7764 * configure.ac (gcc_fn_eh_frame_ro): New function.
7765 (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
7766 correct .eh_frame permissions.
7767 * configure: Regenerate.
7768
7769 2018-02-06 Andrew Jenner <andrew@codeourcery.com>
7770
7771 * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
7772 irrelevant options.
7773
7774 2018-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
7775
7776 * config/rs6000/rs6000.c (rs6000_option_override_internal):
7777 Display warning message for -mno-speculate-indirect-jumps.
7778
7779 2018-02-06 Andrew Jenner <andrew@codesourcery.com>
7780
7781 * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
7782 Undocumented.
7783 * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
7784
7785 2018-02-06 Aldy Hernandez <aldyh@redhat.com>
7786
7787 PR tree-optimization/84225
7788 * tree-eh.c (find_trapping_overflow): Only call
7789 operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
7790
7791 2018-02-06 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
7792
7793 PR target/84145
7794 * config/i386/i386.c: Reimplement the check of possible options
7795 -mibt/-mshstk conbination. Change error messages.
7796 * doc/invoke.texi: Fix a typo: remove extra '='.
7797
7798 2018-02-06 Marek Polacek <polacek@redhat.com>
7799
7800 PR tree-optimization/84228
7801 * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
7802
7803 2018-02-06 Tamar Christina <tamar.christina@arm.com>
7804
7805 PR target/82641
7806 * config/arm/arm.c (arm_print_asm_arch_directives): Record already
7807 emitted arch directives.
7808 * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
7809 __ARM_FEATURE_COPROC before changing architectures.
7810
7811 2018-02-06 Richard Biener <rguenther@suse.de>
7812
7813 * config/i386/i386.c (print_reg): Fix typo.
7814 (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
7815
7816 2018-02-06 Eric Botcazou <ebotcazou@adacore.com>
7817
7818 * configure: Regenerate.
7819
7820 2018-02-05 Martin Sebor <msebor@redhat.com>
7821
7822 PR tree-optimization/83369
7823 * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
7824 inlining context.
7825
7826 2018-02-05 Martin Liska <mliska@suse.cz>
7827
7828 * doc/invoke.texi: Cherry-pick upstream r323995.
7829
7830 2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
7831
7832 * ira.c (ira_init_register_move_cost): Adjust comment.
7833
7834 2018-02-05 Martin Liska <mliska@suse.cz>
7835
7836 PR gcov-profile/84137
7837 * doc/gcov.texi: Fix typo in documentation.
7838
7839 2018-02-05 Martin Liska <mliska@suse.cz>
7840
7841 PR gcov-profile/83879
7842 * doc/gcov.texi: Document necessity of --dynamic-list-data when
7843 using dlopen functionality.
7844
7845 2018-02-05 Olga Makhotina <olga.makhotina@intel.com>
7846
7847 * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
7848 _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
7849 _mm_maskz_range_ss, _mm_mask_range_round_ss,
7850 _mm_maskz_range_round_ss): New intrinsics.
7851 (__builtin_ia32_rangesd128_round)
7852 (__builtin_ia32_rangess128_round): Remove.
7853 (__builtin_ia32_rangesd128_mask_round,
7854 __builtin_ia32_rangess128_mask_round): New builtins.
7855 * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
7856 __builtin_ia32_rangess128_round): Remove.
7857 (__builtin_ia32_rangesd128_mask_round,
7858 __builtin_ia32_rangess128_mask_round): New builtins.
7859 * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
7860 (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
7861 ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
7862 "<round_saeonly_constraint>")): Changed to ...
7863 ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
7864 "<round_saeonly_scalar_constraint>")): ... this.
7865 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
7866 %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
7867 ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
7868 %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
7869 %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
7870
7871 2018-02-02 Andrew Jenner <andrew@codesourcery.com>
7872
7873 * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
7874 options.
7875 * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
7876 Remove all values except native, 8540 and 8548.
7877
7878 2018-02-02 H.J. Lu <hongjiu.lu@intel.com>
7879
7880 * config/i386/i386.c (ix86_output_function_return): Pass
7881 INVALID_REGNUM, instead of -1, as invalid register number to
7882 indirect_thunk_name and output_indirect_thunk.
7883
7884 2018-02-02 Julia Koval <julia.koval@intel.com>
7885
7886 * config.gcc: Add -march=icelake.
7887 * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
7888 * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
7889 * config/i386/i386.c (processor_costs): Add m_ICELAKE.
7890 (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
7891 PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
7892 (processor_target_table): Add icelake.
7893 (ix86_option_override_internal): Handle new PTAs.
7894 (get_builtin_code_for_version): Handle icelake.
7895 (M_INTEL_COREI7_ICELAKE): New.
7896 (fold_builtin_cpu): Handle icelake.
7897 * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
7898 * doc/invoke.texi: Add -march=icelake.
7899
7900 2018-02-02 Julia Koval <julia.koval@intel.com>
7901
7902 * config/i386/i386.c (ix86_option_override_internal): Change flags type
7903 to wide_int_bitmask.
7904 * wide-int-bitmask.h: New.
7905
7906 2018-02-02 Igor Tsimbalist <igor.v.tsimbalist@intel.com>
7907
7908 PR target/84066
7909 * config/i386/i386.md: Replace Pmode with word_mode in
7910 builtin_setjmp_setup and builtin_longjmp to support x32.
7911
7912 2018-02-01 Peter Bergner <bergner@vnet.ibm.com>
7913
7914 PR target/56010
7915 PR target/83743
7916 * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
7917 #include "opts.h".
7918 (rs6000_supported_cpu_names): New static variable.
7919 (linux_cpu_translation_table): Likewise.
7920 (elf_platform) <cpu>: Define new static variable and use it.
7921 Translate kernel AT_PLATFORM name to canonical name if needed.
7922 Error if platform name is unknown.
7923
7924 2018-02-01 Aldy Hernandez <aldyh@redhat.com>
7925
7926 PR target/84089
7927 * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
7928
7929 2018-02-01 Jeff Law <law@redhat.com>
7930
7931 PR target/84128
7932 * config/i386/i386.c (release_scratch_register_on_entry): Add new
7933 OFFSET and RELEASE_VIA_POP arguments. Use SP+OFFSET to restore
7934 the scratch if RELEASE_VIA_POP is false.
7935 (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
7936 If we have to save a temporary register, decrement SIZE appropriately.
7937 Pass new arguments to release_scratch_register_on_entry.
7938 (ix86_adjust_stack_and_probe): Likewise.
7939 (ix86_emit_probe_stack_range): Pass new arguments to
7940 release_scratch_register_on_entry.
7941
7942 2018-02-01 Uros Bizjak <ubizjak@gmail.com>
7943
7944 PR rtl-optimization/84157
7945 * combine.c (change_zero_ext): Use REG_P predicate in
7946 front of HARD_REGISTER_P predicate.
7947
7948 2018-02-01 Georg-Johann Lay <avr@gjlay.de>
7949
7950 * config/avr/avr.c (avr_option_override): Move disabling of
7951 -fdelete-null-pointer-checks to...
7952 * common/config/avr/avr-common.c (avr_option_optimization_table):
7953 ...here.
7954
7955 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7956
7957 PR tree-optimization/81635
7958 * tree-data-ref.c (split_constant_offset_1): For types that
7959 wrap on overflow, try to use range info to prove that wrapping
7960 cannot occur.
7961
7962 2018-02-01 Renlin Li <renlin.li@arm.com>
7963
7964 PR target/83370
7965 * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
7966 TAILCALL_ADDR_REGS.
7967 (aarch64_register_move_cost): Likewise.
7968 * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
7969 TAILCALL_ADDR_REGS.
7970 (REG_CLASS_NAMES): Likewise.
7971 (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
7972 TAILCALL_ADDR_REGS. Remove IP registers.
7973 * config/aarch64/aarch64.md (Ucs): Update register constraint.
7974
7975 2018-02-01 Richard Biener <rguenther@suse.de>
7976
7977 * domwalk.h (dom_walker::dom_walker): Add additional constructor
7978 for specifying RPO order and allow NULL for that.
7979 * domwalk.c (dom_walker::dom_walker): Likewise.
7980 (dom_walker::walk): Handle NULL RPO order.
7981 * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
7982 in RPO order.
7983 (rewrite_update_dom_walker): Likewise.
7984 (mark_def_dom_walker): Likewise.
7985
7986 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
7987
7988 * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
7989 (aarch64_maybe_expand_sve_subreg_move): Declare.
7990 * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
7991 * config/aarch64/predicates.md (aarch64_any_register_operand): New
7992 predicate.
7993 * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
7994 that are semantically a reverse operation.
7995 (*aarch64_sve_mov<mode>_subreg_be): New pattern.
7996 * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
7997 (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
7998 functions.
7999 (aarch64_can_change_mode_class): For big-endian, forbid changes
8000 between two SVE modes if they have different element sizes.
8001
8002 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
8003
8004 * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
8005 the TImode handling for big-endian targets.
8006
8007 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
8008
8009 * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
8010 (*sve_ld1rq<Vesize>): ... this new pattern. Handle all element sizes,
8011 not just bytes.
8012 * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
8013 Remove BSWAP handing for big-endian targets and use the form of
8014 LD1RQ appropariate for the mode.
8015
8016 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
8017
8018 * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
8019 all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
8020 duplicated element.
8021
8022 2018-02-01 Richard Sandiford <richard.sandiford@linaro.org>
8023
8024 PR tearget/83845
8025 * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
8026 check for operands that need to go through aarch64_sve_reload_be.
8027
8028 2018-02-01 Jakub Jelinek <jakub@redhat.com>
8029
8030 PR tree-optimization/81661
8031 PR tree-optimization/84117
8032 * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
8033 * tree-eh.c: Include gimplify.h.
8034 (find_trapping_overflow, replace_trapping_overflow,
8035 rewrite_to_non_trapping_overflow): New functions.
8036 * tree-vect-loop.c: Include tree-eh.h.
8037 (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
8038 * tree-data-ref.c: Include tree-eh.h.
8039 (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
8040
8041 2018-01-31 Uros Bizjak <ubizjak@gmail.com>
8042
8043 PR rtl-optimization/84123
8044 * combine.c (change_zero_ext): Check if hard register satisfies
8045 can_change_dest_mode before calling gen_lowpart_SUBREG.
8046
8047 2018-01-31 Vladimir Makarov <vmakarov@redhat.com>
8048
8049 PR target/82444
8050 * ira.c (ira_init_register_move_cost): Remove assert.
8051
8052 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
8053
8054 PR rtl-optimization/84071
8055 * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
8056 * doc/tm.texi: Regenerate.
8057
8058 2018-01-31 Richard Biener <rguenther@suse.de>
8059
8060 PR tree-optimization/84132
8061 * tree-data-ref.c (analyze_miv_subscript): Properly
8062 check whether evolution_function_is_affine_multivariate_p
8063 before calling gcd_of_steps_may_divide_p.
8064
8065 2018-01-31 Julia Koval <julia.koval@intel.com>
8066
8067 PR target/83618
8068 * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
8069 * config/i386/i386.md (rdpid_rex64) New.
8070 (rdpid): Make 32bit only.
8071
8072 2018-01-29 Aldy Hernandez <aldyh@redhat.com>
8073
8074 PR lto/84105
8075 * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
8076 an IDENTIFIER_NODE for FUNCTION_TYPE's.
8077
8078 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
8079
8080 Revert
8081 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
8082
8083 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
8084
8085 2018-01-31 Eric Botcazou <ebotcazou@adacore.com>
8086
8087 PR rtl-optimization/84071
8088 * combine.c (record_dead_and_set_regs_1): Record the source unmodified
8089 for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
8090
8091 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
8092
8093 * config/arc/arc.c (arc_handle_aux_attribute): New function.
8094 (arc_attribute_table): Add 'aux' attribute.
8095 (arc_in_small_data_p): Consider aux like variables.
8096 (arc_is_aux_reg_p): New function.
8097 (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
8098 (arc_get_aux_arg): New function.
8099 (prepare_move_operands): Handle aux-register access.
8100 (arc_handle_aux_attribute): New function.
8101 * doc/extend.texi (ARC Variable attributes): Add subsection.
8102
8103 2018-01-31 Claudiu Zissulescu <claziss@synopsys.com>
8104
8105 * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
8106 * config/arc/arc.c (arc_handle_uncached_attribute): New function.
8107 (arc_attribute_table): Add 'uncached' attribute.
8108 (arc_print_operand): Print '.di' flag for uncached memory
8109 accesses.
8110 (arc_in_small_data_p): Do not consider for small data the uncached
8111 types.
8112 (arc_is_uncached_mem_p): New function.
8113 * config/arc/predicates.md (compact_store_memory_operand): Check
8114 for uncached memory accesses.
8115 (nonvol_nonimm_operand): Likewise.
8116 * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
8117
8118 2018-01-31 Jakub Jelinek <jakub@redhat.com>
8119
8120 PR c/84100
8121 * common.opt (falign-functions=, falign-jumps=, falign-labels=,
8122 falign-loops=): Add Optimization flag.
8123
8124 2018-01-30 Jeff Law <law@redhat.com>
8125
8126 PR target/84064
8127 * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
8128 INT_REGISTERS_SAVED. Check it prior to calling
8129 get_scratch_register_on_entry.
8130 (ix86_adjust_stack_and_probe): Similarly.
8131 (ix86_emit_probe_stack_range): Similarly.
8132 (ix86_expand_prologue): Corresponding changes.
8133
8134 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8135
8136 PR target/40411
8137 * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
8138 -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
8139
8140 2018-01-30 Vladimir Makarov <vmakarov@redhat.com>
8141
8142 PR target/84112
8143 * lra-constraints.c (curr_insn_transform): Process AND in the
8144 address.
8145
8146 2018-01-30 Jakub Jelinek <jakub@redhat.com>
8147
8148 PR rtl-optimization/83986
8149 * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
8150 dependence against last_pending_memory_flush in addition to
8151 pending_jump_insns.
8152
8153 2018-01-30 Alexandre Oliva <aoliva@redhat.com>
8154
8155 PR tree-optimization/81611
8156 * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
8157 copies.
8158
8159 2018-01-30 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
8160
8161 PR target/83758
8162 * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
8163 a reg rtx.
8164
8165 2018-01-30 Richard Biener <rguenther@suse.de>
8166 Jakub Jelinek <jakub@redhat.com>
8167
8168 PR tree-optimization/84111
8169 * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
8170 inner loops added during recursion, as they don't have up-to-date
8171 SSA form.
8172
8173 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
8174
8175 PR ipa/81360
8176 * ipa-inline.c (can_inline_edge_p): Break out late tests to...
8177 (can_inline_edge_by_limits_p): ... here.
8178 (can_early_inline_edge_p, check_callers,
8179 update_caller_keys, update_callee_keys, recursive_inlining,
8180 add_new_edges_to_heap, speculation_useful_p,
8181 inline_small_functions,
8182 inline_small_functions, flatten_function,
8183 inline_to_all_callers_1): Update.
8184
8185 2018-01-30 Jan Hubicka <hubicka@ucw.cz>
8186
8187 * profile-count.c (profile_count::combine_with_ipa_count): Handle
8188 zeros correctly.
8189
8190 2018-01-30 Richard Biener <rguenther@suse.de>
8191
8192 PR tree-optimization/83008
8193 * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
8194 invariant and constant vector uses in stmts when they need
8195 more than one stmt.
8196
8197 2018-01-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8198
8199 PR bootstrap/84017
8200 * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
8201 * configure: Regenerate.
8202
8203 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
8204
8205 * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
8206 pattern.
8207 (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
8208 Use gen_rtx_REG rather than gen_lowpart.
8209
8210 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
8211
8212 * lra-constraints.c (match_reload): Use subreg_lowpart_offset
8213 rather than 0 when creating partial subregs.
8214
8215 2018-01-30 Richard Sandiford <richard.sandiford@linaro.org>
8216
8217 * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
8218 of usage.
8219
8220 2018-01-29 Michael Meissner <meissner@linux.vnet.ibm.com>
8221
8222 PR target/81550
8223 * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
8224 and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
8225 -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
8226 flags. This restores the settings used before the 2017-07-24.
8227 Turning off pre increment/decrement/modify allows IVOPTS to
8228 optimize DF/SF loops where the index is an int.
8229
8230 2018-01-29 Richard Biener <rguenther@suse.de>
8231 Kelvin Nilsen <kelvin@gcc.gnu.org>
8232
8233 PR bootstrap/80867
8234 * tree-vect-stmts.c (vectorizable_call): Don't call
8235 targetm.vectorize_builtin_md_vectorized_function if callee is
8236 NULL.
8237
8238 2018-01-22 Carl Love <cel@us.ibm.com>
8239
8240 * doc/extend.tex: Fix typo in second arg in
8241 __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
8242
8243 2018-01-29 Richard Biener <rguenther@suse.de>
8244
8245 PR tree-optimization/84086
8246 * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
8247 (flush_ssaname_freelist): When SSA names were released reset
8248 the SCEV hash table.
8249
8250 2018-01-29 Richard Biener <rguenther@suse.de>
8251
8252 PR tree-optimization/84057
8253 * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
8254 removed paths when removing edges.
8255
8256 2018-01-27 H.J. Lu <hongjiu.lu@intel.com>
8257
8258 * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
8259 -mfunction-return=@var{choice}.
8260
8261 2018-01-27 Bernd Edlinger <bernd.edlinger@hotmail.de>
8262
8263 PR diagnostic/84034
8264 * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
8265 Handle CR like TAB.
8266 (layout::print_source_line): Likewise.
8267 (test_get_line_width_without_trailing_whitespace): Add test cases.
8268
8269 2018-01-27 Jakub Jelinek <jakub@redhat.com>
8270
8271 PR middle-end/84040
8272 * sched-deps.c (sched_macro_fuse_insns): Return immediately for
8273 debug insns.
8274
8275 2018-01-26 Jim Wilson <jimw@sifive.com>
8276
8277 * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
8278
8279 * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
8280 specified.
8281
8282 2018-01-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8283
8284 * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
8285 and CMP + SUB-immediate -> SUBS.
8286
8287 2018-01-26 Martin Sebor <msebor@redhat.com>
8288
8289 PR tree-optimization/83896
8290 * tree-ssa-strlen.c (get_string_len): Rename...
8291 (get_string_cst_length): ...to this. Return HOST_WIDE_INT.
8292 Avoid assuming length is constant.
8293 (handle_char_store): Use HOST_WIDE_INT for string length.
8294
8295 2018-01-26 Uros Bizjak <ubizjak@gmail.com>
8296
8297 PR target/81763
8298 * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
8299 to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
8300
8301 2018-01-26 Richard Biener <rguenther@suse.de>
8302
8303 PR rtl-optimization/84003
8304 * dse.c (record_store): Only record redundant stores when
8305 the earlier store aliases at least all accesses the later one does.
8306
8307 2018-01-26 Jakub Jelinek <jakub@redhat.com>
8308
8309 PR rtl-optimization/83985
8310 * dce.c (deletable_insn_p): Return false for separate shrink wrapping
8311 REG_CFA_RESTORE insns.
8312 (delete_unmarked_insns): Don't ignore separate shrink wrapping
8313 REG_CFA_RESTORE insns here.
8314
8315 PR c/83989
8316 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
8317 use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
8318
8319 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8320
8321 * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
8322 * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
8323 (arc_init): Likewise.
8324 (arc_override_options): Likewise.
8325 (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
8326 value.
8327 (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
8328 support.
8329 * config/arc/arc.h (TARGET_DBNZ): Define.
8330 * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
8331 properly set the tune attribute.
8332 (dbnz): Use TARGET_DBNZ guard.
8333 * config/arc/arc.opt (mtune): Add core3 option.
8334
8335 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8336
8337 * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
8338 recognize new pic like addresses.
8339 (arc_delegitimize_address): Clean up.
8340
8341 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8342
8343 * config/arc/arc-arches.def: Option mrf16 valid for all
8344 architectures.
8345 * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
8346 * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
8347 * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
8348 * config/arc/arc-tables.opt: Regenerate.
8349 * config/arc/arc.c (arc_conditional_register_usage): Handle
8350 reduced register file case.
8351 (arc_file_start): Set must have build attributes.
8352 * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
8353 mrf16 option value.
8354 * config/arc/arc.opt (mrf16): Add new option.
8355 * config/arc/elf.h (ATTRIBUTE_PCS): Define.
8356 * config/arc/genmultilib.awk: Handle new mrf16 option.
8357 * config/arc/linux.h (ATTRIBUTE_PCS): Define.
8358 * config/arc/t-multilib: Regenerate.
8359 * doc/invoke.texi (ARC Options): Document mrf16 option.
8360
8361 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8362
8363 * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
8364 * config/arc/arc.c (arc_handle_secure_attribute): New function.
8365 (arc_attribute_table): Add 'secure_call' attribute.
8366 (arc_print_operand): Print secure call operand.
8367 (arc_function_ok_for_sibcall): Don't optimize tail calls when
8368 secure.
8369 (arc_is_secure_call_p): New function. * config/arc/arc.md
8370 (call_i): Add support for sjli instruction.
8371 (call_value_i): Likewise.
8372 * config/arc/constraints.md (Csc): New constraint.
8373
8374 2018-01-26 Claudiu Zissulescu <claziss@synopsys.com>
8375 John Eric Martin <John.Martin@emmicro-us.com>
8376
8377 * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
8378 * config/arc/arc.c (_arc_jli_section): New struct.
8379 (arc_jli_section): New type.
8380 (rc_jli_sections): New static variable.
8381 (arc_handle_jli_attribute): New function.
8382 (arc_attribute_table): Add jli_always and jli_fixed attribute.
8383 (arc_file_end): New function.
8384 (TARGET_ASM_FILE_END): Define.
8385 (arc_print_operand): Reuse 'S' letter for JLI output instruction.
8386 (arc_add_jli_section): New function.
8387 (jli_call_scan): Likewise.
8388 (arc_reorg): Call jli_call_scan.
8389 (arc_output_addsi): Remove 'S' from printing asm operand.
8390 (arc_is_jli_call_p): New function.
8391 * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
8392 operand.
8393 (movhi_insn): Likewise.
8394 (movsi_insn): Likewise.
8395 (movsi_set_cc_insn): Likewise.
8396 (loadqi_update): Likewise.
8397 (load_zeroextendqisi_update): Likewise.
8398 (load_signextendqisi_update): Likewise.
8399 (loadhi_update): Likewise.
8400 (load_zeroextendhisi_update): Likewise.
8401 (load_signextendhisi_update): Likewise.
8402 (loadsi_update): Likewise.
8403 (loadsf_update): Likewise.
8404 (movsicc_insn): Likewise.
8405 (bset_insn): Likewise.
8406 (bxor_insn): Likewise.
8407 (bclr_insn): Likewise.
8408 (bmsk_insn): Likewise.
8409 (bicsi3_insn): Likewise.
8410 (cmpsi_cc_c_insn): Likewise.
8411 (movsi_ne): Likewise.
8412 (movsi_cond_exec): Likewise.
8413 (clrsbsi2): Likewise.
8414 (norm_f): Likewise.
8415 (normw): Likewise.
8416 (swap): Likewise.
8417 (divaw): Likewise.
8418 (flag): Likewise.
8419 (sr): Likewise.
8420 (kflag): Likewise.
8421 (ffs): Likewise.
8422 (ffs_f): Likewise.
8423 (fls): Likewise.
8424 (call_i): Remove 'S' asm letter, add jli instruction.
8425 (call_value_i): Likewise.
8426 * config/arc/arc.op (mjli-always): New option.
8427 * config/arc/constraints.md (Cji): New constraint.
8428 * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
8429 operand.
8430 (subsf3_fpx): Likewise.
8431 (mulsf3_fpx): Likewise.
8432 * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
8433 asm operand.
8434 * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
8435 function attrbutes.
8436 * doc/invoke.texi (ARC): Document mjli-always option.
8437
8438 2018-01-26 Sebastian Perta <sebastian.perta@renesas.com>
8439
8440 * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const
8441 avoid addition with 0 and use incw and decw where possible.
8442
8443 2018-01-26 Richard Biener <rguenther@suse.de>
8444
8445 PR tree-optimization/81082
8446 * fold-const.c (fold_plusminus_mult_expr): Do not perform the
8447 association if it requires casting to unsigned.
8448 * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
8449 from fold_plusminus_mult_expr to catch important cases late when
8450 range info is available.
8451
8452 2018-01-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
8453
8454 * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
8455 * configure.ac (hidden_linkonce): New test.
8456 * configure: Regenerate.
8457 * config.in: Regenerate.
8458
8459 2018-01-26 Julia Koval <julia.koval@intel.com>
8460
8461 * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
8462 _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
8463 _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
8464 _mm_mask_bitshuffle_epi64_mask): Fix type.
8465 * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
8466 USI_FTYPE_V4DI_V4DI_USI): Remove.
8467 * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
8468 __builtin_ia32_vpshufbitqmb256_mask,
8469 __builtin_ia32_vpshufbitqmb128_mask): Fix types.
8470 * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
8471 * config/i386/sse.md (VI1_AVX512VLBW): Change types.
8472
8473 2018-01-26 Alan Modra <amodra@gmail.com>
8474
8475 PR target/84033
8476 * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
8477 UNSPEC_VBPERMQ. Sort other unspecs.
8478
8479 2018-01-25 David Edelsohn <dje.gcc@gmail.com>
8480
8481 * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
8482
8483 2018-01-25 Jan Hubicka <hubicka@ucw.cz>
8484
8485 PR middle-end/83055
8486 * predict.c (drop_profile): Do not push/pop cfun; update also
8487 node->count.
8488 (handle_missing_profiles): Fix logic looking for zero profiles.
8489
8490 2018-01-25 Jakub Jelinek <jakub@redhat.com>
8491
8492 PR middle-end/83977
8493 * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
8494 on functions with #pragma omp declare simd or functions with simd
8495 attribute.
8496 * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
8497 * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
8498 Remove trailing \n from warning_at calls.
8499
8500 2018-01-25 Tom de Vries <tom@codesourcery.com>
8501
8502 PR target/84028
8503 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
8504 for neutered workers.
8505
8506 2018-01-24 Joseph Myers <joseph@codesourcery.com>
8507
8508 PR target/68467
8509 * config/m68k/m68k.c (m68k_promote_function_mode): New function.
8510 (TARGET_PROMOTE_FUNCTION_MODE): New macro.
8511
8512 2018-01-24 Jeff Law <law@redhat.com>
8513
8514 PR target/83994
8515 * i386.c (get_probe_interval): Move to earlier point.
8516 (ix86_compute_frame_layout): If -fstack-clash-protection and
8517 the frame is larger than the probe interval, then use pushes
8518 to save registers rather than reg->mem moves.
8519 (ix86_expand_prologue): Remove conditional for int_registers_saved
8520 assertion.
8521
8522 2018-01-24 Vladimir Makarov <vmakarov@redhat.com>
8523
8524 PR target/84014
8525 * ira-build.c (setup_min_max_allocno_live_range_point): Set up
8526 min/max for never referenced object.
8527
8528 2018-01-24 Jakub Jelinek <jakub@redhat.com>
8529
8530 PR middle-end/83977
8531 * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
8532 here.
8533 * omp-low.c (create_omp_child_function): Remove "omp declare simd"
8534 attributes from DECL_ATTRIBUTES (decl) without affecting
8535 DECL_ATTRIBUTES (current_function_decl).
8536 * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
8537 functions with non-NULL DECL_ABSTRACT_ORIGIN.
8538
8539 2018-01-24 Richard Sandiford <richard.sandiford@linaro.org>
8540
8541 PR tree-optimization/83979
8542 * fold-const.c (fold_comparison): Use constant_boolean_node
8543 instead of boolean_{true,false}_node.
8544
8545 2018-01-24 Jan Hubicka <hubicka@ucw.cz>
8546
8547 * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
8548 with zero counts.
8549
8550 2018-01-24 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
8551
8552 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8553 Simplify the clause that sets the length attribute.
8554 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8555 (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
8556 clause that sets the length attribute.
8557 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8558
8559 2018-01-24 Tom de Vries <tom@codesourcery.com>
8560
8561 PR target/83589
8562 * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
8563 (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
8564 Add strict parameter.
8565 (prevent_branch_around_nothing): Insert dummy insn between branch to
8566 label and label with no ptx insn inbetween.
8567 * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
8568
8569 2018-01-24 Tom de Vries <tom@codesourcery.com>
8570
8571 PR target/81352
8572 * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
8573 for neutered threads in warp.
8574 * config/nvptx/nvptx.md (define_insn "exit"): New insn.
8575
8576 2018-01-24 Richard Biener <rguenther@suse.de>
8577
8578 PR tree-optimization/83176
8579 * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
8580 operands.
8581
8582 2018-01-24 Richard Biener <rguenther@suse.de>
8583
8584 PR tree-optimization/82819
8585 * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
8586 code generating pluses that are no-ops in the target precision.
8587
8588 2018-01-24 Richard Biener <rguenther@suse.de>
8589
8590 PR middle-end/84000
8591 * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
8592
8593 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
8594
8595 * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
8596 to merge probabilities.
8597 * predict.c (probably_never_executed): Also mark as cold functions
8598 with global 0 profile and guessed local profile.
8599 * profile-count.c (profile_probability::combine_with_count): New
8600 member function.
8601 * profile-count.h (profile_probability::operator*,
8602 profile_probability::operator*=, profile_probability::operator/,
8603 profile_probability::operator/=): Reduce precision to adjusted
8604 and set value to guessed on contradictory divisions.
8605 (profile_probability::combine_with_freq): Remove.
8606 (profile_probability::combine_wiht_count): Declare.
8607 (profile_count::force_nonzero):: Set to adjusted.
8608 (profile_count::probability_in):: Set quality to adjusted.
8609 * tree-ssa-tail-merge.c (replace_block_by): Use
8610 combine_with_count.
8611
8612 2018-01-23 Andrew Waterman <andrew@sifive.com>
8613 Jim Wilson <jimw@sifive.com>
8614
8615 * config/riscv/riscv.c (riscv_stack_boundary): New.
8616 (riscv_option_override): Set riscv_stack_boundary. Handle
8617 riscv_preferred_stack_boundary_arg.
8618 * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
8619 (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
8620 (STACK_BOUNDARY): Set to riscv_stack_boundary.
8621 (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
8622 * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
8623 * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
8624
8625 2018-01-23 H.J. Lu <hongjiu.lu@intel.com>
8626
8627 PR target/83905
8628 * config/i386/i386.c (ix86_expand_prologue): Use cost reference
8629 of struct ix86_frame.
8630 (ix86_expand_epilogue): Likewise. Add a local variable for
8631 the reg_save_offset field in struct ix86_frame.
8632
8633 2018-01-23 Bin Cheng <bin.cheng@arm.com>
8634
8635 PR tree-optimization/82604
8636 * tree-loop-distribution.c (enum partition_kind): New enum item
8637 PKIND_PARTIAL_MEMSET.
8638 (partition_builtin_p): Support above new enum item.
8639 (generate_code_for_partition): Ditto.
8640 (compute_access_range): Differentiate cases that equality can be
8641 proven at all loops, the innermost loops or no loops.
8642 (classify_builtin_st, classify_builtin_ldst): Adjust call to above
8643 function. Set PKIND_PARTIAL_MEMSET for partition appropriately.
8644 (finalize_partitions, distribute_loop): Don't fuse partition of
8645 PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
8646 (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
8647 parloop is enabled.
8648
8649 2018-01-23 Martin Liska <mliska@suse.cz>
8650
8651 * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
8652 order to ignore the predictor.
8653 (PRED_POLYMORPHIC_CALL): Likewise.
8654 (PRED_RECURSIVE_CALL): Likewise.
8655
8656 2018-01-23 Martin Liska <mliska@suse.cz>
8657
8658 * tree-profile.c (tree_profiling): Print function header to
8659 aware reader which function we are working on.
8660 * value-prof.c (gimple_find_values_to_profile): Do not print
8661 not interesting value histograms.
8662
8663 2018-01-23 Martin Liska <mliska@suse.cz>
8664
8665 * profile-count.h (enum profile_quality): Add
8666 profile_uninitialized as the first value. Do not number values
8667 as they are zero based.
8668 (profile_count::verify): Update sanity check.
8669 (profile_probability::verify): Likewise.
8670
8671 2018-01-23 Nathan Sidwell <nathan@acm.org>
8672
8673 * doc/invoke.texi (ffor-scope): Deprecate.
8674
8675 2018-01-23 David Malcolm <dmalcolm@redhat.com>
8676
8677 PR tree-optimization/83510
8678 * domwalk.c (set_all_edges_as_executable): New function.
8679 (dom_walker::dom_walker): Convert bool param
8680 "skip_unreachable_blocks" to enum reachability. Move setup of
8681 edge flags to set_all_edges_as_executable and only do it when
8682 reachability is REACHABLE_BLOCKS.
8683 * domwalk.h (enum dom_walker::reachability): New enum.
8684 (dom_walker::dom_walker): Convert bool param
8685 "skip_unreachable_blocks" to enum reachability.
8686 (set_all_edges_as_executable): New decl.
8687 * graphite-scop-detection.c (gather_bbs::gather_bbs): Convert
8688 from false for "skip_unreachable_blocks" to ALL_BLOCKS for
8689 "reachability".
8690 * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
8691 but converting true to REACHABLE_BLOCKS.
8692 * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
8693 * tree-vrp.c
8694 (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
8695 Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
8696 (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
8697 REACHABLE_BLOCKS.
8698 (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
8699 if check_all_array_refs will be called.
8700
8701 2018-01-23 David Malcolm <dmalcolm@redhat.com>
8702
8703 * tree.c (selftest::test_location_wrappers): Add more test
8704 coverage.
8705
8706 2018-01-23 David Malcolm <dmalcolm@redhat.com>
8707
8708 * sbitmap.c (selftest::test_set_range): Fix memory leaks.
8709 (selftest::test_bit_in_range): Likewise.
8710
8711 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
8712
8713 PR testsuite/83888
8714 * doc/sourcebuild.texi (vect_float): Say that the selector
8715 only describes the situation when -funsafe-math-optimizations is on.
8716 (vect_float_strict): Document.
8717
8718 2018-01-23 Richard Sandiford <richard.sandiford@linaro.org>
8719
8720 PR tree-optimization/83965
8721 * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
8722 (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
8723 instead of checking only for a reduction.
8724 (vect_recog_widen_sum_pattern): Likewise.
8725
8726 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
8727
8728 * predict.c (probably_never_executed): Only use precise profile info.
8729 (compute_function_frequency): Skip after inlining hack since we now
8730 have quality checking.
8731
8732 2018-01-23 Jan Hubicka <hubicka@ucw.cz>
8733
8734 * profile-count.h (profile_probability::very_unlikely,
8735 profile_probability::unlikely, profile_probability::even): Set
8736 precision to guessed.
8737
8738 2018-01-23 Richard Biener <rguenther@suse.de>
8739
8740 PR tree-optimization/83963
8741 * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
8742 Properly terminate dominator walk when crossing the exit edge not
8743 when visiting its source block.
8744
8745 2018-01-23 Jakub Jelinek <jakub@redhat.com>
8746
8747 PR c++/83918
8748 * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
8749 VIEW_CONVERT_EXPR to wrap CONST_DECLs.
8750
8751 2018-01-22 Jakub Jelinek <jakub@redhat.com>
8752
8753 PR tree-optimization/83957
8754 * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs. Remove
8755 semicolon after for body surrounded by braces.
8756
8757 PR tree-optimization/83081
8758 * profile-count.h (profile_probability::split): New method.
8759 * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
8760 Use profile_probability::split.
8761 (do_compare_rtx_and_jump): Fix adjustment of probabilities
8762 when splitting a single conditional jump into 2.
8763
8764 2018-01-22 David Malcolm <dmalcolm@redhat.com>
8765
8766 PR tree-optimization/69452
8767 * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
8768 decl.
8769
8770 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8771
8772 * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
8773 * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
8774 * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
8775
8776 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8777
8778 * config/rl78/rl78-protos.h (rl78_split_movdi): New function declaration.
8779 * config/rl78/rl78.md (movdi): New define_expand.
8780 * config/rl78/rl78.c (rl78_split_movdi): New function.
8781
8782 2018-01-22 Michael Meissner <meissner@linux.vnet.ibm.com>
8783
8784 PR target/83862
8785 * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
8786 no longer used.
8787 * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
8788 * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
8789 128-bit to produce an UNSPEC move to get the double word with the
8790 signbit and then a shift directly to do signbit.
8791 (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
8792 implementation with a new version that just does either a direct
8793 move or a regular move. Move memory interface to separate insns.
8794 Move insns so they are next to the expander.
8795 (signbit<mode>2_dm_mem_be): New combiner insns to combine load
8796 with signbit move. Split big and little endian case.
8797 (signbit<mode>2_dm_mem_le): Likewise.
8798 (signbit<mode>2_dm_<su>ext): Delete, no longer used.
8799 (signbit<mode>2_dm2): Likewise.
8800
8801 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8802
8803 * config/rl78/rl78.md (anddi3): New define_expand.
8804
8805 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8806
8807 * config/rl78/rl78.md (umindi3): New define_expand.
8808
8809 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8810
8811 * config/rl78/rl78.md (smindi3): New define_expand.
8812
8813 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8814
8815 * config/rl78/rl78.md (smaxdi3): New define_expand.
8816
8817 2018-01-22 Carl Love <cel@us.ibm.com>
8818
8819 * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
8820 LVX_V1TI): Add macro expansion.
8821 * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
8822 definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
8823 VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
8824 * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
8825 Change check to determine if the instruction is a byte reversing
8826 entry. Fix typo in comment.
8827 * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
8828 for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
8829 Add def_builtin calls for new builtins.
8830 * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
8831 Add define_insn expansion.
8832
8833 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8834
8835 * config/rl78/rl78.md (umaxdi3): New define_expand.
8836
8837 2018-01-22 Sebastian Perta <sebastian.perta@renesas.com>
8838
8839 * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
8840 for non-QImode registers.
8841
8842 2018-01-22 Richard Biener <rguenther@suse.de>
8843
8844 PR tree-optimization/83963
8845 * graphite-scop-detection.c (scop_detection::get_sese): Delay
8846 including the loop exit block.
8847 (scop_detection::merge_sese): Likewise.
8848 (scop_detection::add_scop): Do it here instead.
8849
8850 2018-01-22 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
8851
8852 * doc/sourcebuild.texi (arm_softfloat): Document.
8853
8854 2018-01-21 John David Anglin <danglin@gcc.gnu.org>
8855
8856 PR gcc/77734
8857 * config/pa/pa.c (pa_function_ok_for_sibcall): Use
8858 targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
8859 Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
8860
8861 2018-01-21 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
8862 David Edelsohn <dje.gcc@gmail.com>
8863
8864 PR target/83946
8865 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
8866 Change "crset eq" to "crset 2".
8867 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
8868 (*call_indirect_aix<mode>_nospec): Likewise.
8869 (*call_value_indirect_aix<mode>_nospec): Likewise.
8870 (*call_indirect_elfv2<mode>_nospec): Likewise.
8871 (*call_value_indirect_elfv2<mode>_nospec): Likewise.
8872 (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
8873 change assembly output from . to $.
8874 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
8875 (indirect_jump<mode>_nospec): Change assembly output from . to $.
8876 (*tablejump<mode>_internal1_nospec): Likewise.
8877
8878 2018-01-21 Oleg Endo <olegendo@gcc.gnu.org>
8879
8880 PR target/80870
8881 * config/sh/sh_optimize_sett_clrt.cc:
8882 Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
8883
8884 2018-01-20 Richard Sandiford <richard.sandiford@linaro.org>
8885
8886 PR tree-optimization/83940
8887 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
8888 offset_dt to vect_constant_def rather than vect_unknown_def_type.
8889 (vect_check_load_store_mask): Add a mask_dt_out parameter and
8890 use it to pass back the definition type.
8891 (vect_check_store_rhs): Likewise rhs_dt_out.
8892 (vect_build_gather_load_calls): Add a mask_dt argument and use
8893 it instead of a call to vect_is_simple_use.
8894 (vectorizable_store): Update calls to vect_check_load_store_mask
8895 and vect_check_store_rhs. Use the dt returned by the latter instead
8896 of scatter_src_dt. Use the cached mask_dt and gs_info.offset_dt
8897 instead of calls to vect_is_simple_use. Pass the scalar rather
8898 than the vector operand to vect_is_simple_use when handling
8899 second and subsequent copies of an rhs value.
8900 (vectorizable_load): Update calls to vect_check_load_store_mask
8901 and vect_build_gather_load_calls. Use the cached mask_dt and
8902 gs_info.offset_dt instead of calls to vect_is_simple_use.
8903
8904 2018-01-20 Jakub Jelinek <jakub@redhat.com>
8905
8906 PR middle-end/83945
8907 * tree-emutls.c: Include gimplify.h.
8908 (lower_emutls_2): New function.
8909 (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
8910 with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
8911 it before further processing.
8912
8913 PR target/83930
8914 * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
8915 UINTVAL (trueop1) instead of INTVAL (op1).
8916
8917 2018-01-19 Jakub Jelinek <jakub@redhat.com>
8918
8919 PR debug/81570
8920 PR debug/83728
8921 * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
8922 INCOMING_FRAME_SP_OFFSET if not defined.
8923 (scan_trace): Add ENTRY argument. If true and
8924 DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
8925 emit a note to adjust the CFA offset.
8926 (create_cfi_notes): Adjust scan_trace callers.
8927 (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
8928 INCOMING_FRAME_SP_OFFSET in the CIE.
8929 * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
8930 * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
8931 Likewise.
8932 * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
8933 * doc/tm.texi: Regenerated.
8934
8935 2018-01-19 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
8936
8937 PR rtl-optimization/83147
8938 * lra-constraints.c (remove_inheritance_pseudos): Use
8939 lra_substitute_pseudo_within_insn.
8940
8941 2018-01-19 Tom de Vries <tom@codesourcery.com>
8942 Cesar Philippidis <cesar@codesourcery.com>
8943
8944 PR target/83920
8945 * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
8946
8947 2018-01-19 Cesar Philippidis <cesar@codesourcery.com>
8948
8949 PR target/83790
8950 * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
8951 spaces for function labels.
8952
8953 2018-01-19 Martin Liska <mliska@suse.cz>
8954
8955 * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
8956 (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
8957 (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
8958 (PRED_OPCODE_POSITIVE): Change from 64 to 59.
8959 (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
8960 (PRED_CONST_RETURN): Change from 69 to 65.
8961 (PRED_NULL_RETURN): Change from 91 to 71.
8962 (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
8963 (PRED_LOOP_GUARD): Change from 66 to 73.
8964
8965 2018-01-19 Martin Liska <mliska@suse.cz>
8966
8967 * predict.c (predict_insn_def): Add new assert.
8968 (struct branch_predictor): Change type to signed integer.
8969 (test_prediction_value_range): Amend test to cover
8970 PROB_UNINITIALIZED.
8971 * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
8972 (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
8973 (PRED_LOOP_ITERATIONS_MAX): Likewise.
8974 (PRED_LOOP_IV_COMPARE): Likewise.
8975 * predict.h (PROB_UNINITIALIZED): Define new constant.
8976
8977 2018-01-19 Martin Liska <mliska@suse.cz>
8978
8979 * predict.c (dump_prediction): Add new format for
8980 analyze_brprob.py script which is enabled with -details
8981 suboption.
8982 * profile-count.h (precise_p): New function.
8983
8984 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
8985
8986 PR tree-optimization/83922
8987 * tree-vect-loop.c (vect_verify_full_masking): Return false if
8988 there are no statements that need masking.
8989 (vect_active_double_reduction_p): New function.
8990 (vect_analyze_loop_operations): Use it when handling phis that
8991 are not in the loop header.
8992
8993 2018-01-19 Richard Sandiford <richard.sandiford@linaro.org>
8994
8995 PR tree-optimization/83914
8996 * tree-vect-loop.c (vectorizable_induction): Don't convert
8997 init_expr or apply the peeling adjustment for inductions
8998 that are nested within the vectorized loop.
8999
9000 2018-01-19 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9001
9002 * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
9003 instead of NEG.
9004
9005 2018-01-18 Jakub Jelinek <jakub@redhat.com>
9006
9007 PR sanitizer/81715
9008 PR testsuite/83882
9009 * function.h (gimplify_parameters): Add gimple_seq * argument.
9010 * function.c: Include gimple.h and options.h.
9011 (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
9012 for the added local temporaries if needed.
9013 * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
9014 if there are any parameter cleanups, wrap whole body into a
9015 try/finally with the cleanups.
9016
9017 2018-01-18 Wilco Dijkstra <wdijkstr@arm.com>
9018
9019 PR target/82964
9020 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
9021 Use GET_MODE_CLASS for scalar floating point.
9022
9023 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
9024
9025 PR ipa/82256
9026 patch by PaX Team
9027 * cgraphclones.c (cgraph_node::create_version_clone_with_body):
9028 Fix call of call_cgraph_insertion_hooks.
9029
9030 2018-01-18 Martin Sebor <msebor@redhat.com>
9031
9032 * doc/invoke.texi (-Wclass-memaccess): Tweak text.
9033
9034 2018-01-18 Jan Hubicka <hubicka@ucw.cz>
9035
9036 PR ipa/83619
9037 * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
9038 frequencies.
9039
9040 2018-01-18 Boris Kolpackov <boris@codesynthesis.com>
9041
9042 PR other/70268
9043 * common.opt: (-ffile-prefix-map): New option.
9044 * opts.c (common_handle_option): Defer it.
9045 * opts-global.c (handle_common_deferred_options): Handle it.
9046 * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
9047 * file-prefix-map.h: New file.
9048 (remap_debug_filename, add_debug_prefix_map): ...here.
9049 (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
9050 * final.c (debug_prefix_map, add_debug_prefix_map
9051 remap_debug_filename): Move to...
9052 * file-prefix-map.c: New file.
9053 (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
9054 generalize, get rid of alloca(), use strrchr() instead of strchr().
9055 (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
9056 Implement in terms of add_prefix_map().
9057 (remap_macro_filename, remap_debug_filename): Implement in term of
9058 remap_filename().
9059 * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
9060 * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
9061 * dbxout.c: Include file-prefix-map.h.
9062 * varasm.c: Likewise.
9063 * vmsdbgout.c: Likewise.
9064 * xcoffout.c: Likewise.
9065 * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
9066 * doc/cppopts.texi (-fmacro-prefix-map): Document.
9067 * doc/invoke.texi (-ffile-prefix-map): Document.
9068 (-fdebug-prefix-map): Update description.
9069
9070 2018-01-18 Martin Liska <mliska@suse.cz>
9071
9072 * config/i386/i386.c (indirect_thunk_name): Document that also
9073 lfence is emitted.
9074 (output_indirect_thunk): Document why both instructions
9075 (pause and lfence) are generated.
9076
9077 2018-01-18 Richard Biener <rguenther@suse.de>
9078
9079 PR tree-optimization/83887
9080 * graphite-scop-detection.c
9081 (scop_detection::get_nearest_dom_with_single_entry): Remove.
9082 (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
9083 (scop_detection::merge_sese): Re-implement with a flood-fill
9084 algorithm that properly finds a SESE region if it exists.
9085
9086 2018-01-18 Jakub Jelinek <jakub@redhat.com>
9087
9088 PR c/61240
9089 * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
9090 pointer_diff optimizations use view_convert instead of convert.
9091
9092 2018-01-17 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
9093
9094 * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
9095 Generate different code for -mno-speculate-indirect-jumps.
9096 (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
9097 (*call_indirect_aix<mode>): Disable for
9098 -mno-speculate-indirect-jumps.
9099 (*call_indirect_aix<mode>_nospec): New define_insn.
9100 (*call_value_indirect_aix<mode>): Disable for
9101 -mno-speculate-indirect-jumps.
9102 (*call_value_indirect_aix<mode>_nospec): New define_insn.
9103 (*sibcall_nonlocal_sysv<mode>): Generate different code for
9104 -mno-speculate-indirect-jumps.
9105 (*sibcall_value_nonlocal_sysv<mode>): Likewise.
9106
9107 2018-01-17 Michael Meissner <meissner@linux.vnet.ibm.com>
9108
9109 * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
9110 long double type, set the flags for noting the default long double
9111 type, even if we don't pass or return a long double type.
9112
9113 2018-01-17 Jan Hubicka <hubicka@ucw.cz>
9114
9115 PR ipa/83051
9116 * ipa-inline.c (flatten_function): Do not overwrite final inlining
9117 failure.
9118
9119 2018-01-17 Will Schmidt <will_schmidt@vnet.ibm.com>
9120
9121 * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
9122 support for merge[hl].
9123 (fold_mergehl_helper): New helper function.
9124 (tree-vector-builder.h): New #include for tree_vector_builder usage.
9125 * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
9126 (altivec_vmrglw_direct): Add xxmrglw insn.
9127
9128 2018-01-17 Andrew Waterman <andrew@sifive.com>
9129
9130 * config/riscv/riscv.c (riscv_conditional_register_usage): If
9131 UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
9132
9133 2018-01-17 David Malcolm <dmalcolm@redhat.com>
9134
9135 PR lto/83121
9136 * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
9137 call the lto_location_cache before reading the
9138 DECL_SOURCE_LOCATION of the types.
9139
9140 2018-01-17 Wilco Dijkstra <wdijkstr@arm.com>
9141 Richard Sandiford <richard.sandiford@linaro.org>
9142
9143 * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
9144 * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
9145 (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
9146 SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
9147 * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
9148 Add declaration.
9149 * config/aarch64/constraints.md (aarch64_movti_operand):
9150 Limit immediates.
9151 * config/aarch64/predicates.md (Uti): Add new constraint.
9152
9153 2018-01-17 Carl Love <cel@us.ibm.com>
9154
9155 * config/rs6000/vsx.md (define_expand xl_len_r,
9156 define_expand stxvl, define_expand *stxvl): Add match_dup argument.
9157 (define_insn): Add, match_dup 1 argument to define_insn stxvll and
9158 lxvll.
9159 (define_expand, define_insn): Move the shift left from the
9160 define_insn to the define_expand for lxvl and stxvl instructions.
9161 * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
9162 and XL_LEN_R definitions to PURE.
9163
9164 2018-01-17 Uros Bizjak <ubizjak@gmail.com>
9165
9166 * config/i386/i386.c (indirect_thunk_name): Declare regno
9167 as unsigned int. Compare regno with INVALID_REGNUM.
9168 (output_indirect_thunk): Ditto.
9169 (output_indirect_thunk_function): Ditto.
9170 (ix86_code_end): Declare regno as unsigned int. Use INVALID_REGNUM
9171 in the call to output_indirect_thunk_function.
9172
9173 2018-01-17 Richard Sandiford <richard.sandiford@linaro.org>
9174
9175 PR middle-end/83884
9176 * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
9177 rather than the size of inner_type to determine the stack slot size
9178 when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
9179
9180 2018-01-16 Sebastian Peryt <sebastian.peryt@intel.com>
9181
9182 PR target/83546
9183 * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
9184 to PTA_SILVERMONT.
9185
9186 2018-01-16 Michael Meissner <meissner@linux.vnet.ibm.com>
9187
9188 * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
9189 endian Linux systems to optionally enable multilibs for selecting
9190 the long double type if the user configured an explicit type.
9191 * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
9192 have no long double multilibs if not defined.
9193 * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
9194 warn if the user used -mabi={ieee,ibm}longdouble and we built
9195 multilibs for long double.
9196 * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
9197 appropriate multilib option.
9198 (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
9199 multilib options.
9200 * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
9201 for building long double multilibs.
9202 * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
9203
9204 2018-01-16 John David Anglin <danglin@gcc.gnu.org>
9205
9206 * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
9207 copies.
9208
9209 * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
9210 64 bits.
9211 * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
9212 128 bits.
9213
9214 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
9215 variables.
9216
9217 * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
9218 return value.
9219
9220 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
9221
9222 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
9223 ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
9224
9225 2018-01-16 Kelvin Nilsen <kelvin@gcc.gnu.org>
9226
9227 * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
9228 different rtl trees depending on TARGET_64BIT.
9229 (rs6000_gen_lvx): Likewise.
9230
9231 2018-01-16 Eric Botcazou <ebotcazou@adacore.com>
9232
9233 * config/visium/visium.md (nop): Tweak comment.
9234 (hazard_nop): Likewise.
9235
9236 2018-01-16 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
9237
9238 * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
9239 -mspeculate-indirect-jumps.
9240 * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
9241 for -mno-speculate-indirect-jumps.
9242 (*call_indirect_elfv2<mode>_nospec): New define_insn.
9243 (*call_value_indirect_elfv2<mode>): Disable for
9244 -mno-speculate-indirect-jumps.
9245 (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
9246 (indirect_jump): Emit different RTL for
9247 -mno-speculate-indirect-jumps.
9248 (*indirect_jump<mode>): Disable for
9249 -mno-speculate-indirect-jumps.
9250 (*indirect_jump<mode>_nospec): New define_insn.
9251 (tablejump): Emit different RTL for
9252 -mno-speculate-indirect-jumps.
9253 (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
9254 (tablejumpsi_nospec): New define_expand.
9255 (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
9256 (tablejumpdi_nospec): New define_expand.
9257 (*tablejump<mode>_internal1): Disable for
9258 -mno-speculate-indirect-jumps.
9259 (*tablejump<mode>_internal1_nospec): New define_insn.
9260 * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
9261 option.
9262
9263 2018-01-16 Artyom Skrobov tyomitch@gmail.com
9264
9265 * caller-save.c (insert_save): Drop unnecessary parameter. All
9266 callers updated.
9267
9268 2018-01-16 Jakub Jelinek <jakub@redhat.com>
9269 Richard Biener <rguenth@suse.de>
9270
9271 PR libgomp/83590
9272 * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
9273 return early, inline manually is_gimple_sizepos. Make sure if we
9274 call gimplify_expr we don't end up with a gimple constant.
9275 * tree.c (variably_modified_type_p): Don't return true for
9276 is_gimple_constant (_t). Inline manually is_gimple_sizepos.
9277 * gimplify.h (is_gimple_sizepos): Remove.
9278
9279 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9280
9281 PR tree-optimization/83857
9282 * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
9283 vectorizable_live_operation for pure SLP statements.
9284 (vectorizable_live_operation): Handle PHIs.
9285
9286 2018-01-16 Richard Biener <rguenther@suse.de>
9287
9288 PR tree-optimization/83867
9289 * tree-vect-stmts.c (vect_transform_stmt): Precompute
9290 nested_in_vect_loop_p since the scalar stmt may get invalidated.
9291
9292 2018-01-16 Jakub Jelinek <jakub@redhat.com>
9293
9294 PR c/83844
9295 * stor-layout.c (handle_warn_if_not_align): Use byte_position and
9296 multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
9297 If off is not INTEGER_CST, issue a may not be aligned warning
9298 rather than isn't aligned. Use isn%'t rather than isn't.
9299 * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
9300 into MULT_EXPR.
9301 <case MULT_EXPR>: Improve the case when bottom and one of the
9302 MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
9303 operand, in that case check if the other operand is multiple of
9304 bottom divided by the INTEGER_CST operand.
9305
9306 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9307
9308 PR target/83858
9309 * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
9310 * config/pa/pa-protos.h (pa_function_arg_size): Declare.
9311 * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
9312 pa_function_arg_size instead of FUNCTION_ARG_SIZE.
9313 * config/pa/pa.c (pa_function_arg_advance): Likewise.
9314 (pa_function_arg, pa_arg_partial_bytes): Likewise.
9315 (pa_function_arg_size): New function.
9316
9317 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9318
9319 * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
9320 in a separate statement.
9321
9322 2018-01-16 Richard Sandiford <richard.sandiford@linaro.org>
9323
9324 PR tree-optimization/83847
9325 * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
9326 group gathers and scatters.
9327
9328 2018-01-16 Jakub Jelinek <jakub@redhat.com>
9329
9330 PR rtl-optimization/86620
9331 * params.def (max-sched-ready-insns): Bump minimum value to 1.
9332
9333 PR rtl-optimization/83213
9334 * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
9335 to last if both are JUMP_INSNs.
9336
9337 PR tree-optimization/83843
9338 * gimple-ssa-store-merging.c
9339 (imm_store_chain_info::output_merged_store): Handle bit_not_p on
9340 store_immediate_info for bswap/nop orig_stores.
9341
9342 2018-01-15 Andrew Waterman <andrew@sifive.com>
9343
9344 * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
9345 !TARGET_MUL.
9346 <UDIV>: Increase cost if !TARGET_DIV.
9347
9348 2018-01-15 Segher Boessenkool <segher@kernel.crashing.org>
9349
9350 * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
9351 (define_attr "cr_logical_3op"): New.
9352 (cceq_ior_compare): Adjust.
9353 (cceq_ior_compare_complement): Adjust.
9354 (*cceq_rev_compare): Adjust.
9355 * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
9356 (is_cracked_insn): Adjust.
9357 (insn_must_be_first_in_group): Adjust.
9358 * config/rs6000/40x.md: Adjust.
9359 * config/rs6000/440.md: Adjust.
9360 * config/rs6000/476.md: Adjust.
9361 * config/rs6000/601.md: Adjust.
9362 * config/rs6000/603.md: Adjust.
9363 * config/rs6000/6xx.md: Adjust.
9364 * config/rs6000/7450.md: Adjust.
9365 * config/rs6000/7xx.md: Adjust.
9366 * config/rs6000/8540.md: Adjust.
9367 * config/rs6000/cell.md: Adjust.
9368 * config/rs6000/e300c2c3.md: Adjust.
9369 * config/rs6000/e500mc.md: Adjust.
9370 * config/rs6000/e500mc64.md: Adjust.
9371 * config/rs6000/e5500.md: Adjust.
9372 * config/rs6000/e6500.md: Adjust.
9373 * config/rs6000/mpc.md: Adjust.
9374 * config/rs6000/power4.md: Adjust.
9375 * config/rs6000/power5.md: Adjust.
9376 * config/rs6000/power6.md: Adjust.
9377 * config/rs6000/power7.md: Adjust.
9378 * config/rs6000/power8.md: Adjust.
9379 * config/rs6000/power9.md: Adjust.
9380 * config/rs6000/rs64.md: Adjust.
9381 * config/rs6000/titan.md: Adjust.
9382
9383 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9384
9385 * config/i386/predicates.md (indirect_branch_operand): Rewrite
9386 ix86_indirect_branch_register logic.
9387
9388 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9389
9390 * config/i386/constraints.md (Bs): Update
9391 ix86_indirect_branch_register check. Don't check
9392 ix86_indirect_branch_register with GOT_memory_operand.
9393 (Bw): Likewise.
9394 * config/i386/predicates.md (GOT_memory_operand): Don't check
9395 ix86_indirect_branch_register here.
9396 (GOT32_symbol_operand): Likewise.
9397
9398 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9399
9400 * config/i386/predicates.md (constant_call_address_operand):
9401 Rewrite ix86_indirect_branch_register logic.
9402 (sibcall_insn_operand): Likewise.
9403
9404 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9405
9406 * config/i386/constraints.md (Bs): Replace
9407 ix86_indirect_branch_thunk_register with
9408 ix86_indirect_branch_register.
9409 (Bw): Likewise.
9410 * config/i386/i386.md (indirect_jump): Likewise.
9411 (tablejump): Likewise.
9412 (*sibcall_memory): Likewise.
9413 (*sibcall_value_memory): Likewise.
9414 Peepholes of indirect call and jump via memory: Likewise.
9415 * config/i386/i386.opt: Likewise.
9416 * config/i386/predicates.md (indirect_branch_operand): Likewise.
9417 (GOT_memory_operand): Likewise.
9418 (call_insn_operand): Likewise.
9419 (sibcall_insn_operand): Likewise.
9420 (GOT32_symbol_operand): Likewise.
9421
9422 2018-01-15 Jakub Jelinek <jakub@redhat.com>
9423
9424 PR middle-end/83837
9425 * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
9426 type rather than type addr's type points to.
9427 (expand_omp_atomic_mutex): Likewise.
9428 (expand_omp_atomic): Likewise.
9429
9430 2018-01-15 H.J. Lu <hongjiu.lu@intel.com>
9431
9432 PR target/83839
9433 * config/i386/i386.c (output_indirect_thunk_function): Use
9434 ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
9435 for __x86_return_thunk.
9436
9437 2018-01-15 Richard Biener <rguenther@suse.de>
9438
9439 PR middle-end/83850
9440 * expmed.c (extract_bit_field_1): Fix typo.
9441
9442 2018-01-15 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
9443
9444 PR target/83687
9445 * config/arm/iterators.md (VF): New mode iterator.
9446 * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
9447 Remove integer-related logic from pattern.
9448 (neon_vabd<mode>_3): Likewise.
9449
9450 2018-01-15 Jakub Jelinek <jakub@redhat.com>
9451
9452 PR middle-end/82694
9453 * common.opt (fstrict-overflow): No longer an alias.
9454 (fwrapv-pointer): New option.
9455 * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
9456 also for pointer types based on flag_wrapv_pointer.
9457 * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
9458 opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
9459 opts->x_flag_wrapv got set.
9460 * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
9461 changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
9462 POINTER_TYPE_OVERFLOW_UNDEFINED.
9463 * match.pd: Likewise in address comparison pattern.
9464 * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
9465
9466 2018-01-15 Richard Biener <rguenther@suse.de>
9467
9468 PR lto/83804
9469 * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
9470 from TYPE_FIELDS. Free TYPE_BINFO if not used by devirtualization.
9471 Reset type names to their identifier if their TYPE_DECL doesn't
9472 have linkage (and thus is used for ODR and devirt).
9473 (save_debug_info_for_decl): Remove.
9474 (save_debug_info_for_type): Likewise.
9475 (add_tree_to_fld_list): Adjust.
9476 * tree-pretty-print.c (dump_generic_node): Make dumping of
9477 type names more robust.
9478
9479 2018-01-15 Richard Biener <rguenther@suse.de>
9480
9481 * BASE-VER: Bump to 8.0.1.
9482
9483 2018-01-14 Martin Sebor <msebor@redhat.com>
9484
9485 PR other/83508
9486 * builtins.c (check_access): Avoid warning when the no-warning bit
9487 is set.
9488
9489 2018-01-14 Cory Fields <cory-nospam-@coryfields.com>
9490
9491 * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
9492 * ira-color (allocno_hard_regs_compare): Likewise.
9493
9494 2018-01-14 Nathan Rossi <nathan@nathanrossi.com>
9495
9496 PR target/83013
9497 * config/microblaze/microblaze.c (microblaze_asm_output_ident):
9498 Use .pushsection/.popsection.
9499
9500 2018-01-14 Martin Sebor <msebor@redhat.com>
9501
9502 PR c++/81327
9503 * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
9504
9505 2018-01-14 Jakub Jelinek <jakub@redhat.com>
9506
9507 * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
9508 entry from extra_headers.
9509 (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
9510 extra_headers, make the list bitwise identical to the i?86-*-* one.
9511
9512 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9513
9514 * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
9515 -mcmodel=large with -mindirect-branch=thunk,
9516 -mindirect-branch=thunk-extern, -mfunction-return=thunk and
9517 -mfunction-return=thunk-extern.
9518 * doc/invoke.texi: Document -mcmodel=large is incompatible with
9519 -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
9520 -mfunction-return=thunk and -mfunction-return=thunk-extern.
9521
9522 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9523
9524 * config/i386/i386.c (print_reg): Print the name of the full
9525 integer register without '%'.
9526 (ix86_print_operand): Handle 'V'.
9527 * doc/extend.texi: Document 'V' modifier.
9528
9529 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9530
9531 * config/i386/constraints.md (Bs): Disallow memory operand for
9532 -mindirect-branch-register.
9533 (Bw): Likewise.
9534 * config/i386/predicates.md (indirect_branch_operand): Likewise.
9535 (GOT_memory_operand): Likewise.
9536 (call_insn_operand): Likewise.
9537 (sibcall_insn_operand): Likewise.
9538 (GOT32_symbol_operand): Likewise.
9539 * config/i386/i386.md (indirect_jump): Call convert_memory_address
9540 for -mindirect-branch-register.
9541 (tablejump): Likewise.
9542 (*sibcall_memory): Likewise.
9543 (*sibcall_value_memory): Likewise.
9544 Disallow peepholes of indirect call and jump via memory for
9545 -mindirect-branch-register.
9546 (*call_pop): Replace m with Bw.
9547 (*call_value_pop): Likewise.
9548 (*sibcall_pop_memory): Replace m with Bs.
9549 * config/i386/i386.opt (mindirect-branch-register): New option.
9550 * doc/invoke.texi: Document -mindirect-branch-register option.
9551
9552 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9553
9554 * config/i386/i386-protos.h (ix86_output_function_return): New.
9555 * config/i386/i386.c (ix86_set_indirect_branch_type): Also
9556 set function_return_type.
9557 (indirect_thunk_name): Add ret_p to indicate thunk for function
9558 return.
9559 (output_indirect_thunk_function): Pass false to
9560 indirect_thunk_name.
9561 (ix86_output_indirect_branch_via_reg): Likewise.
9562 (ix86_output_indirect_branch_via_push): Likewise.
9563 (output_indirect_thunk_function): Create alias for function
9564 return thunk if regno < 0.
9565 (ix86_output_function_return): New function.
9566 (ix86_handle_fndecl_attribute): Handle function_return.
9567 (ix86_attribute_table): Add function_return.
9568 * config/i386/i386.h (machine_function): Add
9569 function_return_type.
9570 * config/i386/i386.md (simple_return_internal): Use
9571 ix86_output_function_return.
9572 (simple_return_internal_long): Likewise.
9573 * config/i386/i386.opt (mfunction-return=): New option.
9574 (indirect_branch): Mention -mfunction-return=.
9575 * doc/extend.texi: Document function_return function attribute.
9576 * doc/invoke.texi: Document -mfunction-return= option.
9577
9578 2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
9579
9580 * config/i386/i386-opts.h (indirect_branch): New.
9581 * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
9582 * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
9583 with local indirect jump when converting indirect call and jump.
9584 (ix86_set_indirect_branch_type): New.
9585 (ix86_set_current_function): Call ix86_set_indirect_branch_type.
9586 (indirectlabelno): New.
9587 (indirect_thunk_needed): Likewise.
9588 (indirect_thunk_bnd_needed): Likewise.
9589 (indirect_thunks_used): Likewise.
9590 (indirect_thunks_bnd_used): Likewise.
9591 (INDIRECT_LABEL): Likewise.
9592 (indirect_thunk_name): Likewise.
9593 (output_indirect_thunk): Likewise.
9594 (output_indirect_thunk_function): Likewise.
9595 (ix86_output_indirect_branch_via_reg): Likewise.
9596 (ix86_output_indirect_branch_via_push): Likewise.
9597 (ix86_output_indirect_branch): Likewise.
9598 (ix86_output_indirect_jmp): Likewise.
9599 (ix86_code_end): Call output_indirect_thunk_function if needed.
9600 (ix86_output_call_insn): Call ix86_output_indirect_branch if
9601 needed.
9602 (ix86_handle_fndecl_attribute): Handle indirect_branch.
9603 (ix86_attribute_table): Add indirect_branch.
9604 * config/i386/i386.h (machine_function): Add indirect_branch_type
9605 and has_local_indirect_jump.
9606 * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
9607 to true.
9608 (tablejump): Likewise.
9609 (*indirect_jump): Use ix86_output_indirect_jmp.
9610 (*tablejump_1): Likewise.
9611 (simple_return_indirect_internal): Likewise.
9612 * config/i386/i386.opt (mindirect-branch=): New option.
9613 (indirect_branch): New.
9614 (keep): Likewise.
9615 (thunk): Likewise.
9616 (thunk-inline): Likewise.
9617 (thunk-extern): Likewise.
9618 * doc/extend.texi: Document indirect_branch function attribute.
9619 * doc/invoke.texi: Document -mindirect-branch= option.
9620
9621 2018-01-14 Jan Hubicka <hubicka@ucw.cz>
9622
9623 PR ipa/83051
9624 * ipa-inline.c (edge_badness): Tolerate roundoff errors.
9625
9626 2018-01-14 Richard Sandiford <richard.sandiford@linaro.org>
9627
9628 * ipa-inline.c (want_inline_small_function_p): Return false if
9629 inlining has already failed with CIF_FINAL_ERROR.
9630 (update_caller_keys): Call want_inline_small_function_p before
9631 can_inline_edge_p.
9632 (update_callee_keys): Likewise.
9633
9634 2018-01-10 Kelvin Nilsen <kelvin@gcc.gnu.org>
9635
9636 * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
9637 New function.
9638 (rs6000_quadword_masked_address_p): Likewise.
9639 (quad_aligned_load_p): Likewise.
9640 (quad_aligned_store_p): Likewise.
9641 (const_load_sequence_p): Add comment to describe the outer-most loop.
9642 (mimic_memory_attributes_and_flags): New function.
9643 (rs6000_gen_stvx): Likewise.
9644 (replace_swapped_aligned_store): Likewise.
9645 (rs6000_gen_lvx): Likewise.
9646 (replace_swapped_aligned_load): Likewise.
9647 (replace_swapped_load_constant): Capitalize argument name in
9648 comment describing this function.
9649 (rs6000_analyze_swaps): Add a third pass to search for vector loads
9650 and stores that access quad-word aligned addresses and replace
9651 with stvx or lvx instructions when appropriate.
9652 * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
9653 New function prototype.
9654 (rs6000_quadword_masked_address_p): Likewise.
9655 (rs6000_gen_lvx): Likewise.
9656 (rs6000_gen_stvx): Likewise.
9657 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
9658 VSX_D (V2DF, V2DI), modify this split to select lvx instruction
9659 when memory address is aligned.
9660 (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
9661 this split to select lvx instruction when memory address is aligned.
9662 (*vsx_le_perm_load_v8hi): Modify this split to select lvx
9663 instruction when memory address is aligned.
9664 (*vsx_le_perm_load_v16qi): Likewise.
9665 (four unnamed splitters): Modify to select the stvx instruction
9666 when memory is aligned.
9667
9668 2018-01-13 Jan Hubicka <hubicka@ucw.cz>
9669
9670 * predict.c (determine_unlikely_bbs): Handle correctly BBs
9671 which appears in the queue multiple times.
9672
9673 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9674 Alan Hayward <alan.hayward@arm.com>
9675 David Sherwood <david.sherwood@arm.com>
9676
9677 * tree-vectorizer.h (vec_lower_bound): New structure.
9678 (_loop_vec_info): Add check_nonzero and lower_bounds.
9679 (LOOP_VINFO_CHECK_NONZERO): New macro.
9680 (LOOP_VINFO_LOWER_BOUNDS): Likewise.
9681 (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
9682 * tree-data-ref.h (dr_with_seg_len): Add access_size and align
9683 fields. Make seg_len the distance travelled, not including the
9684 access size.
9685 (dr_direction_indicator): Declare.
9686 (dr_zero_step_indicator): Likewise.
9687 (dr_known_forward_stride_p): Likewise.
9688 * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
9689 tree-ssanames.h.
9690 (runtime_alias_check_p): Allow runtime alias checks with
9691 variable strides.
9692 (operator ==): Compare access_size and align.
9693 (prune_runtime_alias_test_list): Rework for new distinction between
9694 the access_size and seg_len.
9695 (create_intersect_range_checks_index): Likewise. Cope with polynomial
9696 segment lengths.
9697 (get_segment_min_max): New function.
9698 (create_intersect_range_checks): Use it.
9699 (dr_step_indicator): New function.
9700 (dr_direction_indicator): Likewise.
9701 (dr_zero_step_indicator): Likewise.
9702 (dr_known_forward_stride_p): Likewise.
9703 * tree-loop-distribution.c (data_ref_segment_size): Return
9704 DR_STEP * (niters - 1).
9705 (compute_alias_check_pairs): Update call to the dr_with_seg_len
9706 constructor.
9707 * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
9708 (vect_preserves_scalar_order_p): New function, split out from...
9709 (vect_analyze_data_ref_dependence): ...here. Check for zero steps.
9710 (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
9711 (vect_vfa_access_size): New function.
9712 (vect_vfa_align): Likewise.
9713 (vect_compile_time_alias): Take access_size_a and access_b arguments.
9714 (dump_lower_bound): New function.
9715 (vect_check_lower_bound): Likewise.
9716 (vect_small_gap_p): Likewise.
9717 (vectorizable_with_step_bound_p): Likewise.
9718 (vect_prune_runtime_alias_test_list): Ignore cross-iteration
9719 depencies if the vectorization factor is 1. Convert the checks
9720 for nonzero steps into checks on the bounds of DR_STEP. Try using
9721 a bunds check for variable steps if the minimum required step is
9722 relatively small. Update calls to the dr_with_seg_len
9723 constructor and to vect_compile_time_alias.
9724 * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
9725 function.
9726 (vect_loop_versioning): Call it.
9727 * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
9728 when retrying.
9729 (vect_estimate_min_profitable_iters): Account for any bounds checks.
9730
9731 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9732 Alan Hayward <alan.hayward@arm.com>
9733 David Sherwood <david.sherwood@arm.com>
9734
9735 * doc/sourcebuild.texi (vect_scatter_store): Document.
9736 * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
9737 optabs.
9738 * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
9739 Document.
9740 * genopinit.c (main): Add supports_vec_scatter_store and
9741 supports_vec_scatter_store_cached to target_optabs.
9742 * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
9743 IFN_MASK_SCATTER_STORE.
9744 * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
9745 functions.
9746 * internal-fn.h (internal_store_fn_p): Declare.
9747 (internal_fn_stored_value_index): Likewise.
9748 * internal-fn.c (scatter_store_direct): New macro.
9749 (expand_scatter_store_optab_fn): New function.
9750 (direct_scatter_store_optab_supported_p): New macro.
9751 (internal_store_fn_p): New function.
9752 (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
9753 IFN_MASK_SCATTER_STORE.
9754 (internal_fn_mask_index): Likewise.
9755 (internal_fn_stored_value_index): New function.
9756 (internal_gather_scatter_fn_supported_p): Adjust operand numbers
9757 for scatter stores.
9758 * optabs-query.h (supports_vec_scatter_store_p): Declare.
9759 * optabs-query.c (supports_vec_scatter_store_p): New function.
9760 * tree-vectorizer.h (vect_get_store_rhs): Declare.
9761 * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
9762 true for scatter stores.
9763 (vect_gather_scatter_fn_p): Handle scatter stores too.
9764 (vect_check_gather_scatter): Consider using scatter stores if
9765 supports_vec_scatter_store_p.
9766 * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
9767 scatter stores too.
9768 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9769 internal_fn_stored_value_index.
9770 (check_load_store_masking): Handle scatter stores too.
9771 (vect_get_store_rhs): Make public.
9772 (vectorizable_call): Use internal_store_fn_p.
9773 (vectorizable_store): Handle scatter store internal functions.
9774 (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
9775 when deciding whether the end of the group has been reached.
9776 * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
9777 * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
9778 (mask_scatter_store<mode>): New insns.
9779
9780 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9781 Alan Hayward <alan.hayward@arm.com>
9782 David Sherwood <david.sherwood@arm.com>
9783
9784 * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
9785 * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
9786 * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
9787 function.
9788 (vect_use_strided_gather_scatters_p): Take a masked_p argument.
9789 Use vect_truncate_gather_scatter_offset if we can't treat the
9790 operation as a normal gather load or scatter store.
9791 (get_group_load_store_type): Take the gather_scatter_info
9792 as argument. Try using a gather load or scatter store for
9793 single-element groups.
9794 (get_load_store_type): Update calls to get_group_load_store_type
9795 and vect_use_strided_gather_scatters_p.
9796
9797 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9798 Alan Hayward <alan.hayward@arm.com>
9799 David Sherwood <david.sherwood@arm.com>
9800
9801 * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
9802 optional tree argument.
9803 * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
9804 null target hooks.
9805 (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
9806 but continue to use the current value as a fallback.
9807 (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
9808 to compare the updates.
9809 * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
9810 (get_load_store_type): Use it when handling a strided access.
9811 (vect_get_strided_load_store_ops): New function.
9812 (vect_get_data_ptr_increment): Likewise.
9813 (vectorizable_load): Handle strided gather loads. Always pass
9814 a step to vect_create_data_ref_ptr and bump_vector_ptr.
9815
9816 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9817 Alan Hayward <alan.hayward@arm.com>
9818 David Sherwood <david.sherwood@arm.com>
9819
9820 * doc/md.texi (gather_load@var{m}): Document.
9821 (mask_gather_load@var{m}): Likewise.
9822 * genopinit.c (main): Add supports_vec_gather_load and
9823 supports_vec_gather_load_cached to target_optabs.
9824 * optabs-tree.c (init_tree_optimization_optabs): Use
9825 ggc_cleared_alloc to allocate target_optabs.
9826 * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
9827 * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
9828 functions.
9829 * internal-fn.h (internal_load_fn_p): Declare.
9830 (internal_gather_scatter_fn_p): Likewise.
9831 (internal_fn_mask_index): Likewise.
9832 (internal_gather_scatter_fn_supported_p): Likewise.
9833 * internal-fn.c (gather_load_direct): New macro.
9834 (expand_gather_load_optab_fn): New function.
9835 (direct_gather_load_optab_supported_p): New macro.
9836 (direct_internal_fn_optab): New function.
9837 (internal_load_fn_p): Likewise.
9838 (internal_gather_scatter_fn_p): Likewise.
9839 (internal_fn_mask_index): Likewise.
9840 (internal_gather_scatter_fn_supported_p): Likewise.
9841 * optabs-query.c (supports_at_least_one_mode_p): New function.
9842 (supports_vec_gather_load_p): Likewise.
9843 * optabs-query.h (supports_vec_gather_load_p): Declare.
9844 * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
9845 and memory_type field.
9846 (NUM_PATTERNS): Bump to 15.
9847 * tree-vect-data-refs.c: Include internal-fn.h.
9848 (vect_gather_scatter_fn_p): New function.
9849 (vect_describe_gather_scatter_call): Likewise.
9850 (vect_check_gather_scatter): Try using internal functions for
9851 gather loads. Recognize existing calls to a gather load function.
9852 (vect_analyze_data_refs): Consider using gather loads if
9853 supports_vec_gather_load_p.
9854 * tree-vect-patterns.c (vect_get_load_store_mask): New function.
9855 (vect_get_gather_scatter_offset_type): Likewise.
9856 (vect_convert_mask_for_vectype): Likewise.
9857 (vect_add_conversion_to_patterm): Likewise.
9858 (vect_try_gather_scatter_pattern): Likewise.
9859 (vect_recog_gather_scatter_pattern): New pattern recognizer.
9860 (vect_vect_recog_func_ptrs): Add it.
9861 * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
9862 internal_fn_mask_index and internal_gather_scatter_fn_p.
9863 (check_load_store_masking): Take the gather_scatter_info as an
9864 argument and handle gather loads.
9865 (vect_get_gather_scatter_ops): New function.
9866 (vectorizable_call): Check internal_load_fn_p.
9867 (vectorizable_load): Likewise. Handle gather load internal
9868 functions.
9869 (vectorizable_store): Update call to check_load_store_masking.
9870 * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
9871 * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
9872 * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
9873 (aarch64_gather_scale_operand_d): New predicates.
9874 * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
9875 (mask_gather_load<mode>): New insns.
9876
9877 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9878 Alan Hayward <alan.hayward@arm.com>
9879 David Sherwood <david.sherwood@arm.com>
9880
9881 * optabs.def (fold_left_plus_optab): New optab.
9882 * doc/md.texi (fold_left_plus_@var{m}): Document.
9883 * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
9884 * internal-fn.c (fold_left_direct): Define.
9885 (expand_fold_left_optab_fn): Likewise.
9886 (direct_fold_left_optab_supported_p): Likewise.
9887 * fold-const-call.c (fold_const_fold_left): New function.
9888 (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
9889 * tree-parloops.c (valid_reduction_p): New function.
9890 (gather_scalar_reductions): Use it.
9891 * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
9892 (vect_finish_replace_stmt): Declare.
9893 * tree-vect-loop.c (fold_left_reduction_fn): New function.
9894 (needs_fold_left_reduction_p): New function, split out from...
9895 (vect_is_simple_reduction): ...here. Accept reductions that
9896 forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
9897 (vect_force_simple_reduction): Also store the reduction type in
9898 the assignment's STMT_VINFO_REDUC_TYPE.
9899 (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
9900 (merge_with_identity): New function.
9901 (vect_expand_fold_left): Likewise.
9902 (vectorize_fold_left_reduction): Likewise.
9903 (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION. Leave the
9904 scalar phi in place for it. Check for target support and reject
9905 cases that would reassociate the operation. Defer the transform
9906 phase to vectorize_fold_left_reduction.
9907 * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
9908 * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
9909 (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
9910
9911 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9912
9913 * tree-if-conv.c (predicate_mem_writes): Remove redundant
9914 call to ifc_temp_var.
9915
9916 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9917 Alan Hayward <alan.hayward@arm.com>
9918 David Sherwood <david.sherwood@arm.com>
9919
9920 * target.def (legitimize_address_displacement): Take the original
9921 offset as a poly_int.
9922 * targhooks.h (default_legitimize_address_displacement): Update
9923 accordingly.
9924 * targhooks.c (default_legitimize_address_displacement): Likewise.
9925 * doc/tm.texi: Regenerate.
9926 * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
9927 as an argument, moving assert of ad->disp == ad->disp_term to...
9928 (process_address_1): ...here. Update calls to base_plus_disp_to_reg.
9929 Try calling targetm.legitimize_address_displacement before expanding
9930 the address rather than afterwards, and adjust for the new interface.
9931 * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
9932 Match the new hook interface. Handle SVE addresses.
9933 * config/sh/sh.c (sh_legitimize_address_displacement): Make the
9934 new hook interface.
9935
9936 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9937
9938 * Makefile.in (OBJS): Add early-remat.o.
9939 * target.def (select_early_remat_modes): New hook.
9940 * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
9941 * doc/tm.texi: Regenerate.
9942 * targhooks.h (default_select_early_remat_modes): Declare.
9943 * targhooks.c (default_select_early_remat_modes): New function.
9944 * timevar.def (TV_EARLY_REMAT): New timevar.
9945 * passes.def (pass_early_remat): New pass.
9946 * tree-pass.h (make_pass_early_remat): Declare.
9947 * early-remat.c: New file.
9948 * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
9949 function.
9950 (TARGET_SELECT_EARLY_REMAT_MODES): Define.
9951
9952 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9953 Alan Hayward <alan.hayward@arm.com>
9954 David Sherwood <david.sherwood@arm.com>
9955
9956 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
9957 vfm1 with a bound_epilog parameter.
9958 (vect_do_peeling): Update calls accordingly, and move the prologue
9959 call earlier in the function. Treat the base bound_epilog as 0 for
9960 fully-masked loops and retain vf - 1 for other loops. Add 1 to
9961 this base when peeling for gaps.
9962 * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
9963 with fully-masked loops.
9964 (vect_estimate_min_profitable_iters): Handle the single peeled
9965 iteration in that case.
9966
9967 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9968 Alan Hayward <alan.hayward@arm.com>
9969 David Sherwood <david.sherwood@arm.com>
9970
9971 * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
9972 single-element interleaving even if the size is not a power of 2.
9973 * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
9974 accesses for single-element interleaving if the group size is
9975 not a power of 2.
9976
9977 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
9978 Alan Hayward <alan.hayward@arm.com>
9979 David Sherwood <david.sherwood@arm.com>
9980
9981 * doc/md.texi (fold_extract_last_@var{m}): Document.
9982 * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
9983 * optabs.def (fold_extract_last_optab): New optab.
9984 * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
9985 * internal-fn.c (fold_extract_direct): New macro.
9986 (expand_fold_extract_optab_fn): Likewise.
9987 (direct_fold_extract_optab_supported_p): Likewise.
9988 * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
9989 * tree-vect-loop.c (vect_model_reduction_cost): Handle
9990 EXTRACT_LAST_REDUCTION.
9991 (get_initial_def_for_reduction): Do not create an initial vector
9992 for EXTRACT_LAST_REDUCTION reductions.
9993 (vectorizable_reduction): Leave the scalar phi in place for
9994 EXTRACT_LAST_REDUCTIONs. Try using EXTRACT_LAST_REDUCTION
9995 ahead of INTEGER_INDUC_COND_REDUCTION. Do not check for an
9996 epilogue code for EXTRACT_LAST_REDUCTION and defer the
9997 transform phase to vectorizable_condition.
9998 * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
9999 split out from...
10000 (vect_finish_stmt_generation): ...here.
10001 (vect_finish_replace_stmt): New function.
10002 (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
10003 * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
10004 pattern.
10005 * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
10006
10007 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10008 Alan Hayward <alan.hayward@arm.com>
10009 David Sherwood <david.sherwood@arm.com>
10010
10011 * doc/md.texi (extract_last_@var{m}): Document.
10012 * optabs.def (extract_last_optab): New optab.
10013 * internal-fn.def (EXTRACT_LAST): New internal function.
10014 * internal-fn.c (cond_unary_direct): New macro.
10015 (expand_cond_unary_optab_fn): Likewise.
10016 (direct_cond_unary_optab_supported_p): Likewise.
10017 * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
10018 loops using EXTRACT_LAST.
10019 * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
10020 (extract_last_<mode>): ...this optab.
10021 (vec_extract<mode><Vel>): Update accordingly.
10022
10023 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10024 Alan Hayward <alan.hayward@arm.com>
10025 David Sherwood <david.sherwood@arm.com>
10026
10027 * target.def (empty_mask_is_expensive): New hook.
10028 * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
10029 * doc/tm.texi: Regenerate.
10030 * targhooks.h (default_empty_mask_is_expensive): Declare.
10031 * targhooks.c (default_empty_mask_is_expensive): New function.
10032 * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
10033 if the target says that empty masks are expensive.
10034 * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
10035 New function.
10036 (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
10037
10038 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10039 Alan Hayward <alan.hayward@arm.com>
10040 David Sherwood <david.sherwood@arm.com>
10041
10042 * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
10043 (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
10044 (vect_use_loop_mask_for_alignment_p): New function.
10045 (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
10046 * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
10047 niters_skip argument. Make sure that the first niters_skip elements
10048 of the first iteration are inactive.
10049 (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
10050 Update call to vect_set_loop_masks_directly.
10051 (get_misalign_in_elems): New function, split out from...
10052 (vect_gen_prolog_loop_niters): ...here.
10053 (vect_update_init_of_dr): Take a code argument that specifies whether
10054 the adjustment should be added or subtracted.
10055 (vect_update_init_of_drs): Likewise.
10056 (vect_prepare_for_masked_peels): New function.
10057 (vect_do_peeling): Skip prologue peeling if we're using a mask
10058 instead. Update call to vect_update_inits_of_drs.
10059 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10060 mask_skip_niters.
10061 (vect_analyze_loop_2): Allow fully-masked loops with peeling for
10062 alignment. Do not include the number of peeled iterations in
10063 the minimum threshold in that case.
10064 (vectorizable_induction): Adjust the start value down by
10065 LOOP_VINFO_MASK_SKIP_NITERS iterations.
10066 (vect_transform_loop): Call vect_prepare_for_masked_peels.
10067 Take the number of skipped iterations into account when calculating
10068 the loop bounds.
10069 * tree-vect-stmts.c (vect_gen_while_not): New function.
10070
10071 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10072 Alan Hayward <alan.hayward@arm.com>
10073 David Sherwood <david.sherwood@arm.com>
10074
10075 * doc/sourcebuild.texi (vect_fully_masked): Document.
10076 * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
10077 default value to 0.
10078 * tree-vect-loop.c (vect_analyze_loop_costing): New function,
10079 split out from...
10080 (vect_analyze_loop_2): ...here. Don't check the vectorization
10081 factor against the number of loop iterations if the loop is
10082 fully-masked.
10083
10084 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10085 Alan Hayward <alan.hayward@arm.com>
10086 David Sherwood <david.sherwood@arm.com>
10087
10088 * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
10089 (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
10090 (dump_groups): Update accordingly.
10091 (iv_use::mem_type): New member variable.
10092 (address_p): New function.
10093 (record_use): Add a mem_type argument and initialize the new
10094 mem_type field.
10095 (record_group_use): Add a mem_type argument. Use address_p.
10096 Remove obsolete null checks of base_object. Update call to record_use.
10097 (find_interesting_uses_op): Update call to record_group_use.
10098 (find_interesting_uses_cond): Likewise.
10099 (find_interesting_uses_address): Likewise.
10100 (get_mem_type_for_internal_fn): New function.
10101 (find_address_like_use): Likewise.
10102 (find_interesting_uses_stmt): Try find_address_like_use before
10103 calling find_interesting_uses_op.
10104 (addr_offset_valid_p): Use the iv mem_type field as the type
10105 of the addressed memory.
10106 (add_autoinc_candidates): Likewise.
10107 (get_address_cost): Likewise.
10108 (split_small_address_groups_p): Use address_p.
10109 (split_address_groups): Likewise.
10110 (add_iv_candidate_for_use): Likewise.
10111 (autoinc_possible_for_pair): Likewise.
10112 (rewrite_groups): Likewise.
10113 (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
10114 (determine_group_iv_cost): Update after split of USE_ADDRESS.
10115 (get_alias_ptr_type_for_ptr_address): New function.
10116 (rewrite_use_address): Rewrite address uses in calls that were
10117 identified by find_address_like_use.
10118
10119 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10120 Alan Hayward <alan.hayward@arm.com>
10121 David Sherwood <david.sherwood@arm.com>
10122
10123 * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
10124 TARGET_MEM_REFs.
10125 * gimple-expr.h (is_gimple_addressable: Likewise.
10126 * gimple-expr.c (is_gimple_address): Likewise.
10127 * internal-fn.c (expand_call_mem_ref): New function.
10128 (expand_mask_load_optab_fn): Use it.
10129 (expand_mask_store_optab_fn): Likewise.
10130
10131 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10132 Alan Hayward <alan.hayward@arm.com>
10133 David Sherwood <david.sherwood@arm.com>
10134
10135 * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
10136 (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
10137 (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
10138 (cond_umax@var{mode}): Document.
10139 * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
10140 (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
10141 (cond_umin_optab, cond_umax_optab): New optabs.
10142 * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
10143 (COND_IOR, COND_XOR): New internal functions.
10144 * internal-fn.h (get_conditional_internal_fn): Declare.
10145 * internal-fn.c (cond_binary_direct): New macro.
10146 (expand_cond_binary_optab_fn): Likewise.
10147 (direct_cond_binary_optab_supported_p): Likewise.
10148 (get_conditional_internal_fn): New function.
10149 * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
10150 Cope with reduction statements that are vectorized as calls rather
10151 than assignments.
10152 * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
10153 * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
10154 (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
10155 (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
10156 (UNSPEC_COND_EOR): New unspecs.
10157 (optab): Add mappings for them.
10158 (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
10159 (sve_int_op, sve_fp_op): New int attributes.
10160
10161 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10162 Alan Hayward <alan.hayward@arm.com>
10163 David Sherwood <david.sherwood@arm.com>
10164
10165 * optabs.def (while_ult_optab): New optab.
10166 * doc/md.texi (while_ult@var{m}@var{n}): Document.
10167 * internal-fn.def (WHILE_ULT): New internal function.
10168 * internal-fn.h (direct_internal_fn_supported_p): New override
10169 that takes two types as argument.
10170 * internal-fn.c (while_direct): New macro.
10171 (expand_while_optab_fn): New function.
10172 (convert_optab_supported_p): Likewise.
10173 (direct_while_optab_supported_p): New macro.
10174 * wide-int.h (wi::udiv_ceil): New function.
10175 * tree-vectorizer.h (rgroup_masks): New structure.
10176 (vec_loop_masks): New typedef.
10177 (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
10178 and fully_masked_p.
10179 (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
10180 (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
10181 (vect_max_vf): New function.
10182 (slpeel_make_loop_iterate_ntimes): Delete.
10183 (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
10184 (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
10185 (vect_record_loop_mask, vect_get_loop_mask): Likewise.
10186 * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
10187 internal-fn.h, stor-layout.h and optabs-query.h.
10188 (vect_set_loop_mask): New function.
10189 (add_preheader_seq): Likewise.
10190 (add_header_seq): Likewise.
10191 (interleave_supported_p): Likewise.
10192 (vect_maybe_permute_loop_masks): Likewise.
10193 (vect_set_loop_masks_directly): Likewise.
10194 (vect_set_loop_condition_masked): Likewise.
10195 (vect_set_loop_condition_unmasked): New function, split out from
10196 slpeel_make_loop_iterate_ntimes.
10197 (slpeel_make_loop_iterate_ntimes): Rename to..
10198 (vect_set_loop_condition): ...this. Use vect_set_loop_condition_masked
10199 for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
10200 (vect_do_peeling): Update call accordingly.
10201 (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
10202 loops.
10203 * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
10204 mask_compare_type, can_fully_mask_p and fully_masked_p.
10205 (release_vec_loop_masks): New function.
10206 (_loop_vec_info): Use it to free the loop masks.
10207 (can_produce_all_loop_masks_p): New function.
10208 (vect_get_max_nscalars_per_iter): Likewise.
10209 (vect_verify_full_masking): Likewise.
10210 (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
10211 retries, and free the mask rgroups before retrying. Check loop-wide
10212 reasons for disallowing fully-masked loops. Make the final decision
10213 about whether use a fully-masked loop or not.
10214 (vect_estimate_min_profitable_iters): Do not assume that peeling
10215 for the number of iterations will be needed for fully-masked loops.
10216 (vectorizable_reduction): Disable fully-masked loops.
10217 (vectorizable_live_operation): Likewise.
10218 (vect_halve_mask_nunits): New function.
10219 (vect_double_mask_nunits): Likewise.
10220 (vect_record_loop_mask): Likewise.
10221 (vect_get_loop_mask): Likewise.
10222 (vect_transform_loop): Handle the case in which the final loop
10223 iteration might handle a partial vector. Call vect_set_loop_condition
10224 instead of slpeel_make_loop_iterate_ntimes.
10225 * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
10226 (check_load_store_masking): New function.
10227 (prepare_load_store_mask): Likewise.
10228 (vectorizable_store): Handle fully-masked loops.
10229 (vectorizable_load): Likewise.
10230 (supportable_widening_operation): Use vect_halve_mask_nunits for
10231 booleans.
10232 (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
10233 (vect_gen_while): New function.
10234 * config/aarch64/aarch64.md (umax<mode>3): New expander.
10235 (aarch64_uqdec<mode>): New insn.
10236
10237 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10238 Alan Hayward <alan.hayward@arm.com>
10239 David Sherwood <david.sherwood@arm.com>
10240
10241 * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
10242 (reduc_xor_scal_optab): New optabs.
10243 * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
10244 (reduc_xor_scal_@var{m}): Document.
10245 * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
10246 * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
10247 internal functions.
10248 * fold-const-call.c (fold_const_call): Handle them.
10249 * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
10250 internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
10251 * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
10252 (*reduc_<bit_reduc>_scal_<mode>): New patterns.
10253 * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
10254 (UNSPEC_XORV): New unspecs.
10255 (optab): Add entries for them.
10256 (BITWISEV): New int iterator.
10257 (bit_reduc_op): New int attributes.
10258
10259 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10260 Alan Hayward <alan.hayward@arm.com>
10261 David Sherwood <david.sherwood@arm.com>
10262
10263 * doc/md.texi (vec_shl_insert_@var{m}): New optab.
10264 * internal-fn.def (VEC_SHL_INSERT): New internal function.
10265 * optabs.def (vec_shl_insert_optab): New optab.
10266 * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
10267 (duplicate_and_interleave): Likewise.
10268 * tree-vect-loop.c: Include internal-fn.h.
10269 (neutral_op_for_slp_reduction): New function, split out from
10270 get_initial_defs_for_reduction.
10271 (get_initial_def_for_reduction): Handle option 2 for variable-length
10272 vectors by loading the neutral value into a vector and then shifting
10273 the initial value into element 0.
10274 (get_initial_defs_for_reduction): Replace the code argument with
10275 the neutral value calculated by neutral_op_for_slp_reduction.
10276 Use gimple_build_vector for constant-length vectors.
10277 Use IFN_VEC_SHL_INSERT for variable-length vectors if all
10278 but the first group_size elements have a neutral value.
10279 Use duplicate_and_interleave otherwise.
10280 (vect_create_epilog_for_reduction): Take a neutral_op parameter.
10281 Update call to get_initial_defs_for_reduction. Handle SLP
10282 reductions for variable-length vectors by creating one vector
10283 result for each scalar result, with the elements associated
10284 with other scalar results stubbed out with the neutral value.
10285 (vectorizable_reduction): Call neutral_op_for_slp_reduction.
10286 Require IFN_VEC_SHL_INSERT for double reductions on
10287 variable-length vectors, or SLP reductions that have
10288 a neutral value. Require can_duplicate_and_interleave_p
10289 support for variable-length unchained SLP reductions if there
10290 is no neutral value, such as for MIN/MAX reductions. Also require
10291 the number of vector elements to be a multiple of the number of
10292 SLP statements when doing variable-length unchained SLP reductions.
10293 Update call to vect_create_epilog_for_reduction.
10294 * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
10295 and remove initial values.
10296 (duplicate_and_interleave): Make public.
10297 * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
10298 * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
10299
10300 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10301 Alan Hayward <alan.hayward@arm.com>
10302 David Sherwood <david.sherwood@arm.com>
10303
10304 * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
10305 (can_duplicate_and_interleave_p): New function.
10306 (vect_get_and_check_slp_defs): Take the vector of statements
10307 rather than just the current one. Remove excess parentheses.
10308 Restriction rejectinon of vect_constant_def and vect_external_def
10309 for variable-length vectors to boolean types, or types for which
10310 can_duplicate_and_interleave_p is false.
10311 (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
10312 (duplicate_and_interleave): New function.
10313 (vect_get_constant_vectors): Use gimple_build_vector for
10314 constant-length vectors and suitable variable-length constant
10315 vectors. Use duplicate_and_interleave for other variable-length
10316 vectors. Don't defer the update when inserting new statements.
10317
10318 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10319 Alan Hayward <alan.hayward@arm.com>
10320 David Sherwood <david.sherwood@arm.com>
10321
10322 * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
10323 min_profitable_iters doesn't go negative.
10324
10325 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10326 Alan Hayward <alan.hayward@arm.com>
10327 David Sherwood <david.sherwood@arm.com>
10328
10329 * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
10330 (vec_mask_store_lanes@var{m}@var{n}): Likewise.
10331 * optabs.def (vec_mask_load_lanes_optab): New optab.
10332 (vec_mask_store_lanes_optab): Likewise.
10333 * internal-fn.def (MASK_LOAD_LANES): New internal function.
10334 (MASK_STORE_LANES): Likewise.
10335 * internal-fn.c (mask_load_lanes_direct): New macro.
10336 (mask_store_lanes_direct): Likewise.
10337 (expand_mask_load_optab_fn): Handle masked operations.
10338 (expand_mask_load_lanes_optab_fn): New macro.
10339 (expand_mask_store_optab_fn): Handle masked operations.
10340 (expand_mask_store_lanes_optab_fn): New macro.
10341 (direct_mask_load_lanes_optab_supported_p): Likewise.
10342 (direct_mask_store_lanes_optab_supported_p): Likewise.
10343 * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
10344 parameter.
10345 (vect_load_lanes_supported): Likewise.
10346 * tree-vect-data-refs.c (strip_conversion): New function.
10347 (can_group_stmts_p): Likewise.
10348 (vect_analyze_data_ref_accesses): Use it instead of checking
10349 for a pair of assignments.
10350 (vect_store_lanes_supported): Take a masked_p parameter.
10351 (vect_load_lanes_supported): Likewise.
10352 * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
10353 vect_store_lanes_supported and vect_load_lanes_supported.
10354 * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
10355 * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
10356 parameter. Don't allow gaps for masked accesses.
10357 Use vect_get_store_rhs. Update calls to vect_store_lanes_supported
10358 and vect_load_lanes_supported.
10359 (get_load_store_type): Take a masked_p parameter and update
10360 call to get_group_load_store_type.
10361 (vectorizable_store): Update call to get_load_store_type.
10362 Handle IFN_MASK_STORE_LANES.
10363 (vectorizable_load): Update call to get_load_store_type.
10364 Handle IFN_MASK_LOAD_LANES.
10365
10366 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10367 Alan Hayward <alan.hayward@arm.com>
10368 David Sherwood <david.sherwood@arm.com>
10369
10370 * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
10371 modes for SVE.
10372 * config/aarch64/aarch64-protos.h
10373 (aarch64_sve_struct_memory_operand_p): Declare.
10374 * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
10375 (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
10376 (VPRED, vpred): Handle SVE structure modes.
10377 * config/aarch64/constraints.md (Utx): New constraint.
10378 * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
10379 (aarch64_sve_struct_nonimmediate_operand): New predicates.
10380 * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
10381 * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
10382 (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
10383 structure modes. Split into pieces after RA.
10384 (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
10385 (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
10386 New patterns.
10387 * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
10388 SVE structure modes.
10389 (aarch64_classify_address): Likewise.
10390 (sizetochar): Move earlier in file.
10391 (aarch64_print_operand): Handle SVE register lists.
10392 (aarch64_array_mode): New function.
10393 (aarch64_sve_struct_memory_operand_p): Likewise.
10394 (TARGET_ARRAY_MODE): Redefine.
10395
10396 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10397 Alan Hayward <alan.hayward@arm.com>
10398 David Sherwood <david.sherwood@arm.com>
10399
10400 * target.def (array_mode): New target hook.
10401 * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
10402 * doc/tm.texi: Regenerate.
10403 * hooks.h (hook_optmode_mode_uhwi_none): Declare.
10404 * hooks.c (hook_optmode_mode_uhwi_none): New function.
10405 * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
10406 targetm.array_mode.
10407 * stor-layout.c (mode_for_array): Likewise. Support polynomial
10408 type sizes.
10409
10410 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10411 Alan Hayward <alan.hayward@arm.com>
10412 David Sherwood <david.sherwood@arm.com>
10413
10414 * fold-const.c (fold_binary_loc): Check the argument types
10415 rather than the result type when testing for a vector operation.
10416
10417 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10418
10419 * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
10420 * doc/tm.texi: Regenerate.
10421
10422 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10423 Alan Hayward <alan.hayward@arm.com>
10424 David Sherwood <david.sherwood@arm.com>
10425
10426 * doc/invoke.texi (-msve-vector-bits=): Document new option.
10427 (sve): Document new AArch64 extension.
10428 * doc/md.texi (w): Extend the description of the AArch64
10429 constraint to include SVE vectors.
10430 (Upl, Upa): Document new AArch64 predicate constraints.
10431 * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
10432 enum.
10433 * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
10434 (msve-vector-bits=): New option.
10435 * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
10436 SVE when these are disabled.
10437 (sve): New extension.
10438 * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
10439 modes. Adjust their number of units based on aarch64_sve_vg.
10440 (MAX_BITSIZE_MODE_ANY_MODE): Define.
10441 * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
10442 aarch64_addr_query_type.
10443 (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
10444 (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
10445 (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
10446 (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
10447 (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
10448 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
10449 (aarch64_simd_imm_zero_p): Delete.
10450 (aarch64_check_zero_based_sve_index_immediate): Declare.
10451 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
10452 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
10453 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
10454 (aarch64_sve_float_mul_immediate_p): Likewise.
10455 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
10456 rather than an rtx.
10457 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
10458 (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
10459 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
10460 (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
10461 (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
10462 (aarch64_regmode_natural_size): Likewise.
10463 * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
10464 (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
10465 left one place.
10466 (AARCH64_ISA_SVE, TARGET_SVE): New macros.
10467 (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
10468 for VG and the SVE predicate registers.
10469 (V_ALIASES): Add a "z"-prefixed alias.
10470 (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
10471 (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
10472 (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
10473 (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
10474 (REG_CLASS_NAMES): Add entries for them.
10475 (REG_CLASS_CONTENTS): Likewise. Update ALL_REGS to include VG
10476 and the predicate registers.
10477 (aarch64_sve_vg): Declare.
10478 (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
10479 (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
10480 (REGMODE_NATURAL_SIZE): Define.
10481 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
10482 SVE macros.
10483 * config/aarch64/aarch64.c: Include cfgrtl.h.
10484 (simd_immediate_info): Add a constructor for series vectors,
10485 and an associated step field.
10486 (aarch64_sve_vg): New variable.
10487 (aarch64_dbx_register_number): Handle VG and the predicate registers.
10488 (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
10489 (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
10490 (VEC_ANY_DATA, VEC_STRUCT): New constants.
10491 (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
10492 (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
10493 (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
10494 (aarch64_get_mask_mode): New functions.
10495 (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
10496 and FP_LO_REGS. Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
10497 (aarch64_hard_regno_mode_ok): Handle VG. Also handle the SVE
10498 predicate modes and predicate registers. Explicitly restrict
10499 GPRs to modes of 16 bytes or smaller. Only allow FP registers
10500 to store a vector mode if it is recognized by
10501 aarch64_classify_vector_mode.
10502 (aarch64_regmode_natural_size): New function.
10503 (aarch64_hard_regno_caller_save_mode): Return the original mode
10504 for predicates.
10505 (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
10506 (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
10507 (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
10508 (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
10509 functions.
10510 (aarch64_add_offset): Add a temp2 parameter. Assert that temp1
10511 does not overlap dest if the function is frame-related. Handle
10512 SVE constants.
10513 (aarch64_split_add_offset): New function.
10514 (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
10515 them aarch64_add_offset.
10516 (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
10517 and update call to aarch64_sub_sp.
10518 (aarch64_add_cfa_expression): New function.
10519 (aarch64_expand_prologue): Pass extra temporary registers to the
10520 functions above. Handle the case in which we need to emit new
10521 DW_CFA_expressions for registers that were originally saved
10522 relative to the stack pointer, but now have to be expressed
10523 relative to the frame pointer.
10524 (aarch64_output_mi_thunk): Pass extra temporary registers to the
10525 functions above.
10526 (aarch64_expand_epilogue): Likewise. Prevent inheritance of
10527 IP0 and IP1 values for SVE frames.
10528 (aarch64_expand_vec_series): New function.
10529 (aarch64_expand_sve_widened_duplicate): Likewise.
10530 (aarch64_expand_sve_const_vector): Likewise.
10531 (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
10532 Handle SVE constants. Use emit_move_insn to move a force_const_mem
10533 into the register, rather than emitting a SET directly.
10534 (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
10535 (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
10536 (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
10537 (offset_9bit_signed_scaled_p): New functions.
10538 (aarch64_replicate_bitmask_imm): New function.
10539 (aarch64_bitmask_imm): Use it.
10540 (aarch64_cannot_force_const_mem): Reject expressions involving
10541 a CONST_POLY_INT. Update call to aarch64_classify_symbol.
10542 (aarch64_classify_index): Handle SVE indices, by requiring
10543 a plain register index with a scale that matches the element size.
10544 (aarch64_classify_address): Handle SVE addresses. Assert that
10545 the mode of the address is VOIDmode or an integer mode.
10546 Update call to aarch64_classify_symbol.
10547 (aarch64_classify_symbolic_expression): Update call to
10548 aarch64_classify_symbol.
10549 (aarch64_const_vec_all_in_range_p): New function.
10550 (aarch64_print_vector_float_operand): Likewise.
10551 (aarch64_print_operand): Handle 'N' and 'C'. Use "zN" rather than
10552 "vN" for FP registers with SVE modes. Handle (const ...) vectors
10553 and the FP immediates 1.0 and 0.5.
10554 (aarch64_print_address_internal): Handle SVE addresses.
10555 (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
10556 (aarch64_regno_regclass): Handle predicate registers.
10557 (aarch64_secondary_reload): Handle big-endian reloads of SVE
10558 data modes.
10559 (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
10560 (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
10561 (aarch64_convert_sve_vector_bits): New function.
10562 (aarch64_override_options): Use it to handle -msve-vector-bits=.
10563 (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
10564 rather than an rtx.
10565 (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
10566 Handle SVE vector and predicate modes. Accept VL-based constants
10567 that need only one temporary register, and VL offsets that require
10568 no temporary registers.
10569 (aarch64_conditional_register_usage): Mark the predicate registers
10570 as fixed if SVE isn't available.
10571 (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
10572 Return true for SVE vector and predicate modes.
10573 (aarch64_simd_container_mode): Take the number of bits as a poly_int64
10574 rather than an unsigned int. Handle SVE modes.
10575 (aarch64_preferred_simd_mode): Update call accordingly. Handle
10576 SVE modes.
10577 (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
10578 if SVE is enabled.
10579 (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
10580 (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
10581 (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
10582 (aarch64_sve_float_mul_immediate_p): New functions.
10583 (aarch64_sve_valid_immediate): New function.
10584 (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
10585 Explicitly reject structure modes. Check for INDEX constants.
10586 Handle PTRUE and PFALSE constants.
10587 (aarch64_check_zero_based_sve_index_immediate): New function.
10588 (aarch64_simd_imm_zero_p): Delete.
10589 (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
10590 vector modes. Accept constants in the range of CNT[BHWD].
10591 (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
10592 ask for an Advanced SIMD mode.
10593 (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
10594 (aarch64_simd_vector_alignment): Handle SVE predicates.
10595 (aarch64_vectorize_preferred_vector_alignment): New function.
10596 (aarch64_simd_vector_alignment_reachable): Use it instead of
10597 the vector size.
10598 (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
10599 (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
10600 functions.
10601 (MAX_VECT_LEN): Delete.
10602 (expand_vec_perm_d): Add a vec_flags field.
10603 (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
10604 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
10605 (aarch64_evpc_ext): Don't apply a big-endian lane correction
10606 for SVE modes.
10607 (aarch64_evpc_rev): Rename to...
10608 (aarch64_evpc_rev_local): ...this. Use a predicated operation for SVE.
10609 (aarch64_evpc_rev_global): New function.
10610 (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
10611 (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
10612 MAX_VECT_LEN.
10613 (aarch64_evpc_sve_tbl): New function.
10614 (aarch64_expand_vec_perm_const_1): Update after rename of
10615 aarch64_evpc_rev. Handle SVE permutes too, trying
10616 aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
10617 than aarch64_evpc_tbl.
10618 (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
10619 (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
10620 (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
10621 (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
10622 (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
10623 (aarch64_expand_sve_vcond): New functions.
10624 (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
10625 of aarch64_vector_mode_p.
10626 (aarch64_dwarf_poly_indeterminate_value): New function.
10627 (aarch64_compute_pressure_classes): Likewise.
10628 (aarch64_can_change_mode_class): Likewise.
10629 (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
10630 (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
10631 (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
10632 (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
10633 (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
10634 (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
10635 * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
10636 (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
10637 constraints.
10638 (Dn, Dl, Dr): Accept const as well as const_vector.
10639 (Dz): Likewise. Compare against CONST0_RTX.
10640 * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
10641 of "vector" where appropriate.
10642 (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
10643 (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
10644 (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
10645 (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
10646 (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
10647 (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
10648 (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
10649 (v_int_equiv): Extend to SVE modes.
10650 (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
10651 mode attributes.
10652 (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
10653 (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
10654 (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
10655 (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
10656 (SVE_COND_FP_CMP): New int iterators.
10657 (perm_hilo): Handle the new unpack unspecs.
10658 (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
10659 attributes.
10660 * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
10661 (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
10662 (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
10663 (aarch64_equality_operator, aarch64_constant_vector_operand)
10664 (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
10665 (aarch64_sve_nonimmediate_operand): Likewise.
10666 (aarch64_sve_general_operand): Likewise.
10667 (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
10668 (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
10669 (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
10670 (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
10671 (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
10672 (aarch64_sve_float_arith_immediate): Likewise.
10673 (aarch64_sve_float_arith_with_sub_immediate): Likewise.
10674 (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
10675 (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
10676 (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
10677 (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
10678 (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
10679 (aarch64_sve_float_arith_operand): Likewise.
10680 (aarch64_sve_float_arith_with_sub_operand): Likewise.
10681 (aarch64_sve_float_mul_operand): Likewise.
10682 (aarch64_sve_vec_perm_operand): Likewise.
10683 (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
10684 (aarch64_mov_operand): Accept const_poly_int and const_vector.
10685 (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
10686 as well as const_vector.
10687 (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
10688 in file. Use CONST0_RTX and CONSTM1_RTX.
10689 (aarch64_simd_or_scalar_imm_zero): Likewise. Add match_codes.
10690 (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
10691 Use aarch64_simd_imm_zero.
10692 * config/aarch64/aarch64-sve.md: New file.
10693 * config/aarch64/aarch64.md: Include it.
10694 (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
10695 (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
10696 (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
10697 (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
10698 (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
10699 (sve): New attribute.
10700 (enabled): Disable instructions with the sve attribute unless
10701 TARGET_SVE.
10702 (movqi, movhi): Pass CONST_POLY_INT operaneds through
10703 aarch64_expand_mov_immediate.
10704 (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
10705 CNT[BHSD] immediates.
10706 (movti): Split CONST_POLY_INT moves into two halves.
10707 (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
10708 Split additions that need a temporary here if the destination
10709 is the stack pointer.
10710 (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
10711 (*add<mode>3_poly_1): New instruction.
10712 (set_clobber_cc): New expander.
10713
10714 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10715
10716 * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
10717 parameter and use it instead of GET_MODE_SIZE (innermode). Use
10718 inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
10719 Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
10720 GET_MODE_NUNITS (innermode). Also add a first_elem parameter.
10721 Change innermode from fixed_mode_size to machine_mode.
10722 (simplify_subreg): Update call accordingly. Handle a constant-sized
10723 subreg of a variable-length CONST_VECTOR.
10724
10725 2018-01-13 Richard Sandiford <richard.sandiford@linaro.org>
10726 Alan Hayward <alan.hayward@arm.com>
10727 David Sherwood <david.sherwood@arm.com>
10728
10729 * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
10730 (add_offset_to_base): New function, split out from...
10731 (create_mem_ref): ...here. When handling a scale other than 1,
10732 check first whether the address is valid without the offset.
10733 Add it into the base if so, leaving the index and scale as-is.
10734
10735 2018-01-12 Jakub Jelinek <jakub@redhat.com>
10736
10737 PR c++/83778
10738 * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
10739 fold_for_warn before checking if arg2 is INTEGER_CST.
10740
10741 2018-01-12 Segher Boessenkool <segher@kernel.crashing.org>
10742
10743 * config/rs6000/predicates.md (load_multiple_operation): Delete.
10744 (store_multiple_operation): Delete.
10745 * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
10746 * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
10747 * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
10748 guarded by TARGET_STRING.
10749 (rs6000_output_load_multiple): Delete.
10750 * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
10751 OPTION_MASK_STRING / TARGET_STRING handling.
10752 (print_operand) <'N', 'O'>: Add comment that these are unused now.
10753 (const rs6000_opt_masks) <"string">: Change mask to 0.
10754 * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
10755 (MASK_STRING): Delete.
10756 * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
10757 parts. Simplify.
10758 (load_multiple): Delete.
10759 (*ldmsi8): Delete.
10760 (*ldmsi7): Delete.
10761 (*ldmsi6): Delete.
10762 (*ldmsi5): Delete.
10763 (*ldmsi4): Delete.
10764 (*ldmsi3): Delete.
10765 (store_multiple): Delete.
10766 (*stmsi8): Delete.
10767 (*stmsi7): Delete.
10768 (*stmsi6): Delete.
10769 (*stmsi5): Delete.
10770 (*stmsi4): Delete.
10771 (*stmsi3): Delete.
10772 (movmemsi_8reg): Delete.
10773 (corresponding unnamed define_insn): Delete.
10774 (movmemsi_6reg): Delete.
10775 (corresponding unnamed define_insn): Delete.
10776 (movmemsi_4reg): Delete.
10777 (corresponding unnamed define_insn): Delete.
10778 (movmemsi_2reg): Delete.
10779 (corresponding unnamed define_insn): Delete.
10780 (movmemsi_1reg): Delete.
10781 (corresponding unnamed define_insn): Delete.
10782 * config/rs6000/rs6000.opt (mno-string): New.
10783 (mstring): Replace by deprecation warning stub.
10784 * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
10785
10786 2018-01-12 Jakub Jelinek <jakub@redhat.com>
10787
10788 * regrename.c (regrename_do_replace): If replacing the same
10789 reg multiple times, try to reuse last created gen_raw_REG.
10790
10791 PR debug/81155
10792 * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
10793 main to workaround a bug in GDB.
10794
10795 2018-01-12 Tom de Vries <tom@codesourcery.com>
10796
10797 PR target/83737
10798 * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
10799
10800 2018-01-12 Vladimir Makarov <vmakarov@redhat.com>
10801
10802 PR rtl-optimization/80481
10803 * ira-color.c (get_cap_member): New function.
10804 (allocnos_conflict_by_live_ranges_p): Use it.
10805 (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
10806 (setup_slot_coalesced_allocno_live_ranges): Ditto.
10807
10808 2018-01-12 Uros Bizjak <ubizjak@gmail.com>
10809
10810 PR target/83628
10811 * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
10812 (*saddl_se_1): Ditto.
10813 (*ssubsi_1): Ditto.
10814 (*ssubl_se_1): Ditto.
10815
10816 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
10817
10818 * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
10819 rather than wi::to_widest for DR_INITs.
10820 * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
10821 wi::to_poly_offset rather than wi::to_offset for DR_INIT.
10822 (vect_analyze_data_ref_accesses): Require both DR_INITs to be
10823 INTEGER_CSTs.
10824 (vect_analyze_group_access_1): Note that here.
10825
10826 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
10827
10828 * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
10829 polynomial type sizes.
10830
10831 2018-01-12 Richard Sandiford <richard.sandiford@linaro.org>
10832
10833 * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
10834 poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
10835 (gimple_add_tmp_var): Likewise.
10836
10837 2018-01-12 Martin Liska <mliska@suse.cz>
10838
10839 * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
10840 (gimple_alloc_sizes): Likewise.
10841 (dump_gimple_statistics): Use PRIu64 in printf format.
10842 * gimple.h: Change uint64_t to int.
10843
10844 2018-01-12 Martin Liska <mliska@suse.cz>
10845
10846 * tree-core.h: Use uint64_t instead of int.
10847 * tree.c (tree_node_counts): Likewise.
10848 (tree_node_sizes): Likewise.
10849 (dump_tree_statistics): Use PRIu64 in printf format.
10850
10851 2018-01-12 Martin Liska <mliska@suse.cz>
10852
10853 * Makefile.in: As qsort_chk is implemented in vec.c, add
10854 vec.o to linkage of gencfn-macros.
10855 * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
10856 passing the info to record_node_allocation_statistics.
10857 (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
10858 and pass the info.
10859 * ggc-common.c (struct ggc_usage): Add operator== and use
10860 it in operator< and compare function.
10861 * mem-stats.h (struct mem_usage): Likewise.
10862 * vec.c (struct vec_usage): Remove operator< and compare
10863 function. Can be simply inherited.
10864
10865 2018-01-12 Martin Jambor <mjambor@suse.cz>
10866
10867 PR target/81616
10868 * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
10869 * tree-ssa-math-opts.c: Include domwalk.h.
10870 (convert_mult_to_fma_1): New function.
10871 (fma_transformation_info): New type.
10872 (fma_deferring_state): Likewise.
10873 (cancel_fma_deferring): New function.
10874 (result_of_phi): Likewise.
10875 (last_fma_candidate_feeds_initial_phi): Likewise.
10876 (convert_mult_to_fma): Added deferring logic, split actual
10877 transformation to convert_mult_to_fma_1.
10878 (math_opts_dom_walker): New type.
10879 (math_opts_dom_walker::after_dom_children): New method, body moved
10880 here from pass_optimize_widening_mul::execute, added deferring logic
10881 bits.
10882 (pass_optimize_widening_mul::execute): Moved most of code to
10883 math_opts_dom_walker::after_dom_children.
10884 * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
10885 * config/i386/i386.c (ix86_option_override_internal): Added
10886 maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
10887
10888 2018-01-12 Richard Biener <rguenther@suse.de>
10889
10890 PR debug/83157
10891 * dwarf2out.c (gen_variable_die): Do not reset old_die for
10892 inline instance vars.
10893
10894 2018-01-12 Oleg Endo <olegendo@gcc.gnu.org>
10895
10896 PR target/81819
10897 * config/rx/rx.c (rx_is_restricted_memory_address):
10898 Handle SUBREG case.
10899
10900 2018-01-12 Richard Biener <rguenther@suse.de>
10901
10902 PR tree-optimization/80846
10903 * target.def (split_reduction): New target hook.
10904 * targhooks.c (default_split_reduction): New function.
10905 * targhooks.h (default_split_reduction): Declare.
10906 * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
10907 target requests first reduce vectors by combining low and high
10908 parts.
10909 * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
10910 (get_vectype_for_scalar_type_and_size): Export.
10911 * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
10912 * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
10913 * doc/tm.texi: Regenerate.
10914 * config/i386/i386.c (ix86_split_reduction): Implement
10915 TARGET_VECTORIZE_SPLIT_REDUCTION.
10916
10917 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
10918
10919 PR target/83368
10920 * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
10921 in PIC mode except for TARGET_VXWORKS_RTP.
10922 * config/sparc/sparc.c: Include cfgrtl.h.
10923 (TARGET_INIT_PIC_REG): Define.
10924 (TARGET_USE_PSEUDO_PIC_REG): Likewise.
10925 (sparc_pic_register_p): New predicate.
10926 (sparc_legitimate_address_p): Use it.
10927 (sparc_legitimize_pic_address): Likewise.
10928 (sparc_delegitimize_address): Likewise.
10929 (sparc_mode_dependent_address_p): Likewise.
10930 (gen_load_pcrel_sym): Remove 4th parameter.
10931 (load_got_register): Adjust call to above. Remove obsolete stuff.
10932 (sparc_expand_prologue): Do not call load_got_register here.
10933 (sparc_flat_expand_prologue): Likewise.
10934 (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
10935 (sparc_use_pseudo_pic_reg): New function.
10936 (sparc_init_pic_reg): Likewise.
10937 * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
10938 (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
10939
10940 2018-01-12 Christophe Lyon <christophe.lyon@linaro.org>
10941
10942 * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
10943 Add item for branch_cost.
10944
10945 2018-01-12 Eric Botcazou <ebotcazou@adacore.com>
10946
10947 PR rtl-optimization/83565
10948 * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
10949 not extend the result to a larger mode for rotate operations.
10950 (num_sign_bit_copies1): Likewise.
10951
10952 2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
10953
10954 PR target/40411
10955 * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
10956 -symbolic.
10957 Use values-Xc.o for -pedantic.
10958 Link with values-xpg4.o for C90, values-xpg6.o otherwise.
10959
10960 2018-01-12 Martin Liska <mliska@suse.cz>
10961
10962 PR ipa/83054
10963 * ipa-devirt.c (final_warning_record::grow_type_warnings):
10964 New function.
10965 (possible_polymorphic_call_targets): Use it.
10966 (ipa_devirt): Likewise.
10967
10968 2018-01-12 Martin Liska <mliska@suse.cz>
10969
10970 * profile-count.h (enum profile_quality): Use 0 as invalid
10971 enum value of profile_quality.
10972
10973 2018-01-12 Chung-Ju Wu <jasonwucj@gmail.com>
10974
10975 * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
10976 -mext-string options.
10977
10978 2018-01-12 Richard Biener <rguenther@suse.de>
10979
10980 * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
10981 DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
10982 * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
10983 Likewise.
10984 * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
10985
10986 2018-01-11 Michael Meissner <meissner@linux.vnet.ibm.com>
10987
10988 * configure.ac (--with-long-double-format): Add support for the
10989 configuration option to change the default long double format on
10990 PowerPC systems.
10991 * config.gcc (powerpc*-linux*-*): Likewise.
10992 * configure: Regenerate.
10993 * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
10994 double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
10995 used without modification.
10996
10997 2018-01-11 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
10998
10999 * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
11000 (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
11001 * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
11002 MISC_BUILTIN_SPEC_BARRIER.
11003 (rs6000_init_builtins): Likewise.
11004 * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
11005 enum value.
11006 (speculation_barrier): New define_insn.
11007 * doc/extend.texi: Document __builtin_speculation_barrier.
11008
11009 2018-01-11 Jakub Jelinek <jakub@redhat.com>
11010
11011 PR target/83203
11012 * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
11013 is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
11014 * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
11015 iterators.
11016 (ssescalarmodesuffix): Add 512-bit vectors. Use "d" or "q" for
11017 integral modes instead of "ss" and "sd".
11018 (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
11019 vectors with 32-bit and 64-bit elements.
11020 (vecdupssescalarmodesuffix): New mode attribute.
11021 (vec_dup<mode>): Use it.
11022
11023 2018-01-11 H.J. Lu <hongjiu.lu@intel.com>
11024
11025 PR target/83330
11026 * config/i386/i386.c (ix86_compute_frame_layout): Align stack
11027 frame if argument is passed on stack.
11028
11029 2018-01-11 Jakub Jelinek <jakub@redhat.com>
11030
11031 PR target/82682
11032 * ree.c (combine_reaching_defs): Optimize also
11033 reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
11034 reg2=any_extend(exp); reg1=reg2;, formatting fix.
11035
11036 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
11037
11038 PR middle-end/83189
11039 * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
11040
11041 2018-01-11 Jan Hubicka <hubicka@ucw.cz>
11042
11043 PR middle-end/83718
11044 * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
11045 after they are computed.
11046
11047 2018-01-11 Bin Cheng <bin.cheng@arm.com>
11048
11049 PR tree-optimization/83695
11050 * gimple-loop-linterchange.cc
11051 (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
11052 reset cached scev information after interchange.
11053 (pass_linterchange::execute): Remove call to scev_reset_htab.
11054
11055 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11056
11057 * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
11058 vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
11059 vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
11060 vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
11061 vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
11062 vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
11063 * config/arm/arm_neon_builtins.def (vfmal_lane_low,
11064 vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
11065 vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
11066 vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
11067 vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
11068 * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
11069 (V_lane_reg): Likewise.
11070 * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
11071 New define_expand.
11072 (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
11073 (vfmal_lane_low<mode>_intrinsic,
11074 vfmal_lane_low<vfmlsel2><mode>_intrinsic,
11075 vfmal_lane_high<vfmlsel2><mode>_intrinsic,
11076 vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
11077 vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
11078 vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
11079 vfmsl_lane_high<mode>_intrinsic): New define_insns.
11080
11081 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11082
11083 * config/arm/arm-cpus.in (fp16fml): New feature.
11084 (ALL_SIMD): Add fp16fml.
11085 (armv8.2-a): Add fp16fml as an option.
11086 (armv8.3-a): Likewise.
11087 (armv8.4-a): Add fp16fml as part of fp16.
11088 * config/arm/arm.h (TARGET_FP16FML): Define.
11089 * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
11090 when appropriate.
11091 * config/arm/arm-modes.def (V2HF): Define.
11092 * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
11093 vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
11094 vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
11095 * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
11096 vfmsl_low, vfmsl_high): New set of builtins.
11097 * config/arm/iterators.md (PLUSMINUS): New code iterator.
11098 (vfml_op): New code attribute.
11099 (VFMLHALVES): New int iterator.
11100 (VFML, VFMLSEL): New mode attributes.
11101 (V_reg): Define mapping for V2HF.
11102 (V_hi, V_lo): New mode attributes.
11103 (VF_constraint): Likewise.
11104 (vfml_half, vfml_half_selector): New int attributes.
11105 * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
11106 define_expand.
11107 (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
11108 vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
11109 New define_insn.
11110 * config/arm/t-arm-elf (v8_fps): Add fp16fml.
11111 * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
11112 * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
11113 * doc/invoke.texi (ARM Options): Document fp16fml. Update armv8.4-a
11114 documentation.
11115 * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
11116 Document new effective target and option set.
11117
11118 2018-01-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11119
11120 * config/arm/arm-cpus.in (armv8_4): New feature.
11121 (ARMv8_4a): New fgroup.
11122 (armv8.4-a): New arch.
11123 * config/arm/arm-tables.opt: Regenerate.
11124 * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
11125 * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
11126 * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
11127 Add matching rules for -march=armv8.4-a and extensions.
11128 * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
11129
11130 2018-01-11 Oleg Endo <olegendo@gcc.gnu.org>
11131
11132 PR target/81821
11133 * config/rx/rx.md (BW): New mode attribute.
11134 (sync_lock_test_and_setsi): Add mode suffix to insn output.
11135
11136 2018-01-11 Richard Biener <rguenther@suse.de>
11137
11138 PR tree-optimization/83435
11139 * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
11140 * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
11141 * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
11142
11143 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11144 Alan Hayward <alan.hayward@arm.com>
11145 David Sherwood <david.sherwood@arm.com>
11146
11147 * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
11148 field.
11149 (aarch64_classify_address): Initialize it. Track polynomial offsets.
11150 (aarch64_print_address_internal): Use it to check for a zero offset.
11151
11152 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11153 Alan Hayward <alan.hayward@arm.com>
11154 David Sherwood <david.sherwood@arm.com>
11155
11156 * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
11157 * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
11158 Return a poly_int64 rather than a HOST_WIDE_INT.
11159 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
11160 rather than a HOST_WIDE_INT.
11161 * config/aarch64/aarch64.h (aarch64_frame): Protect with
11162 HAVE_POLY_INT_H rather than HOST_WIDE_INT. Change locals_offset,
11163 hard_fp_offset, frame_size, initial_adjust, callee_offset and
11164 final_offset from HOST_WIDE_INT to poly_int64.
11165 * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
11166 to_constant when getting the number of units in an Advanced SIMD
11167 mode.
11168 (aarch64_builtin_vectorized_function): Check for a constant number
11169 of units.
11170 * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
11171 GET_MODE_SIZE.
11172 (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
11173 attribute instead of GET_MODE_NUNITS.
11174 * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
11175 (aarch64_class_max_nregs): Use the constant_lowest_bound of the
11176 GET_MODE_SIZE for fixed-size registers.
11177 (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
11178 (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
11179 (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
11180 (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
11181 (aarch64_print_operand, aarch64_print_address_internal)
11182 (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
11183 (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
11184 (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
11185 Handle polynomial GET_MODE_SIZE.
11186 (aarch64_hard_regno_caller_save_mode): Likewise. Return modes
11187 wider than SImode without modification.
11188 (tls_symbolic_operand_type): Use strip_offset instead of split_const.
11189 (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
11190 (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
11191 passing and returning SVE modes.
11192 (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
11193 rather than GEN_INT.
11194 (aarch64_emit_probe_stack_range): Take the size as a poly_int64
11195 rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
11196 (aarch64_allocate_and_probe_stack_space): Likewise.
11197 (aarch64_layout_frame): Cope with polynomial offsets.
11198 (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
11199 start_offset as a poly_int64 rather than a HOST_WIDE_INT. Track
11200 polynomial offsets.
11201 (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
11202 (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
11203 poly_int64 rather than a HOST_WIDE_INT.
11204 (aarch64_get_separate_components, aarch64_process_components)
11205 (aarch64_expand_prologue, aarch64_expand_epilogue)
11206 (aarch64_use_return_insn_p): Handle polynomial frame offsets.
11207 (aarch64_anchor_offset): New function, split out from...
11208 (aarch64_legitimize_address): ...here.
11209 (aarch64_builtin_vectorization_cost): Handle polynomial
11210 TYPE_VECTOR_SUBPARTS.
11211 (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
11212 GET_MODE_NUNITS.
11213 (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
11214 number of elements from the PARALLEL rather than the mode.
11215 (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
11216 rather than GET_MODE_BITSIZE.
11217 (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
11218 (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
11219 (aarch64_expand_vec_perm_const_1): Handle polynomial
11220 d->perm.length () and d->perm elements.
11221 (aarch64_evpc_tbl): Likewise. Use nelt rather than GET_MODE_NUNITS.
11222 Apply to_constant to d->perm elements.
11223 (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
11224 polynomial CONST_VECTOR_NUNITS.
11225 (aarch64_move_pointer): Take amount as a poly_int64 rather
11226 than an int.
11227 (aarch64_progress_pointer): Avoid temporary variable.
11228 * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
11229 the mode attribute instead of GET_MODE.
11230
11231 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11232 Alan Hayward <alan.hayward@arm.com>
11233 David Sherwood <david.sherwood@arm.com>
11234
11235 * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
11236 x exists before using it.
11237 (aarch64_add_constant_internal): Rename to...
11238 (aarch64_add_offset_1): ...this. Replace regnum with separate
11239 src and dest rtxes. Handle the case in which they're different,
11240 including when the offset is zero. Replace scratchreg with an rtx.
11241 Use 2 additions if there is no spare register into which we can
11242 move a 16-bit constant.
11243 (aarch64_add_constant): Delete.
11244 (aarch64_add_offset): Replace reg with separate src and dest
11245 rtxes. Take a poly_int64 offset instead of a HOST_WIDE_INT.
11246 Use aarch64_add_offset_1.
11247 (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
11248 an rtx rather than an int. Take the delta as a poly_int64
11249 rather than a HOST_WIDE_INT. Use aarch64_add_offset.
11250 (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
11251 (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
11252 aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
11253 (aarch64_expand_epilogue): Update calls to aarch64_add_offset
11254 and aarch64_add_sp.
11255 (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
11256 aarch64_add_constant.
11257
11258 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11259
11260 * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
11261 Use scalar_float_mode.
11262
11263 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11264
11265 * config/aarch64/aarch64-simd.md
11266 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
11267 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
11268 (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
11269 (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
11270 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
11271 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
11272 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
11273 (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
11274 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
11275 (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
11276
11277 2018-01-11 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
11278
11279 PR target/83514
11280 * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
11281 targ_options->x_arm_arch_string is non NULL.
11282
11283 2018-01-11 Tamar Christina <tamar.christina@arm.com>
11284
11285 * config/aarch64/aarch64.h
11286 (AARCH64_FL_FOR_ARCH8_4): Add AARCH64_FL_DOTPROD.
11287
11288 2018-01-11 Sudakshina Das <sudi.das@arm.com>
11289
11290 PR target/82096
11291 * expmed.c (emit_store_flag_force): Swap if const op0
11292 and change VOIDmode to mode of op0.
11293
11294 2018-01-11 Richard Sandiford <richard.sandiford@linaro.org>
11295
11296 PR rtl-optimization/83761
11297 * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
11298 than bytes to mode_for_size.
11299
11300 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
11301
11302 PR middle-end/83189
11303 * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
11304 * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
11305 profile.
11306
11307 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
11308
11309 PR middle-end/83575
11310 * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
11311 when in layout mode.
11312 (cfg_layout_finalize): Do not verify cfg before we are out of layout.
11313 * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
11314 partition fixup.
11315
11316 2018-01-10 Michael Collison <michael.collison@arm.com>
11317
11318 * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
11319 * config/aarch64/aarch64-option-extension.def: Add
11320 AARCH64_OPT_EXTENSION of 'fp16fml'.
11321 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11322 (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
11323 * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
11324 * config/aarch64/constraints.md (Ui7): New constraint.
11325 * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
11326 (VFMLA_SEL_W): Ditto.
11327 (f16quad): Ditto.
11328 (f16mac1): Ditto.
11329 (VFMLA16_LOW): New int iterator.
11330 (VFMLA16_HIGH): Ditto.
11331 (UNSPEC_FMLAL): New unspec.
11332 (UNSPEC_FMLSL): Ditto.
11333 (UNSPEC_FMLAL2): Ditto.
11334 (UNSPEC_FMLSL2): Ditto.
11335 (f16mac): New code attribute.
11336 * config/aarch64/aarch64-simd-builtins.def
11337 (aarch64_fmlal_lowv2sf): Ditto.
11338 (aarch64_fmlsl_lowv2sf): Ditto.
11339 (aarch64_fmlalq_lowv4sf): Ditto.
11340 (aarch64_fmlslq_lowv4sf): Ditto.
11341 (aarch64_fmlal_highv2sf): Ditto.
11342 (aarch64_fmlsl_highv2sf): Ditto.
11343 (aarch64_fmlalq_highv4sf): Ditto.
11344 (aarch64_fmlslq_highv4sf): Ditto.
11345 (aarch64_fmlal_lane_lowv2sf): Ditto.
11346 (aarch64_fmlsl_lane_lowv2sf): Ditto.
11347 (aarch64_fmlal_laneq_lowv2sf): Ditto.
11348 (aarch64_fmlsl_laneq_lowv2sf): Ditto.
11349 (aarch64_fmlalq_lane_lowv4sf): Ditto.
11350 (aarch64_fmlsl_lane_lowv4sf): Ditto.
11351 (aarch64_fmlalq_laneq_lowv4sf): Ditto.
11352 (aarch64_fmlsl_laneq_lowv4sf): Ditto.
11353 (aarch64_fmlal_lane_highv2sf): Ditto.
11354 (aarch64_fmlsl_lane_highv2sf): Ditto.
11355 (aarch64_fmlal_laneq_highv2sf): Ditto.
11356 (aarch64_fmlsl_laneq_highv2sf): Ditto.
11357 (aarch64_fmlalq_lane_highv4sf): Ditto.
11358 (aarch64_fmlsl_lane_highv4sf): Ditto.
11359 (aarch64_fmlalq_laneq_highv4sf): Ditto.
11360 (aarch64_fmlsl_laneq_highv4sf): Ditto.
11361 * config/aarch64/aarch64-simd.md:
11362 (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
11363 (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
11364 (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
11365 (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
11366 (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
11367 (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
11368 (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
11369 (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
11370 (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
11371 (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
11372 (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
11373 (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
11374 (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
11375 (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
11376 (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
11377 (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
11378 (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
11379 (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
11380 (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
11381 (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
11382 * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
11383 (vfmlsl_low_u32): Ditto.
11384 (vfmlalq_low_u32): Ditto.
11385 (vfmlslq_low_u32): Ditto.
11386 (vfmlal_high_u32): Ditto.
11387 (vfmlsl_high_u32): Ditto.
11388 (vfmlalq_high_u32): Ditto.
11389 (vfmlslq_high_u32): Ditto.
11390 (vfmlal_lane_low_u32): Ditto.
11391 (vfmlsl_lane_low_u32): Ditto.
11392 (vfmlal_laneq_low_u32): Ditto.
11393 (vfmlsl_laneq_low_u32): Ditto.
11394 (vfmlalq_lane_low_u32): Ditto.
11395 (vfmlslq_lane_low_u32): Ditto.
11396 (vfmlalq_laneq_low_u32): Ditto.
11397 (vfmlslq_laneq_low_u32): Ditto.
11398 (vfmlal_lane_high_u32): Ditto.
11399 (vfmlsl_lane_high_u32): Ditto.
11400 (vfmlal_laneq_high_u32): Ditto.
11401 (vfmlsl_laneq_high_u32): Ditto.
11402 (vfmlalq_lane_high_u32): Ditto.
11403 (vfmlslq_lane_high_u32): Ditto.
11404 (vfmlalq_laneq_high_u32): Ditto.
11405 (vfmlslq_laneq_high_u32): Ditto.
11406 * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
11407 (AARCH64_FL_FOR_ARCH8_4): New.
11408 (AARCH64_ISA_F16FML): New ISA flag.
11409 (TARGET_F16FML): New feature flag for fp16fml.
11410 (doc/invoke.texi): Document new fp16fml option.
11411
11412 2018-01-10 Michael Collison <michael.collison@arm.com>
11413
11414 * config/aarch64/aarch64-builtins.c:
11415 (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
11416 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11417 (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
11418 * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
11419 (AARCH64_ISA_SHA3): New ISA flag.
11420 (TARGET_SHA3): New feature flag for sha3.
11421 * config/aarch64/iterators.md (sha512_op): New int attribute.
11422 (CRYPTO_SHA512): New int iterator.
11423 (UNSPEC_SHA512H): New unspec.
11424 (UNSPEC_SHA512H2): Ditto.
11425 (UNSPEC_SHA512SU0): Ditto.
11426 (UNSPEC_SHA512SU1): Ditto.
11427 * config/aarch64/aarch64-simd-builtins.def
11428 (aarch64_crypto_sha512hqv2di): New builtin.
11429 (aarch64_crypto_sha512h2qv2di): Ditto.
11430 (aarch64_crypto_sha512su0qv2di): Ditto.
11431 (aarch64_crypto_sha512su1qv2di): Ditto.
11432 (aarch64_eor3qv8hi): Ditto.
11433 (aarch64_rax1qv2di): Ditto.
11434 (aarch64_xarqv2di): Ditto.
11435 (aarch64_bcaxqv8hi): Ditto.
11436 * config/aarch64/aarch64-simd.md:
11437 (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
11438 (aarch64_crypto_sha512su0qv2di): Ditto.
11439 (aarch64_crypto_sha512su1qv2di): Ditto.
11440 (aarch64_eor3qv8hi): Ditto.
11441 (aarch64_rax1qv2di): Ditto.
11442 (aarch64_xarqv2di): Ditto.
11443 (aarch64_bcaxqv8hi): Ditto.
11444 * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
11445 (vsha512h2q_u64): Ditto.
11446 (vsha512su0q_u64): Ditto.
11447 (vsha512su1q_u64): Ditto.
11448 (veor3q_u16): Ditto.
11449 (vrax1q_u64): Ditto.
11450 (vxarq_u64): Ditto.
11451 (vbcaxq_u16): Ditto.
11452 * config/arm/types.md (crypto_sha512): New type attribute.
11453 (crypto_sha3): Ditto.
11454 (doc/invoke.texi): Document new sha3 option.
11455
11456 2018-01-10 Michael Collison <michael.collison@arm.com>
11457
11458 * config/aarch64/aarch64-builtins.c:
11459 (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
11460 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11461 (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
11462 (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
11463 * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
11464 (AARCH64_ISA_SM4): New ISA flag.
11465 (TARGET_SM4): New feature flag for sm4.
11466 * config/aarch64/aarch64-simd-builtins.def
11467 (aarch64_sm3ss1qv4si): Ditto.
11468 (aarch64_sm3tt1aq4si): Ditto.
11469 (aarch64_sm3tt1bq4si): Ditto.
11470 (aarch64_sm3tt2aq4si): Ditto.
11471 (aarch64_sm3tt2bq4si): Ditto.
11472 (aarch64_sm3partw1qv4si): Ditto.
11473 (aarch64_sm3partw2qv4si): Ditto.
11474 (aarch64_sm4eqv4si): Ditto.
11475 (aarch64_sm4ekeyqv4si): Ditto.
11476 * config/aarch64/aarch64-simd.md:
11477 (aarch64_sm3ss1qv4si): Ditto.
11478 (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
11479 (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
11480 (aarch64_sm4eqv4si): Ditto.
11481 (aarch64_sm4ekeyqv4si): Ditto.
11482 * config/aarch64/iterators.md (sm3tt_op): New int iterator.
11483 (sm3part_op): Ditto.
11484 (CRYPTO_SM3TT): Ditto.
11485 (CRYPTO_SM3PART): Ditto.
11486 (UNSPEC_SM3SS1): New unspec.
11487 (UNSPEC_SM3TT1A): Ditto.
11488 (UNSPEC_SM3TT1B): Ditto.
11489 (UNSPEC_SM3TT2A): Ditto.
11490 (UNSPEC_SM3TT2B): Ditto.
11491 (UNSPEC_SM3PARTW1): Ditto.
11492 (UNSPEC_SM3PARTW2): Ditto.
11493 (UNSPEC_SM4E): Ditto.
11494 (UNSPEC_SM4EKEY): Ditto.
11495 * config/aarch64/constraints.md (Ui2): New constraint.
11496 * config/aarch64/predicates.md (aarch64_imm2): New predicate.
11497 * config/arm/types.md (crypto_sm3): New type attribute.
11498 (crypto_sm4): Ditto.
11499 * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
11500 (vsm3tt1aq_u32): Ditto.
11501 (vsm3tt1bq_u32): Ditto.
11502 (vsm3tt2aq_u32): Ditto.
11503 (vsm3tt2bq_u32): Ditto.
11504 (vsm3partw1q_u32): Ditto.
11505 (vsm3partw2q_u32): Ditto.
11506 (vsm4eq_u32): Ditto.
11507 (vsm4ekeyq_u32): Ditto.
11508 (doc/invoke.texi): Document new sm4 option.
11509
11510 2018-01-10 Michael Collison <michael.collison@arm.com>
11511
11512 * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
11513 * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
11514 (AARCH64_FL_FOR_ARCH8_4): New.
11515 (AARCH64_FL_V8_4): New flag.
11516 (doc/invoke.texi): Document new armv8.4-a option.
11517
11518 2018-01-10 Michael Collison <michael.collison@arm.com>
11519
11520 * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11521 (__ARM_FEATURE_AES): Define if TARGET_AES is true.
11522 (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
11523 * config/aarch64/aarch64-option-extension.def: Add
11524 AARCH64_OPT_EXTENSION of 'sha2'.
11525 (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
11526 (crypto): Disable sha2 and aes if crypto disabled.
11527 (crypto): Enable aes and sha2 if enabled.
11528 (simd): Disable sha2 and aes if simd disabled.
11529 * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
11530 New flags.
11531 (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
11532 (TARGET_SHA2): New feature flag for sha2.
11533 (TARGET_AES): New feature flag for aes.
11534 * config/aarch64/aarch64-simd.md:
11535 (aarch64_crypto_aes<aes_op>v16qi): Make pattern
11536 conditional on TARGET_AES.
11537 (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
11538 (aarch64_crypto_sha1hsi): Make pattern conditional
11539 on TARGET_SHA2.
11540 (aarch64_crypto_sha1hv4si): Ditto.
11541 (aarch64_be_crypto_sha1hv4si): Ditto.
11542 (aarch64_crypto_sha1su1v4si): Ditto.
11543 (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
11544 (aarch64_crypto_sha1su0v4si): Ditto.
11545 (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
11546 (aarch64_crypto_sha256su0v4si): Ditto.
11547 (aarch64_crypto_sha256su1v4si): Ditto.
11548 (doc/invoke.texi): Document new aes and sha2 options.
11549
11550 2018-01-10 Martin Sebor <msebor@redhat.com>
11551
11552 PR tree-optimization/83781
11553 * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
11554 as string arrays.
11555
11556 2018-01-11 Martin Sebor <msebor@gmail.com>
11557 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
11558
11559 PR tree-optimization/83501
11560 PR tree-optimization/81703
11561
11562 * tree-ssa-strlen.c (get_string_cst): Rename...
11563 (get_string_len): ...to this. Handle global constants.
11564 (handle_char_store): Adjust.
11565
11566 2018-01-10 Kito Cheng <kito.cheng@gmail.com>
11567 Jim Wilson <jimw@sifive.com>
11568
11569 * config/riscv/riscv-protos.h (riscv_output_return): New.
11570 * config/riscv/riscv.c (struct machine_function): New naked_p field.
11571 (riscv_attribute_table, riscv_output_return),
11572 (riscv_handle_fndecl_attribute, riscv_naked_function_p),
11573 (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
11574 (riscv_compute_frame_info): Only compute frame->mask if not a naked
11575 function.
11576 (riscv_expand_prologue): Add early return for naked function.
11577 (riscv_expand_epilogue): Likewise.
11578 (riscv_function_ok_for_sibcall): Return false for naked function.
11579 (riscv_set_current_function): New.
11580 (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
11581 (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
11582 * config/riscv/riscv.md (simple_return): Call riscv_output_return.
11583 * doc/extend.texi (RISC-V Function Attributes): New.
11584
11585 2018-01-10 Michael Meissner <meissner@linux.vnet.ibm.com>
11586
11587 * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
11588 check for 128-bit long double before checking TCmode.
11589 * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
11590 128-bit long doubles before checking TFmode or TCmode.
11591 (FLOAT128_IBM_P): Likewise.
11592
11593 2018-01-10 Martin Sebor <msebor@redhat.com>
11594
11595 PR tree-optimization/83671
11596 * builtins.c (c_strlen): Unconditionally return zero for the empty
11597 string.
11598 Use -Warray-bounds for warnings.
11599 * gimple-fold.c (get_range_strlen): Handle non-constant lengths
11600 for non-constant array indices with COMPONENT_REF, arrays of
11601 arrays, and pointers to arrays.
11602 (gimple_fold_builtin_strlen): Determine and set length range for
11603 non-constant character arrays.
11604
11605 2018-01-10 Aldy Hernandez <aldyh@redhat.com>
11606
11607 PR middle-end/81897
11608 * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
11609 empty blocks.
11610
11611 2018-01-10 Eric Botcazou <ebotcazou@adacore.com>
11612
11613 * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
11614
11615 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
11616
11617 PR target/83399
11618 * config/rs6000/rs6000.c (print_operand) <'y'>: Use
11619 VECTOR_MEM_ALTIVEC_OR_VSX_P.
11620 * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
11621 indexed_or_indirect_operand predicate.
11622 (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
11623 (*vsx_le_perm_load_v8hi): Likewise.
11624 (*vsx_le_perm_load_v16qi): Likewise.
11625 (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
11626 (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
11627 (*vsx_le_perm_store_v8hi): Likewise.
11628 (*vsx_le_perm_store_v16qi): Likewise.
11629 (eight unnamed splitters): Likewise.
11630
11631 2018-01-10 Peter Bergner <bergner@vnet.ibm.com>
11632
11633 * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
11634 * config/rs6000/emmintrin.h: Likewise.
11635 * config/rs6000/mmintrin.h: Likewise.
11636 * config/rs6000/xmmintrin.h: Likewise.
11637
11638 2018-01-10 David Malcolm <dmalcolm@redhat.com>
11639
11640 PR c++/43486
11641 * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
11642 "public_flag".
11643 * tree.c (tree_nop_conversion): Return true for location wrapper
11644 nodes.
11645 (maybe_wrap_with_location): New function.
11646 (selftest::check_strip_nops): New function.
11647 (selftest::test_location_wrappers): New function.
11648 (selftest::tree_c_tests): Call it.
11649 * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
11650 (maybe_wrap_with_location): New decl.
11651 (EXPR_LOCATION_WRAPPER_P): New macro.
11652 (location_wrapper_p): New inline function.
11653 (tree_strip_any_location_wrapper): New inline function.
11654
11655 2018-01-10 H.J. Lu <hongjiu.lu@intel.com>
11656
11657 PR target/83735
11658 * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
11659 stack_realign_offset for the largest alignment of stack slot
11660 actually used.
11661 (ix86_find_max_used_stack_alignment): New function.
11662 (ix86_finalize_stack_frame_flags): Use it. Set
11663 max_used_stack_alignment if we don't realign stack.
11664 * config/i386/i386.h (machine_function): Add
11665 max_used_stack_alignment.
11666
11667 2018-01-10 Christophe Lyon <christophe.lyon@linaro.org>
11668
11669 * config/arm/arm.opt (-mbranch-cost): New option.
11670 * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
11671 account.
11672
11673 2018-01-10 Segher Boessenkool <segher@kernel.crashing.org>
11674
11675 PR target/83629
11676 * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
11677 load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
11678
11679 2018-01-10 Richard Biener <rguenther@suse.de>
11680
11681 PR debug/83765
11682 * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
11683 early out so it also covers the case where we have a non-NULL
11684 origin.
11685
11686 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
11687
11688 PR tree-optimization/83753
11689 * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
11690 for non-strided grouped accesses if the number of elements is 1.
11691
11692 2018-01-10 Jan Hubicka <hubicka@ucw.cz>
11693
11694 PR target/81616
11695 * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
11696 * i386.h (TARGET_USE_GATHER): Define.
11697 * x86-tune.def (X86_TUNE_USE_GATHER): New.
11698
11699 2018-01-10 Martin Liska <mliska@suse.cz>
11700
11701 PR bootstrap/82831
11702 * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
11703 * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
11704 partitioning.
11705 * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
11706 CLEANUP_NO_PARTITIONING is not set.
11707
11708 2018-01-10 Richard Sandiford <richard.sandiford@linaro.org>
11709
11710 * doc/rtl.texi: Remove documentation of (const ...) wrappers
11711 for vectors, as a partial revert of r254296.
11712 * rtl.h (const_vec_p): Delete.
11713 (const_vec_duplicate_p): Don't test for vector CONSTs.
11714 (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
11715 * expmed.c (make_tree): Likewise.
11716
11717 Revert:
11718 * common.md (E, F): Use CONSTANT_P instead of checking for
11719 CONST_VECTOR.
11720 * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
11721 checking for CONST_VECTOR.
11722
11723 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
11724
11725 PR middle-end/83575
11726 * predict.c (force_edge_cold): Handle in more sane way edges
11727 with no prediction.
11728
11729 2018-01-09 Carl Love <cel@us.ibm.com>
11730
11731 * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
11732 V4SI, V4SF types.
11733 (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
11734 * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
11735 VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
11736 VMRGOW_V2DI, VMRGOW_V2DF. Remove definition for VMRGOW.
11737 * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
11738 P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW): Add definitions.
11739 * config/rs6000/rs6000-protos.h: Add extern defition for
11740 rs6000_generate_float2_double_code.
11741 * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
11742 function.
11743 * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
11744 (float2_v2df): Add define_expand.
11745
11746 2018-01-09 Uros Bizjak <ubizjak@gmail.com>
11747
11748 PR target/83628
11749 * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
11750 op_mode in the force_to_mode call.
11751
11752 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
11753
11754 * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
11755 instead of checking each element individually.
11756 (aarch64_evpc_uzp): Likewise.
11757 (aarch64_evpc_zip): Likewise.
11758 (aarch64_evpc_ext): Likewise.
11759 (aarch64_evpc_rev): Likewise.
11760 (aarch64_evpc_dup): Test the encoding for a single duplicated element,
11761 instead of checking each element individually. Return true without
11762 generating rtl if
11763 (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
11764 whether all selected elements come from the same input, instead of
11765 checking each element individually. Remove calls to gen_rtx_REG,
11766 start_sequence and end_sequence and instead assert that no rtl is
11767 generated.
11768
11769 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
11770
11771 * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
11772 order of HIGH and CONST checks.
11773
11774 2018-01-09 Richard Sandiford <richard.sandiford@linaro.org>
11775
11776 * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
11777 if the destination isn't an SSA_NAME.
11778
11779 2018-01-09 Richard Biener <rguenther@suse.de>
11780
11781 PR tree-optimization/83668
11782 * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
11783 move prologue...
11784 (canonicalize_loop_form): ... here, renamed from ...
11785 (canonicalize_loop_closed_ssa_form): ... this and amended to
11786 swap successor edges for loop exit blocks to make us use
11787 the RPO order we need for initial schedule generation.
11788
11789 2018-01-09 Joseph Myers <joseph@codesourcery.com>
11790
11791 PR tree-optimization/64811
11792 * match.pd: When optimizing comparisons with Inf, avoid
11793 introducing or losing exceptions from comparisons with NaN.
11794
11795 2018-01-09 Martin Liska <mliska@suse.cz>
11796
11797 PR sanitizer/82517
11798 * asan.c (shadow_mem_size): Add gcc_assert.
11799
11800 2018-01-09 Georg-Johann Lay <avr@gjlay.de>
11801
11802 Don't save registers in main().
11803
11804 PR target/83738
11805 * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
11806 * config/avr/avr.opt (-mmain-is-OS_task): New target option.
11807 * config/avr/avr.c (avr_set_current_function): Don't error if
11808 naked, OS_task or OS_main are specified at the same time.
11809 (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
11810 OS_main.
11811 (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
11812 attribute.
11813 * common/config/avr/avr-common.c (avr_option_optimization_table):
11814 Switch on -mmain-is-OS_task for optimizing compilations.
11815
11816 2018-01-09 Richard Biener <rguenther@suse.de>
11817
11818 PR tree-optimization/83572
11819 * graphite.c: Include cfganal.h.
11820 (graphite_transform_loops): Connect infinite loops to exit
11821 and remove fake edges at the end.
11822
11823 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
11824
11825 * ipa-inline.c (edge_badness): Revert accidental checkin.
11826
11827 2018-01-09 Jan Hubicka <hubicka@ucw.cz>
11828
11829 PR ipa/80763
11830 * ipa-comdats.c (set_comdat_group): Only set comdat group of real
11831 symbols; not inline clones.
11832
11833 2018-01-09 Jakub Jelinek <jakub@redhat.com>
11834
11835 PR target/83507
11836 * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
11837 hard registers. Formatting fixes.
11838
11839 PR preprocessor/83722
11840 * gcc.c (try_generate_repro): Pass
11841 &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
11842 &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
11843 do_report_bug.
11844
11845 2018-01-08 Monk Chiang <sh.chiang04@gmail.com>
11846 Kito Cheng <kito.cheng@gmail.com>
11847
11848 * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
11849 (riscv_leaf_function_p): Delete.
11850 (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
11851
11852 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
11853
11854 * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
11855 function.
11856 (do_ifelse): New function.
11857 (do_isel): New function.
11858 (do_sub3): New function.
11859 (do_add3): New function.
11860 (do_load_mask_compare): New function.
11861 (do_overlap_load_compare): New function.
11862 (expand_compare_loop): New function.
11863 (expand_block_compare): Call expand_compare_loop() when appropriate.
11864 * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
11865 option description.
11866 (-mblock-compare-inline-loop-limit): New option.
11867
11868 2018-01-08 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
11869
11870 PR target/83677
11871 * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
11872 Reverse order of second and third operands in first alternative.
11873 * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
11874 of first and second elements in UNSPEC_VPERMR vector.
11875 (altivec_expand_vec_perm_le): Likewise.
11876
11877 2018-01-08 Jeff Law <law@redhat.com>
11878
11879 PR rtl-optimizatin/81308
11880 * tree-switch-conversion.c (cfg_altered): New file scoped static.
11881 (process_switch): If group_case_labels makes a change, then set
11882 cfg_altered.
11883 (pass_convert_switch::execute): If a switch is converted, then
11884 set cfg_altered. Return TODO_cfg_cleanup if cfg_altered is true.
11885
11886 PR rtl-optimization/81308
11887 * recog.c (split_all_insns): Conditionally cleanup the CFG after
11888 splitting insns.
11889
11890 2018-01-08 Vidya Praveen <vidyapraveen@arm.com>
11891
11892 PR target/83663 - Revert r255946
11893 * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
11894 generation for cases where splatting a value is not useful.
11895 * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
11896 across a vec_duplicate and a paradoxical subreg forming a vector
11897 mode to a vec_concat.
11898
11899 2018-01-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
11900
11901 * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
11902 -march=armv8.3-a variants.
11903 * config/arm/t-multilib: Likewise.
11904 * config/arm/t-arm-elf: Likewise. Handle dotprod extension.
11905
11906 2018-01-08 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
11907
11908 * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
11909 to generate rtl.
11910 (cceq_ior_compare_complement): Give it a name so I can use it, and
11911 change boolean_or_operator predicate to boolean_operator so it can
11912 be used to generate a crand.
11913 (eqne): New code iterator.
11914 (bd/bd_neg): New code_attrs.
11915 (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
11916 a single define_insn.
11917 (<bd>tf_<mode>): A new insn pattern for the conditional form branch
11918 decrement (bdnzt/bdnzf/bdzt/bdzf).
11919 * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
11920 with the new names of the branch decrement patterns, and added the
11921 names of the branch decrement conditional patterns.
11922
11923 2018-01-08 Richard Biener <rguenther@suse.de>
11924
11925 PR tree-optimization/83563
11926 * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
11927 cache.
11928
11929 2018-01-08 Richard Biener <rguenther@suse.de>
11930
11931 PR middle-end/83713
11932 * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
11933
11934 2018-01-08 Richard Biener <rguenther@suse.de>
11935
11936 PR tree-optimization/83685
11937 * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
11938 references to abnormals.
11939
11940 2018-01-08 Richard Biener <rguenther@suse.de>
11941
11942 PR lto/83719
11943 * dwarf2out.c (output_indirect_strings): Handle empty
11944 skeleton_debug_str_hash.
11945 (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
11946
11947 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
11948
11949 * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
11950 (emit_store_direct): Likewise.
11951 (arc_trampoline_adjust_address): Likewise.
11952 (arc_asm_trampoline_template): New function.
11953 (arc_initialize_trampoline): Use asm_trampoline_template.
11954 (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
11955 * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
11956 * config/arc/arc.md (flush_icache): Delete pattern.
11957
11958 2018-01-08 Claudiu Zissulescu <claziss@synopsys.com>
11959
11960 * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
11961 * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
11962 munaligned-access.
11963
11964 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
11965
11966 PR target/83681
11967 * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
11968 by not USED_FOR_TARGET.
11969 (make_pass_resolve_sw_modes): Likewise.
11970
11971 2018-01-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
11972
11973 * config/nios2/nios2.h (nios2_section_threshold): Guard by not
11974 USED_FOR_TARGET.
11975
11976 2018-01-08 Richard Biener <rguenther@suse.de>
11977
11978 PR middle-end/83580
11979 * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
11980
11981 2018-01-08 Richard Biener <rguenther@suse.de>
11982
11983 PR middle-end/83517
11984 * match.pd ((t * 2) / 2) -> t): Add missing :c.
11985
11986 2018-01-06 Aldy Hernandez <aldyh@redhat.com>
11987
11988 PR middle-end/81897
11989 * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
11990 basic blocks with a small number of successors.
11991 (convert_control_dep_chain_into_preds): Improve handling of
11992 forwarder blocks.
11993 (dump_predicates): Split apart into...
11994 (dump_pred_chain): ...here...
11995 (dump_pred_info): ...and here.
11996 (can_one_predicate_be_invalidated_p): Add debugging printfs.
11997 (can_chain_union_be_invalidated_p): Improve check for invalidation
11998 of paths.
11999 (uninit_uses_cannot_happen): Avoid unnecessary if
12000 convert_control_dep_chain_into_preds yielded nothing.
12001
12002 2018-01-06 Martin Sebor <msebor@redhat.com>
12003
12004 PR tree-optimization/83640
12005 * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
12006 subtracting negative offset from size.
12007 (builtin_access::overlap): Adjust offset bounds of the access to fall
12008 within the size of the object if possible.
12009
12010 2018-01-06 Richard Sandiford <richard.sandiford@linaro.org>
12011
12012 PR rtl-optimization/83699
12013 * expmed.c (extract_bit_field_1): Restrict the vector usage of
12014 extract_bit_field_as_subreg to cases in which the extracted
12015 value is also a vector.
12016
12017 * lra-constraints.c (process_alt_operands): Test for the equivalence
12018 substitutions when detecting a possible reload cycle.
12019
12020 2018-01-06 Jakub Jelinek <jakub@redhat.com>
12021
12022 PR debug/83480
12023 * toplev.c (process_options): Don't enable debug_nonbind_markers_p
12024 by default if flag_selective_schedling{,2}. Formatting fixes.
12025
12026 PR rtl-optimization/83682
12027 * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
12028 if it has non-VECTOR_MODE element mode.
12029 (vec_duplicate_p): Likewise.
12030
12031 PR middle-end/83694
12032 * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
12033 and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
12034
12035 2018-01-05 Jakub Jelinek <jakub@redhat.com>
12036
12037 PR target/83604
12038 * config/i386/i386-builtin.def
12039 (__builtin_ia32_vgf2p8affineinvqb_v64qi,
12040 __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
12041 Require also OPTION_MASK_ISA_AVX512F in addition to
12042 OPTION_MASK_ISA_GFNI.
12043 (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
12044 __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
12045 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
12046 to OPTION_MASK_ISA_GFNI.
12047 (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
12048 OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
12049 OPTION_MASK_ISA_AVX512BW.
12050 (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
12051 OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
12052 addition to OPTION_MASK_ISA_GFNI.
12053 (__builtin_ia32_vgf2p8affineinvqb_v16qi,
12054 __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
12055 Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
12056 to OPTION_MASK_ISA_GFNI.
12057 * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
12058 a requirement for all ISAs rather than any of them with a few
12059 exceptions.
12060 (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
12061 processing.
12062 (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
12063 bitmasks to be enabled with 3 exceptions, instead of requiring any
12064 enabled ISA with lots of exceptions.
12065 * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
12066 vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
12067 Change avx512bw in isa attribute to avx512f.
12068 * config/i386/sgxintrin.h: Add license boilerplate.
12069 * config/i386/vaesintrin.h: Likewise. Fix macro spelling __AVX512F
12070 to __AVX512F__ and __AVX512VL to __AVX512VL__.
12071 (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
12072 _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
12073 defined.
12074 * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
12075 _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
12076 temporarily sse2 rather than sse if not enabled already.
12077
12078 PR target/83604
12079 * config/i386/sse.md (VI248_VLBW): Rename to ...
12080 (VI248_AVX512VL): ... this. Don't guard V32HI with TARGET_AVX512BW.
12081 (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
12082 vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
12083 vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
12084 vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
12085 mode iterator instead of VI248_VLBW.
12086
12087 2018-01-05 Jan Hubicka <hubicka@ucw.cz>
12088
12089 * ipa-fnsummary.c (record_modified_bb_info): Add OP.
12090 (record_modified): Skip clobbers; add debug output.
12091 (param_change_prob): Use sreal frequencies.
12092
12093 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
12094
12095 * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
12096 punt for user-aligned variables.
12097
12098 2018-01-05 Richard Sandiford <richard.sandiford@linaro.org>
12099
12100 * tree-chrec.c (chrec_contains_symbols): Return true for
12101 POLY_INT_CST.
12102
12103 2018-01-05 Sudakshina Das <sudi.das@arm.com>
12104
12105 PR target/82439
12106 * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
12107 of (x|y) == x for BICS pattern.
12108
12109 2018-01-05 Jakub Jelinek <jakub@redhat.com>
12110
12111 PR tree-optimization/83605
12112 * gimple-ssa-strength-reduction.c: Include tree-eh.h.
12113 (find_candidates_dom_walker::before_dom_children): Ignore stmts that
12114 can throw.
12115
12116 2018-01-05 Sebastian Huber <sebastian.huber@embedded-brains.de>
12117
12118 * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
12119 * config/epiphany/rtems.h: New file.
12120
12121 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12122 Uros Bizjak <ubizjak@gmail.com>
12123
12124 PR target/83554
12125 * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
12126 QIreg_operand instead of register_operand predicate.
12127 * config/i386/i386.c (ix86_rop_should_change_byte_p,
12128 set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
12129 comments instead of -fmitigate[-_]rop.
12130
12131 2018-01-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
12132
12133 PR bootstrap/81926
12134 * cgraphunit.c (symbol_table::compile): Switch to text_section
12135 before calling assembly_start debug hook.
12136 * run-rtl-passes.c (run_rtl_passes): Likewise.
12137 Include output.h.
12138
12139 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12140
12141 * tree-vrp.c (extract_range_from_binary_expr_1): Check
12142 range_int_cst_p rather than !symbolic_range_p before calling
12143 extract_range_from_multiplicative_op_1.
12144
12145 2018-01-04 Jeff Law <law@redhat.com>
12146
12147 * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
12148 redundant test in assertion.
12149
12150 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12151
12152 * doc/rtl.texi: Document machine_mode wrapper classes.
12153
12154 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12155
12156 * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
12157 using tree_to_uhwi.
12158
12159 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12160
12161 * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
12162 the VEC_PERM_EXPR fold to fail.
12163
12164 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12165
12166 PR debug/83585
12167 * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
12168 to switched_sections.
12169
12170 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12171
12172 PR target/83680
12173 * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
12174 test for d.testing.
12175
12176 2018-01-04 Peter Bergner <bergner@vnet.ibm.com>
12177
12178 PR target/83387
12179 * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
12180 allow arguments in FP registers if TARGET_HARD_FLOAT is false.
12181
12182 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12183
12184 PR debug/83666
12185 * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
12186 is BLKmode and bitpos not zero or mode change is needed.
12187
12188 2018-01-04 Richard Sandiford <richard.sandiford@linaro.org>
12189
12190 PR target/83675
12191 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
12192 TARGET_VIS2.
12193
12194 2018-01-04 Uros Bizjak <ubizjak@gmail.com>
12195
12196 PR target/83628
12197 * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
12198 instead of MULT rtx. Update all corresponding splitters.
12199 (*saddl_se): Ditto.
12200 (*ssub<modesuffix>): Ditto.
12201 (*ssubl_se): Ditto.
12202 (*cmp_sadd_di): Update split patterns.
12203 (*cmp_sadd_si): Ditto.
12204 (*cmp_sadd_sidi): Ditto.
12205 (*cmp_ssub_di): Ditto.
12206 (*cmp_ssub_si): Ditto.
12207 (*cmp_ssub_sidi): Ditto.
12208 * config/alpha/predicates.md (const23_operand): New predicate.
12209 * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
12210 Look for ASHIFT, not MULT inner operand.
12211 (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
12212
12213 2018-01-04 Martin Liska <mliska@suse.cz>
12214
12215 PR gcov-profile/83669
12216 * gcov.c (output_intermediate_file): Add version to intermediate
12217 gcov file.
12218 * doc/gcov.texi: Document new field 'version' in intermediate
12219 file format. Fix location of '-k' option of gcov command.
12220
12221 2018-01-04 Martin Liska <mliska@suse.cz>
12222
12223 PR ipa/82352
12224 * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
12225
12226 2018-01-04 Jakub Jelinek <jakub@redhat.com>
12227
12228 * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
12229
12230 2018-01-03 Martin Sebor <msebor@redhat.com>
12231
12232 PR tree-optimization/83655
12233 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
12234 checking calls with invalid arguments.
12235
12236 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12237
12238 * tree-vect-stmts.c (vect_get_store_rhs): New function.
12239 (vectorizable_mask_load_store): Delete.
12240 (vectorizable_call): Return false for masked loads and stores.
12241 (vectorizable_store): Handle IFN_MASK_STORE. Use vect_get_store_rhs
12242 instead of gimple_assign_rhs1.
12243 (vectorizable_load): Handle IFN_MASK_LOAD.
12244 (vect_transform_stmt): Don't set is_store for call_vec_info_type.
12245
12246 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12247
12248 * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
12249 split out from..,
12250 (vectorizable_mask_load_store): ...here.
12251 (vectorizable_load): ...and here.
12252
12253 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12254
12255 * tree-vect-stmts.c (vect_build_all_ones_mask)
12256 (vect_build_zero_merge_argument): New functions, split out from...
12257 (vectorizable_load): ...here.
12258
12259 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12260
12261 * tree-vect-stmts.c (vect_check_store_rhs): New function,
12262 split out from...
12263 (vectorizable_mask_load_store): ...here.
12264 (vectorizable_store): ...and here.
12265
12266 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12267
12268 * tree-vect-stmts.c (vect_check_load_store_mask): New function,
12269 split out from...
12270 (vectorizable_mask_load_store): ...here.
12271
12272 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12273
12274 * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
12275 (vect_model_store_cost): Take a vec_load_store_type instead of a
12276 vect_def_type.
12277 * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
12278 (vect_model_store_cost): Take a vec_load_store_type instead of a
12279 vect_def_type.
12280 (vectorizable_mask_load_store): Update accordingly.
12281 (vectorizable_store): Likewise.
12282 * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
12283
12284 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12285
12286 * tree-vect-loop.c (vect_transform_loop): Stub out scalar
12287 IFN_MASK_LOAD calls here rather than...
12288 * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
12289
12290 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12291 Alan Hayward <alan.hayward@arm.com>
12292 David Sherwood <david.sherwood@arm.com>
12293
12294 * expmed.c (extract_bit_field_1): For vector extracts,
12295 fall back to extract_bit_field_as_subreg if vec_extract
12296 isn't available.
12297
12298 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12299 Alan Hayward <alan.hayward@arm.com>
12300 David Sherwood <david.sherwood@arm.com>
12301
12302 * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
12303 they are variable or constant sized.
12304 (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
12305 slots for constant-sized data.
12306
12307 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12308 Alan Hayward <alan.hayward@arm.com>
12309 David Sherwood <david.sherwood@arm.com>
12310
12311 * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
12312 handling COND_EXPRs with boolean comparisons, try to find a better
12313 basis for the mask type than the boolean itself.
12314
12315 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12316
12317 * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
12318 is calculated and how it can be overridden.
12319 * genmodes.c (max_bitsize_mode_any_mode): New variable.
12320 (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
12321 if defined.
12322 (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
12323 if nonzero.
12324
12325 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12326 Alan Hayward <alan.hayward@arm.com>
12327 David Sherwood <david.sherwood@arm.com>
12328
12329 * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
12330 Remove the mode argument.
12331 (aarch64_simd_valid_immediate): Remove the mode and inverse
12332 arguments.
12333 * config/aarch64/iterators.md (bitsize): New iterator.
12334 * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
12335 (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
12336 * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
12337 aarch64_simd_valid_immediate.
12338 * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
12339 (aarch64_reg_or_bic_imm): Likewise.
12340 * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
12341 with an insn_type enum and msl with a modifier_type enum.
12342 Replace element_width with a scalar_mode. Change the shift
12343 to unsigned int. Add constructors for scalar_float_mode and
12344 scalar_int_mode elements.
12345 (aarch64_vect_float_const_representable_p): Delete.
12346 (aarch64_can_const_movi_rtx_p)
12347 (aarch64_simd_scalar_immediate_valid_for_move)
12348 (aarch64_simd_make_constant): Update call to
12349 aarch64_simd_valid_immediate.
12350 (aarch64_advsimd_valid_immediate_hs): New function.
12351 (aarch64_advsimd_valid_immediate): Likewise.
12352 (aarch64_simd_valid_immediate): Remove mode and inverse
12353 arguments. Rewrite to use the above. Use const_vec_duplicate_p
12354 to detect duplicated constants and use aarch64_float_const_zero_rtx_p
12355 and aarch64_float_const_representable_p on the result.
12356 (aarch64_output_simd_mov_immediate): Remove mode argument.
12357 Update call to aarch64_simd_valid_immediate and use of
12358 simd_immediate_info.
12359 (aarch64_output_scalar_simd_mov_immediate): Update call
12360 accordingly.
12361
12362 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12363 Alan Hayward <alan.hayward@arm.com>
12364 David Sherwood <david.sherwood@arm.com>
12365
12366 * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
12367 (mode_nunits): Likewise CONST_MODE_NUNITS.
12368 * machmode.def (ADJUST_NUNITS): Document.
12369 * genmodes.c (mode_data::need_nunits_adj): New field.
12370 (blank_mode): Update accordingly.
12371 (adj_nunits): New variable.
12372 (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
12373 parameter.
12374 (emit_mode_size_inline): Set need_bytesize_adj for all modes
12375 listed in adj_nunits.
12376 (emit_mode_nunits_inline): Set need_nunits_adj for all modes
12377 listed in adj_nunits. Don't emit case statements for such modes.
12378 (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
12379 and CONST_MODE_PRECISION. Make CONST_MODE_SIZE expand to
12380 nothing if adj_nunits is nonnull.
12381 (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
12382 (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
12383 (emit_mode_fbit): Update use of print_maybe_const_decl.
12384 (emit_move_size): Likewise. Treat the array as non-const
12385 if adj_nunits.
12386 (emit_mode_adjustments): Handle adj_nunits.
12387
12388 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12389
12390 * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
12391 * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
12392 (VECTOR_MODES): Use it.
12393 (make_vector_modes): Take the prefix as an argument.
12394
12395 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12396 Alan Hayward <alan.hayward@arm.com>
12397 David Sherwood <david.sherwood@arm.com>
12398
12399 * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
12400 * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
12401 for MODE_VECTOR_BOOL.
12402 * machmode.def (VECTOR_BOOL_MODE): Document.
12403 * genmodes.c (VECTOR_BOOL_MODE): New macro.
12404 (make_vector_bool_mode): New function.
12405 (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
12406 MODE_VECTOR_BOOL.
12407 * lto-streamer-in.c (lto_input_mode_table): Likewise.
12408 * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
12409 Likewise.
12410 * stor-layout.c (int_mode_for_mode): Likewise.
12411 * tree.c (build_vector_type_for_mode): Likewise.
12412 * varasm.c (output_constant_pool_2): Likewise.
12413 * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
12414 CONSTM1_RTX (BImode) are the same thing. Initialize const_tiny_rtx
12415 for MODE_VECTOR_BOOL.
12416 * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
12417 of mode class checks.
12418 * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
12419 instead of a list of mode class checks.
12420 (expand_vector_scalar_condition): Likewise.
12421 (type_for_widest_vector_mode): Handle BImode as an inner mode.
12422
12423 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12424 Alan Hayward <alan.hayward@arm.com>
12425 David Sherwood <david.sherwood@arm.com>
12426
12427 * machmode.h (mode_size): Change from unsigned short to
12428 poly_uint16_pod.
12429 (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
12430 (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
12431 or if measurement_type is not polynomial.
12432 (fixed_size_mode::includes_p): Check for constant-sized modes.
12433 * genmodes.c (emit_mode_size_inline): Make mode_size_inline
12434 return a poly_uint16 rather than an unsigned short.
12435 (emit_mode_size): Change the type of mode_size from unsigned short
12436 to poly_uint16_pod. Use ZERO_COEFFS for the initializer.
12437 (emit_mode_adjustments): Cope with polynomial vector sizes.
12438 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12439 for GET_MODE_SIZE.
12440 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12441 for GET_MODE_SIZE.
12442 * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
12443 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
12444 * caller-save.c (setup_save_areas): Likewise.
12445 (replace_reg_with_saved_mem): Likewise.
12446 * calls.c (emit_library_call_value_1): Likewise.
12447 * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
12448 * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
12449 (gen_lowpart_for_combine): Likewise.
12450 * convert.c (convert_to_integer_1): Likewise.
12451 * cse.c (equiv_constant, cse_insn): Likewise.
12452 * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
12453 (cselib_subst_to_values): Likewise.
12454 * dce.c (word_dce_process_block): Likewise.
12455 * df-problems.c (df_word_lr_mark_ref): Likewise.
12456 * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
12457 * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
12458 (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
12459 (rtl_for_decl_location): Likewise.
12460 * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
12461 * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
12462 * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
12463 (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
12464 (expand_expr_real_1): Likewise.
12465 * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
12466 (pad_below): Likewise.
12467 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
12468 * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
12469 * ira.c (get_subreg_tracking_sizes): Likewise.
12470 * ira-build.c (ira_create_allocno_objects): Likewise.
12471 * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
12472 (ira_sort_regnos_for_alter_reg): Likewise.
12473 * ira-costs.c (record_operand_costs): Likewise.
12474 * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
12475 (resolve_simple_move): Likewise.
12476 * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
12477 (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
12478 (lra_constraints): Likewise.
12479 (CONST_POOL_OK_P): Reject variable-sized modes.
12480 * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
12481 (add_pseudo_to_slot, lra_spill): Likewise.
12482 * omp-low.c (omp_clause_aligned_alignment): Likewise.
12483 * optabs-query.c (get_best_extraction_insn): Likewise.
12484 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
12485 * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
12486 (expand_mult_highpart, valid_multiword_target_p): Likewise.
12487 * recog.c (offsettable_address_addr_space_p): Likewise.
12488 * regcprop.c (maybe_mode_change): Likewise.
12489 * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
12490 * regrename.c (build_def_use): Likewise.
12491 * regstat.c (dump_reg_info): Likewise.
12492 * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
12493 (find_reloads, find_reloads_subreg_address): Likewise.
12494 * reload1.c (eliminate_regs_1): Likewise.
12495 * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
12496 * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
12497 (simplify_binary_operation_1, simplify_subreg): Likewise.
12498 * targhooks.c (default_function_arg_padding): Likewise.
12499 (default_hard_regno_nregs, default_class_max_nregs): Likewise.
12500 * tree-cfg.c (verify_gimple_assign_binary): Likewise.
12501 (verify_gimple_assign_ternary): Likewise.
12502 * tree-inline.c (estimate_move_cost): Likewise.
12503 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12504 * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
12505 (get_address_cost_ainc): Likewise.
12506 * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
12507 (vect_supportable_dr_alignment): Likewise.
12508 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
12509 (vectorizable_reduction): Likewise.
12510 * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
12511 (vectorizable_operation, vectorizable_load): Likewise.
12512 * tree.c (build_same_sized_truth_vector_type): Likewise.
12513 * valtrack.c (cleanup_auto_inc_dec): Likewise.
12514 * var-tracking.c (emit_note_insn_var_location): Likewise.
12515 * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
12516 (ADDR_VEC_ALIGN): Likewise.
12517
12518 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12519 Alan Hayward <alan.hayward@arm.com>
12520 David Sherwood <david.sherwood@arm.com>
12521
12522 * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
12523 unsigned short.
12524 (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
12525 or if measurement_type is polynomial.
12526 * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
12527 * combine.c (make_extraction): Likewise.
12528 * dse.c (find_shift_sequence): Likewise.
12529 * dwarf2out.c (mem_loc_descriptor): Likewise.
12530 * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
12531 (extract_bit_field, extract_low_bits): Likewise.
12532 * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
12533 (optimize_bitfield_assignment_op, expand_assignment): Likewise.
12534 (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
12535 * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
12536 * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
12537 * reload.c (find_reloads): Likewise.
12538 * reload1.c (alter_reg): Likewise.
12539 * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
12540 * targhooks.c (default_secondary_memory_needed_mode): Likewise.
12541 * tree-if-conv.c (predicate_mem_writes): Likewise.
12542 * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
12543 * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
12544 * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
12545 * valtrack.c (dead_debug_insert_temp): Likewise.
12546 * varasm.c (mergeable_constant_section): Likewise.
12547 * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
12548
12549 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12550 Alan Hayward <alan.hayward@arm.com>
12551 David Sherwood <david.sherwood@arm.com>
12552
12553 * expr.c (expand_assignment): Cope with polynomial mode sizes
12554 when assigning to a CONCAT.
12555
12556 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12557 Alan Hayward <alan.hayward@arm.com>
12558 David Sherwood <david.sherwood@arm.com>
12559
12560 * machmode.h (mode_precision): Change from unsigned short to
12561 poly_uint16_pod.
12562 (mode_to_precision): Return a poly_uint16 rather than an unsigned
12563 short.
12564 (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
12565 or if measurement_type is not polynomial.
12566 (HWI_COMPUTABLE_MODE_P): Turn into a function. Optimize the case
12567 in which the mode is already known to be a scalar_int_mode.
12568 * genmodes.c (emit_mode_precision): Change the type of mode_precision
12569 from unsigned short to poly_uint16_pod. Use ZERO_COEFFS for the
12570 initializer.
12571 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12572 for GET_MODE_PRECISION.
12573 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12574 for GET_MODE_PRECISION.
12575 * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
12576 as polynomial.
12577 (try_combine, find_split_point, combine_simplify_rtx): Likewise.
12578 (expand_field_assignment, make_extraction): Likewise.
12579 (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
12580 (get_last_value): Likewise.
12581 * convert.c (convert_to_integer_1): Likewise.
12582 * cse.c (cse_insn): Likewise.
12583 * expr.c (expand_expr_real_1): Likewise.
12584 * lra-constraints.c (simplify_operand_subreg): Likewise.
12585 * optabs-query.c (can_atomic_load_p): Likewise.
12586 * optabs.c (expand_atomic_load): Likewise.
12587 (expand_atomic_store): Likewise.
12588 * ree.c (combine_reaching_defs): Likewise.
12589 * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
12590 * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
12591 * tree.h (type_has_mode_precision_p): Likewise.
12592 * ubsan.c (instrument_si_overflow): Likewise.
12593
12594 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12595 Alan Hayward <alan.hayward@arm.com>
12596 David Sherwood <david.sherwood@arm.com>
12597
12598 * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
12599 polynomial numbers of units.
12600 (SET_TYPE_VECTOR_SUBPARTS): Likewise.
12601 (valid_vector_subparts_p): New function.
12602 (build_vector_type): Remove temporary shim and take the number
12603 of units as a poly_uint64 rather than an int.
12604 (build_opaque_vector_type): Take the number of units as a
12605 poly_uint64 rather than an int.
12606 * tree.c (build_vector_from_ctor): Handle polynomial
12607 TYPE_VECTOR_SUBPARTS.
12608 (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
12609 (uniform_vector_p, vector_type_mode, build_vector): Likewise.
12610 (build_vector_from_val): If the number of units is variable,
12611 use build_vec_duplicate_cst for constant operands and
12612 VEC_DUPLICATE_EXPR otherwise.
12613 (make_vector_type): Remove temporary is_constant ().
12614 (build_vector_type, build_opaque_vector_type): Take the number of
12615 units as a poly_uint64 rather than an int.
12616 (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
12617 VECTOR_CST_NELTS.
12618 * cfgexpand.c (expand_debug_expr): Likewise.
12619 * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
12620 (store_constructor, expand_expr_real_1): Likewise.
12621 (const_scalar_mask_from_tree): Likewise.
12622 * fold-const-call.c (fold_const_reduction): Likewise.
12623 * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
12624 (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
12625 (native_encode_vector, vec_cst_ctor_to_array): Likewise.
12626 (fold_relational_const): Likewise.
12627 (native_interpret_vector): Likewise. Change the size from an
12628 int to an unsigned int.
12629 * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
12630 TYPE_VECTOR_SUBPARTS.
12631 (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
12632 (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
12633 duplicating a non-constant operand into a variable-length vector.
12634 * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
12635 TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
12636 * ipa-icf.c (sem_variable::equals): Likewise.
12637 * match.pd: Likewise.
12638 * omp-simd-clone.c (simd_clone_subparts): Likewise.
12639 * print-tree.c (print_node): Likewise.
12640 * stor-layout.c (layout_type): Likewise.
12641 * targhooks.c (default_builtin_vectorization_cost): Likewise.
12642 * tree-cfg.c (verify_gimple_comparison): Likewise.
12643 (verify_gimple_assign_binary): Likewise.
12644 (verify_gimple_assign_ternary): Likewise.
12645 (verify_gimple_assign_single): Likewise.
12646 * tree-pretty-print.c (dump_generic_node): Likewise.
12647 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
12648 (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
12649 * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
12650 (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
12651 (vect_shift_permute_load_chain): Likewise.
12652 * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
12653 (expand_vector_condition, optimize_vector_constructor): Likewise.
12654 (lower_vec_perm, get_compute_type): Likewise.
12655 * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
12656 (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
12657 * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
12658 (vect_recog_mask_conversion_pattern): Likewise.
12659 * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
12660 (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
12661 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
12662 (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
12663 (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
12664 (vectorizable_shift, vectorizable_operation, vectorizable_store)
12665 (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
12666 (supportable_widening_operation): Likewise.
12667 (supportable_narrowing_operation): Likewise.
12668 * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
12669 Likewise.
12670 * varasm.c (output_constant): Likewise.
12671
12672 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12673 Alan Hayward <alan.hayward@arm.com>
12674 David Sherwood <david.sherwood@arm.com>
12675
12676 * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
12677 so that both the length == 3 and length != 3 cases set up their
12678 own permute vectors. Add comments explaining why we know the
12679 number of elements is constant.
12680 (vect_permute_load_chain): Likewise.
12681
12682 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12683 Alan Hayward <alan.hayward@arm.com>
12684 David Sherwood <david.sherwood@arm.com>
12685
12686 * machmode.h (mode_nunits): Change from unsigned char to
12687 poly_uint16_pod.
12688 (ONLY_FIXED_SIZE_MODES): New macro.
12689 (pod_mode::measurement_type, scalar_int_mode::measurement_type)
12690 (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
12691 (complex_mode::measurement_type, fixed_size_mode::measurement_type):
12692 New typedefs.
12693 (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
12694 (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
12695 or if measurement_type is not polynomial.
12696 * genmodes.c (ZERO_COEFFS): New macro.
12697 (emit_mode_nunits_inline): Make mode_nunits_inline return a
12698 poly_uint16.
12699 (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
12700 Use ZERO_COEFFS when emitting initializers.
12701 * data-streamer.h (bp_pack_poly_value): New function.
12702 (bp_unpack_poly_value): Likewise.
12703 * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
12704 for GET_MODE_NUNITS.
12705 * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
12706 for GET_MODE_NUNITS.
12707 * tree.c (make_vector_type): Remove temporary shim and make
12708 the real function take the number of units as a poly_uint64
12709 rather than an int.
12710 (build_vector_type_for_mode): Handle polynomial nunits.
12711 * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
12712 * emit-rtl.c (const_vec_series_p_1): Likewise.
12713 (gen_rtx_CONST_VECTOR): Likewise.
12714 * fold-const.c (test_vec_duplicate_folding): Likewise.
12715 * genrecog.c (validate_pattern): Likewise.
12716 * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
12717 * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
12718 * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
12719 (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
12720 (expand_vec_cond_expr, expand_mult_highpart): Likewise.
12721 * rtlanal.c (subreg_get_info): Likewise.
12722 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
12723 (vect_grouped_load_supported): Likewise.
12724 * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
12725 * tree-vect-loop.c (have_whole_vector_shift): Likewise.
12726 * simplify-rtx.c (simplify_unary_operation_1): Likewise.
12727 (simplify_const_unary_operation, simplify_binary_operation_1)
12728 (simplify_const_binary_operation, simplify_ternary_operation)
12729 (test_vector_ops_duplicate, test_vector_ops): Likewise.
12730 (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
12731 instead of CONST_VECTOR_NUNITS.
12732 * varasm.c (output_constant_pool_2): Likewise.
12733 * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
12734 explicit-encoded elements in the XVEC for variable-length vectors.
12735
12736 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12737
12738 * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
12739
12740 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12741 Alan Hayward <alan.hayward@arm.com>
12742 David Sherwood <david.sherwood@arm.com>
12743
12744 * coretypes.h (fixed_size_mode): Declare.
12745 (fixed_size_mode_pod): New typedef.
12746 * builtins.h (target_builtins::x_apply_args_mode)
12747 (target_builtins::x_apply_result_mode): Change type to
12748 fixed_size_mode_pod.
12749 * builtins.c (apply_args_size, apply_result_size, result_vector)
12750 (expand_builtin_apply_args_1, expand_builtin_apply)
12751 (expand_builtin_return): Update accordingly.
12752
12753 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12754
12755 * cse.c (hash_rtx_cb): Hash only the encoded elements.
12756 * cselib.c (cselib_hash_rtx): Likewise.
12757 * expmed.c (make_tree): Build VECTOR_CSTs directly from the
12758 CONST_VECTOR encoding.
12759
12760 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12761 Jeff Law <law@redhat.com>
12762
12763 PR target/83641
12764 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
12765 noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
12766 only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
12767 and add REG_CFA_ADJUST_CFA notes in that case to both insns.
12768
12769 PR target/83641
12770 * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
12771 explicitly probe *sp in a noreturn function if there were any callee
12772 register saves or frame pointer is needed.
12773
12774 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12775
12776 PR debug/83621
12777 * cfgexpand.c (expand_debug_expr): Return NULL if mode is
12778 BLKmode for ternary, binary or unary expressions.
12779
12780 PR debug/83645
12781 * var-tracking.c (delete_vta_debug_insn): New inline function.
12782 (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
12783 insns from get_insns () to NULL instead of each bb separately.
12784 Use delete_vta_debug_insn. No longer static.
12785 (vt_debug_insns_local, variable_tracking_main_1): Adjust
12786 delete_vta_debug_insns callers.
12787 * rtl.h (delete_vta_debug_insns): Declare.
12788 * final.c (rest_of_handle_final): Call delete_vta_debug_insns
12789 instead of variable_tracking_main.
12790
12791 2018-01-03 Martin Sebor <msebor@redhat.com>
12792
12793 PR tree-optimization/83603
12794 * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
12795 arguments past the endof the argument list in functions declared
12796 without a prototype.
12797 * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
12798 Avoid checking when arguments are null.
12799
12800 2018-01-03 Martin Sebor <msebor@redhat.com>
12801
12802 PR c/83559
12803 * doc/extend.texi (attribute const): Fix a typo.
12804 * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
12805 issuing -Wsuggest-attribute for void functions.
12806
12807 2018-01-03 Martin Sebor <msebor@redhat.com>
12808
12809 * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
12810 offset_int::from instead of wide_int::to_shwi.
12811 (maybe_diag_overlap): Remove assertion.
12812 Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
12813 * gimple-ssa-sprintf.c (format_directive): Same.
12814 (parse_directive): Same.
12815 (sprintf_dom_walker::compute_format_length): Same.
12816 (try_substitute_return_value): Same.
12817
12818 2018-01-03 Jeff Law <law@redhat.com>
12819
12820 PR middle-end/83654
12821 * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
12822 non-constant residual for zero at runtime and avoid probing in
12823 that case. Reorganize code for trailing problem to mirror handling
12824 of the residual.
12825
12826 2018-01-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
12827
12828 PR tree-optimization/83501
12829 * tree-ssa-strlen.c (get_string_cst): New.
12830 (handle_char_store): Call get_string_cst.
12831
12832 2018-01-03 Martin Liska <mliska@suse.cz>
12833
12834 PR tree-optimization/83593
12835 * tree-ssa-strlen.c: Include tree-cfg.h.
12836 (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
12837 (strlen_dom_walker): Add new member variable m_cleanup_cfg.
12838 (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
12839 to false.
12840 (strlen_dom_walker::before_dom_children): Call
12841 gimple_purge_dead_eh_edges. Dump tranformation with details
12842 dump flags.
12843 (strlen_dom_walker::before_dom_children): Update call by adding
12844 new argument cleanup_eh.
12845 (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
12846
12847 2018-01-03 Martin Liska <mliska@suse.cz>
12848
12849 PR ipa/83549
12850 * cif-code.def (VARIADIC_THUNK): New enum value.
12851 * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
12852 thunks.
12853
12854 2018-01-03 Jan Beulich <jbeulich@suse.com>
12855
12856 * sse.md (mov<mode>_internal): Tighten condition for when to use
12857 vmovdqu<ssescalarsize> for TI and OI modes.
12858
12859 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12860
12861 Update copyright years.
12862
12863 2018-01-03 Martin Liska <mliska@suse.cz>
12864
12865 PR ipa/83594
12866 * ipa-visibility.c (function_and_variable_visibility): Skip
12867 functions with noipa attribure.
12868
12869 2018-01-03 Jakub Jelinek <jakub@redhat.com>
12870
12871 * gcc.c (process_command): Update copyright notice dates.
12872 * gcov-dump.c (print_version): Ditto.
12873 * gcov.c (print_version): Ditto.
12874 * gcov-tool.c (print_version): Ditto.
12875 * gengtype.c (create_file): Ditto.
12876 * doc/cpp.texi: Bump @copying's copyright year.
12877 * doc/cppinternals.texi: Ditto.
12878 * doc/gcc.texi: Ditto.
12879 * doc/gccint.texi: Ditto.
12880 * doc/gcov.texi: Ditto.
12881 * doc/install.texi: Ditto.
12882 * doc/invoke.texi: Ditto.
12883
12884 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12885
12886 * vector-builder.h (vector_builder::m_full_nelts): Change from
12887 unsigned int to poly_uint64.
12888 (vector_builder::full_nelts): Update prototype accordingly.
12889 (vector_builder::new_vector): Likewise.
12890 (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
12891 (vector_builder::operator ==): Likewise.
12892 (vector_builder::finalize): Likewise.
12893 * int-vector-builder.h (int_vector_builder::int_vector_builder):
12894 Take the number of elements as a poly_uint64 rather than an
12895 unsigned int.
12896 * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
12897 from unsigned int to poly_uint64.
12898 (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
12899 (vec_perm_indices::new_vector): Likewise.
12900 (vec_perm_indices::length): Likewise.
12901 (vec_perm_indices::nelts_per_input): Likewise.
12902 (vec_perm_indices::input_nelts): Likewise.
12903 * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
12904 number of elements per input as a poly_uint64 rather than an
12905 unsigned int. Use the original encoding for variable-length
12906 vectors, rather than clamping each individual element.
12907 For the second and subsequent elements in each pattern,
12908 clamp the step and base before clamping their sum.
12909 (vec_perm_indices::series_p): Handle polynomial element counts.
12910 (vec_perm_indices::all_in_range_p): Likewise.
12911 (vec_perm_indices_to_tree): Likewise.
12912 (vec_perm_indices_to_rtx): Likewise.
12913 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
12914 * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
12915 (tree_vector_builder::new_binary_operation): Handle polynomial
12916 element counts. Return false if we need to know the number
12917 of elements at compile time.
12918 * fold-const.c (fold_vec_perm): Punt if the number of elements
12919 isn't known at compile time.
12920
12921 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12922
12923 * vec-perm-indices.h (vec_perm_builder): Change element type
12924 from HOST_WIDE_INT to poly_int64.
12925 (vec_perm_indices::element_type): Update accordingly.
12926 (vec_perm_indices::clamp): Handle polynomial element_types.
12927 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
12928 (vec_perm_indices::all_in_range_p): Likewise.
12929 (tree_to_vec_perm_builder): Check for poly_int64 trees rather
12930 than shwi trees.
12931 * vector-builder.h (vector_builder::stepped_sequence_p): Handle
12932 polynomial vec_perm_indices element types.
12933 * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
12934 * fold-const.c (fold_vec_perm): Likewise.
12935 * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
12936 * tree-vect-generic.c (lower_vec_perm): Likewise.
12937 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
12938 * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
12939 element type to HOST_WIDE_INT.
12940
12941 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12942 Alan Hayward <alan.hayward@arm.com>
12943 David Sherwood <david.sherwood@arm.com>
12944
12945 * alias.c (addr_side_effect_eval): Take the size as a poly_int64
12946 rather than an int. Use plus_constant.
12947 (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
12948 Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
12949
12950 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12951 Alan Hayward <alan.hayward@arm.com>
12952 David Sherwood <david.sherwood@arm.com>
12953
12954 * calls.c (emit_call_1, expand_call): Change struct_value_size from
12955 a HOST_WIDE_INT to a poly_int64.
12956
12957 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12958 Alan Hayward <alan.hayward@arm.com>
12959 David Sherwood <david.sherwood@arm.com>
12960
12961 * calls.c (load_register_parameters): Cope with polynomial
12962 mode sizes. Require a constant size for BLKmode parameters
12963 that aren't described by a PARALLEL. If BLOCK_REG_PADDING
12964 forces a parameter to be padded at the lsb end in order to
12965 fill a complete number of words, require the parameter size
12966 to be ordered wrt UNITS_PER_WORD.
12967
12968 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12969 Alan Hayward <alan.hayward@arm.com>
12970 David Sherwood <david.sherwood@arm.com>
12971
12972 * reload1.c (spill_stack_slot_width): Change element type
12973 from unsigned int to poly_uint64_pod.
12974 (alter_reg): Treat mode sizes as polynomial.
12975
12976 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12977 Alan Hayward <alan.hayward@arm.com>
12978 David Sherwood <david.sherwood@arm.com>
12979
12980 * reload.c (complex_word_subreg_p): New function.
12981 (reload_inner_reg_of_subreg, push_reload): Use it.
12982
12983 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12984 Alan Hayward <alan.hayward@arm.com>
12985 David Sherwood <david.sherwood@arm.com>
12986
12987 * lra-constraints.c (process_alt_operands): Reject matched
12988 operands whose sizes aren't ordered.
12989 (match_reload): Refer to this check here.
12990
12991 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12992 Alan Hayward <alan.hayward@arm.com>
12993 David Sherwood <david.sherwood@arm.com>
12994
12995 * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
12996 that the mode size is in the set {1, 2, 4, 8, 16}.
12997
12998 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
12999 Alan Hayward <alan.hayward@arm.com>
13000 David Sherwood <david.sherwood@arm.com>
13001
13002 * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
13003 Use plus_constant instead of gen_rtx_PLUS.
13004
13005 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13006 Alan Hayward <alan.hayward@arm.com>
13007 David Sherwood <david.sherwood@arm.com>
13008
13009 * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
13010 * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
13011 * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
13012 * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
13013 * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
13014 * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
13015 * config/i386/i386-protos.h (ix86_push_rounding): Declare.
13016 * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
13017 * config/i386/i386.c (ix86_push_rounding): ...this new function.
13018 * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
13019 a poly_int64.
13020 * config/m32c/m32c.c (m32c_push_rounding): Likewise.
13021 * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
13022 * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
13023 * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
13024 * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
13025 * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
13026 * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
13027 * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
13028 * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
13029 * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
13030 function.
13031 * expr.c (emit_move_resolve_push): Treat the input and result
13032 of PUSH_ROUNDING as a poly_int64.
13033 (emit_move_complex_push, emit_single_push_insn_1): Likewise.
13034 (emit_push_insn): Likewise.
13035 * lra-eliminations.c (mark_not_eliminable): Likewise.
13036 * recog.c (push_operand): Likewise.
13037 * reload1.c (elimination_effects): Likewise.
13038 * rtlanal.c (nonzero_bits1): Likewise.
13039 * calls.c (store_one_arg): Likewise. Require the padding to be
13040 known at compile time.
13041
13042 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13043 Alan Hayward <alan.hayward@arm.com>
13044 David Sherwood <david.sherwood@arm.com>
13045
13046 * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
13047 Use plus_constant instead of gen_rtx_PLUS.
13048
13049 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13050 Alan Hayward <alan.hayward@arm.com>
13051 David Sherwood <david.sherwood@arm.com>
13052
13053 * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
13054 rather than an int.
13055
13056 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13057 Alan Hayward <alan.hayward@arm.com>
13058 David Sherwood <david.sherwood@arm.com>
13059
13060 * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
13061 instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
13062 via stack temporaries. Treat the mode size as polynomial too.
13063
13064 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13065 Alan Hayward <alan.hayward@arm.com>
13066 David Sherwood <david.sherwood@arm.com>
13067
13068 * expr.c (expand_expr_real_2): When handling conversions involving
13069 unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
13070 multiplying int_size_in_bytes by BITS_PER_UNIT. Treat GET_MODE_BISIZE
13071 as a poly_uint64 too.
13072
13073 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13074 Alan Hayward <alan.hayward@arm.com>
13075 David Sherwood <david.sherwood@arm.com>
13076
13077 * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
13078
13079 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13080 Alan Hayward <alan.hayward@arm.com>
13081 David Sherwood <david.sherwood@arm.com>
13082
13083 * combine.c (can_change_dest_mode): Handle polynomial
13084 REGMODE_NATURAL_SIZE.
13085 * expmed.c (store_bit_field_1): Likewise.
13086 * expr.c (store_constructor): Likewise.
13087 * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
13088 and polynomial REGMODE_NATURAL_SIZE.
13089 (gen_lowpart_common): Likewise.
13090 * reginfo.c (record_subregs_of_mode): Likewise.
13091 * rtlanal.c (read_modify_subreg_p): Likewise.
13092
13093 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13094 Alan Hayward <alan.hayward@arm.com>
13095 David Sherwood <david.sherwood@arm.com>
13096
13097 * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
13098 numbers of elements.
13099
13100 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13101 Alan Hayward <alan.hayward@arm.com>
13102 David Sherwood <david.sherwood@arm.com>
13103
13104 * match.pd: Cope with polynomial numbers of vector elements.
13105
13106 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13107 Alan Hayward <alan.hayward@arm.com>
13108 David Sherwood <david.sherwood@arm.com>
13109
13110 * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
13111 in a POINTER_PLUS_EXPR.
13112
13113 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13114 Alan Hayward <alan.hayward@arm.com>
13115 David Sherwood <david.sherwood@arm.com>
13116
13117 * omp-simd-clone.c (simd_clone_subparts): New function.
13118 (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
13119 (ipa_simd_modify_function_body): Likewise.
13120
13121 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13122 Alan Hayward <alan.hayward@arm.com>
13123 David Sherwood <david.sherwood@arm.com>
13124
13125 * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
13126 (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
13127 (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
13128 (expand_vector_condition, vector_element): Likewise.
13129 (subparts_gt): New function.
13130 (get_compute_type): Use subparts_gt.
13131 (count_type_subparts): Delete.
13132 (expand_vector_operations_1): Use subparts_gt instead of
13133 count_type_subparts.
13134
13135 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13136 Alan Hayward <alan.hayward@arm.com>
13137 David Sherwood <david.sherwood@arm.com>
13138
13139 * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
13140 (vect_compile_time_alias): ...this new function. Do the calculation
13141 on poly_ints rather than trees.
13142 (vect_prune_runtime_alias_test_list): Update call accordingly.
13143
13144 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13145 Alan Hayward <alan.hayward@arm.com>
13146 David Sherwood <david.sherwood@arm.com>
13147
13148 * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
13149 numbers of units.
13150 (vect_schedule_slp_instance): Likewise.
13151
13152 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13153 Alan Hayward <alan.hayward@arm.com>
13154 David Sherwood <david.sherwood@arm.com>
13155
13156 * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
13157 constant and extern definitions for variable-length vectors.
13158 (vect_get_constant_vectors): Note that the number of units
13159 is known to be constant.
13160
13161 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13162 Alan Hayward <alan.hayward@arm.com>
13163 David Sherwood <david.sherwood@arm.com>
13164
13165 * tree-vect-stmts.c (vectorizable_conversion): Treat the number
13166 of units as polynomial. Choose between WIDE and NARROW based
13167 on multiple_p.
13168
13169 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13170 Alan Hayward <alan.hayward@arm.com>
13171 David Sherwood <david.sherwood@arm.com>
13172
13173 * tree-vect-stmts.c (simd_clone_subparts): New function.
13174 (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
13175
13176 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13177 Alan Hayward <alan.hayward@arm.com>
13178 David Sherwood <david.sherwood@arm.com>
13179
13180 * tree-vect-stmts.c (vectorizable_call): Treat the number of
13181 vectors as polynomial. Use build_index_vector for
13182 IFN_GOMP_SIMD_LANE.
13183
13184 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13185 Alan Hayward <alan.hayward@arm.com>
13186 David Sherwood <david.sherwood@arm.com>
13187
13188 * tree-vect-stmts.c (get_load_store_type): Treat the number of
13189 units as polynomial. Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
13190 for variable-length vectors.
13191 (vectorizable_mask_load_store): Treat the number of units as
13192 polynomial, asserting that it is constant if the condition has
13193 already been enforced.
13194 (vectorizable_store, vectorizable_load): Likewise.
13195
13196 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13197 Alan Hayward <alan.hayward@arm.com>
13198 David Sherwood <david.sherwood@arm.com>
13199
13200 * tree-vect-loop.c (vectorizable_live_operation): Treat the number
13201 of units as polynomial. Punt if we can't tell at compile time
13202 which vector contains the final result.
13203
13204 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13205 Alan Hayward <alan.hayward@arm.com>
13206 David Sherwood <david.sherwood@arm.com>
13207
13208 * tree-vect-loop.c (vectorizable_induction): Treat the number
13209 of units as polynomial. Punt on SLP inductions. Use an integer
13210 VEC_SERIES_EXPR for variable-length integer reductions. Use a
13211 cast of such a series for variable-length floating-point
13212 reductions.
13213
13214 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13215 Alan Hayward <alan.hayward@arm.com>
13216 David Sherwood <david.sherwood@arm.com>
13217
13218 * tree.h (build_index_vector): Declare.
13219 * tree.c (build_index_vector): New function.
13220 * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
13221 of units as polynomial, forcibly converting it to a constant if
13222 vectorizable_reduction has already enforced the condition.
13223 (vect_create_epilog_for_reduction): Likewise. Use build_index_vector
13224 to create a {1,2,3,...} vector.
13225 (vectorizable_reduction): Treat the number of units as polynomial.
13226 Choose vectype_in based on the largest scalar element size rather
13227 than the smallest number of units. Enforce the restrictions
13228 relied on above.
13229
13230 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13231 Alan Hayward <alan.hayward@arm.com>
13232 David Sherwood <david.sherwood@arm.com>
13233
13234 * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
13235 number of units as polynomial.
13236
13237 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13238 Alan Hayward <alan.hayward@arm.com>
13239 David Sherwood <david.sherwood@arm.com>
13240
13241 * target.h (vector_sizes, auto_vector_sizes): New typedefs.
13242 * target.def (autovectorize_vector_sizes): Return the vector sizes
13243 by pointer, using vector_sizes rather than a bitmask.
13244 * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
13245 * targhooks.c (default_autovectorize_vector_sizes): Likewise.
13246 * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
13247 Likewise.
13248 * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
13249 * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
13250 * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
13251 * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
13252 * omp-general.c (omp_max_vf): Likewise.
13253 * omp-low.c (omp_clause_aligned_alignment): Likewise.
13254 * optabs-query.c (can_vec_mask_load_store_p): Likewise.
13255 * tree-vect-loop.c (vect_analyze_loop): Likewise.
13256 * tree-vect-slp.c (vect_slp_bb): Likewise.
13257 * doc/tm.texi: Regenerate.
13258 * tree-vectorizer.h (current_vector_size): Change from an unsigned int
13259 to a poly_uint64.
13260 * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
13261 the vector size as a poly_uint64 rather than an unsigned int.
13262 (current_vector_size): Change from an unsigned int to a poly_uint64.
13263 (get_vectype_for_scalar_type): Update accordingly.
13264 * tree.h (build_truth_vector_type): Take the size and number of
13265 units as a poly_uint64 rather than an unsigned int.
13266 (build_vector_type): Add a temporary overload that takes
13267 the number of units as a poly_uint64 rather than an unsigned int.
13268 * tree.c (make_vector_type): Likewise.
13269 (build_truth_vector_type): Take the number of units as a poly_uint64
13270 rather than an unsigned int.
13271
13272 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13273 Alan Hayward <alan.hayward@arm.com>
13274 David Sherwood <david.sherwood@arm.com>
13275
13276 * target.def (get_mask_mode): Take the number of units and length
13277 as poly_uint64s rather than unsigned ints.
13278 * targhooks.h (default_get_mask_mode): Update accordingly.
13279 * targhooks.c (default_get_mask_mode): Likewise.
13280 * config/i386/i386.c (ix86_get_mask_mode): Likewise.
13281 * doc/tm.texi: Regenerate.
13282
13283 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13284 Alan Hayward <alan.hayward@arm.com>
13285 David Sherwood <david.sherwood@arm.com>
13286
13287 * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
13288 * omp-general.c (omp_max_vf): Likewise.
13289 * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
13290 (expand_omp_simd): Handle polynomial safelen.
13291 * omp-low.c (omplow_simd_context): Add a default constructor.
13292 (omplow_simd_context::max_vf): Change from int to poly_uint64.
13293 (lower_rec_simd_input_clauses): Update accordingly.
13294 (lower_rec_input_clauses): Likewise.
13295
13296 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13297 Alan Hayward <alan.hayward@arm.com>
13298 David Sherwood <david.sherwood@arm.com>
13299
13300 * tree-vectorizer.h (vect_nunits_for_cost): New function.
13301 * tree-vect-loop.c (vect_model_reduction_cost): Use it.
13302 * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
13303 (vect_analyze_slp_cost): Likewise.
13304 * tree-vect-stmts.c (vect_model_store_cost): Likewise.
13305 (vect_model_load_cost): Likewise.
13306
13307 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13308 Alan Hayward <alan.hayward@arm.com>
13309 David Sherwood <david.sherwood@arm.com>
13310
13311 * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
13312 (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
13313 from an unsigned int * to a poly_uint64_pod *.
13314 (calculate_unrolling_factor): New function.
13315 (vect_analyze_slp_instance): Use it. Track polynomial max_nunits.
13316
13317 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13318 Alan Hayward <alan.hayward@arm.com>
13319 David Sherwood <david.sherwood@arm.com>
13320
13321 * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
13322 from an unsigned int to a poly_uint64.
13323 (_loop_vec_info::slp_unrolling_factor): Likewise.
13324 (_loop_vec_info::vectorization_factor): Change from an int
13325 to a poly_uint64.
13326 (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
13327 (vect_get_num_vectors): New function.
13328 (vect_update_max_nunits, vect_vf_for_cost): Likewise.
13329 (vect_get_num_copies): Use vect_get_num_vectors.
13330 (vect_analyze_data_ref_dependences): Change max_vf from an int *
13331 to an unsigned int *.
13332 (vect_analyze_data_refs): Change min_vf from an int * to a
13333 poly_uint64 *.
13334 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
13335 than an unsigned HOST_WIDE_INT.
13336 * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
13337 (vect_analyze_data_ref_dependence): Change max_vf from an int *
13338 to an unsigned int *.
13339 (vect_analyze_data_ref_dependences): Likewise.
13340 (vect_compute_data_ref_alignment): Handle polynomial vf.
13341 (vect_enhance_data_refs_alignment): Likewise.
13342 (vect_prune_runtime_alias_test_list): Likewise.
13343 (vect_shift_permute_load_chain): Likewise.
13344 (vect_supportable_dr_alignment): Likewise.
13345 (dependence_distance_ge_vf): Take the vectorization factor as a
13346 poly_uint64 rather than an unsigned HOST_WIDE_INT.
13347 (vect_analyze_data_refs): Change min_vf from an int * to a
13348 poly_uint64 *.
13349 * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
13350 vfm1 as a poly_uint64 rather than an int. Make the same change
13351 for the returned bound_scalar.
13352 (vect_gen_vector_loop_niters): Handle polynomial vf.
13353 (vect_do_peeling): Likewise. Update call to
13354 vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
13355 (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
13356 be constant.
13357 * tree-vect-loop.c (vect_determine_vectorization_factor)
13358 (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
13359 (vect_get_known_peeling_cost): Likewise.
13360 (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
13361 (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
13362 (vect_transform_loop): Likewise. Use the lowest possible VF when
13363 updating the upper bounds of the loop.
13364 (vect_min_worthwhile_factor): Make static. Return an unsigned int
13365 rather than an int.
13366 * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
13367 polynomial unroll factors.
13368 (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
13369 (vect_make_slp_decision): Likewise.
13370 (vect_supported_load_permutation_p): Likewise, and polynomial
13371 vf too.
13372 (vect_analyze_slp_cost): Handle polynomial vf.
13373 (vect_slp_analyze_node_operations): Likewise.
13374 (vect_slp_analyze_bb_1): Likewise.
13375 (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
13376 than an unsigned HOST_WIDE_INT.
13377 * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
13378 (vectorizable_load): Handle polynomial vf.
13379 * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
13380 a poly_uint64.
13381 (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
13382
13383 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13384 Alan Hayward <alan.hayward@arm.com>
13385 David Sherwood <david.sherwood@arm.com>
13386
13387 * match.pd: Handle bit operations involving three constants
13388 and try to fold one pair.
13389
13390 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
13391
13392 * tree-vect-loop-manip.c: Include gimple-fold.h.
13393 (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
13394 niters_maybe_zero parameters. Handle other cases besides a step of 1.
13395 (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
13396 Add a path that uses a step of VF instead of 1, but disable it
13397 for now.
13398 (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
13399 and niters_no_overflow parameters. Update calls to
13400 slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
13401 Create a new SSA name if the latter choses to use a ste other
13402 than zero, and return it via niters_vector_mult_vf_var.
13403 * tree-vect-loop.c (vect_transform_loop): Update calls to
13404 vect_do_peeling, vect_gen_vector_loop_niters and
13405 slpeel_make_loop_iterate_ntimes.
13406 * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
13407 (vect_gen_vector_loop_niters): Update declarations after above changes.
13408
13409 2018-01-02 Michael Meissner <meissner@linux.vnet.ibm.com>
13410
13411 * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
13412 128-bit round to integer instructions.
13413 (ceil<mode>2): Likewise.
13414 (btrunc<mode>2): Likewise.
13415 (round<mode>2): Likewise.
13416
13417 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
13418
13419 * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
13420 unaligned VSX load/store on P8/P9.
13421 (expand_block_clear): Allow the use of unaligned VSX
13422 load/store on P8/P9.
13423
13424 2018-01-02 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
13425
13426 * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
13427 New function.
13428 (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
13429 swap associated with both a load and a store.
13430
13431 2018-01-02 Andrew Waterman <andrew@sifive.com>
13432
13433 * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
13434 * config/riscv/riscv.md (clear_cache): Use it.
13435
13436 2018-01-02 Artyom Skrobov <tyomitch@gmail.com>
13437
13438 * web.c: Remove out-of-date comment.
13439
13440 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13441
13442 * expr.c (fixup_args_size_notes): Check that any existing
13443 REG_ARGS_SIZE notes are correct, and don't try to re-add them.
13444 (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
13445 (emit_single_push_insn): ...here.
13446
13447 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13448
13449 * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
13450 (const_vector_encoded_nelts): New function.
13451 (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
13452 (const_vector_int_elt, const_vector_elt): Declare.
13453 * emit-rtl.c (const_vector_int_elt_1): New function.
13454 (const_vector_elt): Likewise.
13455 * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
13456 of CONST_VECTOR_ELT.
13457
13458 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13459
13460 * expr.c: Include rtx-vector-builder.h.
13461 (const_vector_mask_from_tree): Use rtx_vector_builder and operate
13462 directly on the tree encoding.
13463 (const_vector_from_tree): Likewise.
13464 * optabs.c: Include rtx-vector-builder.h.
13465 (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
13466 sequence of "u" values.
13467 * vec-perm-indices.c: Include rtx-vector-builder.h.
13468 (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
13469 directly on the vec_perm_indices encoding.
13470
13471 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13472
13473 * doc/rtl.texi (const_vector): Describe new encoding scheme.
13474 * Makefile.in (OBJS): Add rtx-vector-builder.o.
13475 * rtx-vector-builder.h: New file.
13476 * rtx-vector-builder.c: Likewise.
13477 * rtl.h (rtx_def::u2): Add a const_vector field.
13478 (CONST_VECTOR_NPATTERNS): New macro.
13479 (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
13480 (CONST_VECTOR_DUPLICATE_P): Likewise.
13481 (CONST_VECTOR_STEPPED_P): Likewise.
13482 (CONST_VECTOR_ENCODED_ELT): Likewise.
13483 (const_vec_duplicate_p): Check for a duplicated vector encoding.
13484 (unwrap_const_vec_duplicate): Likewise.
13485 (const_vec_series_p): Check for a non-duplicated vector encoding.
13486 Say that the function only returns true for integer vectors.
13487 * emit-rtl.c: Include rtx-vector-builder.h.
13488 (gen_const_vec_duplicate_1): Delete.
13489 (gen_const_vector): Call gen_const_vec_duplicate instead of
13490 gen_const_vec_duplicate_1.
13491 (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
13492 (gen_const_vec_duplicate): Use rtx_vector_builder.
13493 (gen_const_vec_series): Likewise.
13494 (gen_rtx_CONST_VECTOR): Likewise.
13495 * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
13496 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
13497 Build a new vector rather than modifying a CONST_VECTOR in-place.
13498 (handle_special_swappables): Update call accordingly.
13499 * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
13500 (swap_const_vector_halves): Take an rtx pointer rather than rtx.
13501 Build a new vector rather than modifying a CONST_VECTOR in-place.
13502 (handle_special_swappables): Update call accordingly.
13503
13504 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13505
13506 * simplify-rtx.c (simplify_const_binary_operation): Use
13507 CONST_VECTOR_ELT instead of XVECEXP.
13508
13509 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13510
13511 * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
13512 the selector elements to be different from the data elements
13513 if the selector is a VECTOR_CST.
13514 * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
13515 ssizetype for the selector.
13516
13517 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13518
13519 * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
13520 before testing each element individually.
13521 * tree-vect-generic.c (lower_vec_perm): Likewise.
13522
13523 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13524
13525 * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
13526 * selftest-run-tests.c (selftest::run_tests): Call it.
13527 * vector-builder.h (vector_builder::operator ==): New function.
13528 (vector_builder::operator !=): Likewise.
13529 * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
13530 (vec_perm_indices::all_from_input_p): New function.
13531 * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
13532 (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
13533 * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
13534 instead of reading the VECTOR_CST directly. Detect whether both
13535 vector inputs are the same before constructing the vec_perm_indices,
13536 and update the number of inputs argument accordingly. Use the
13537 utility functions added above. Only construct sel2 if we need to.
13538
13539 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13540
13541 * optabs.c (expand_vec_perm_var): Use an explicit encoding for
13542 the broadcast of the low byte.
13543 (expand_mult_highpart): Use an explicit encoding for the permutes.
13544 * optabs-query.c (can_mult_highpart_p): Likewise.
13545 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
13546 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13547 (vectorizable_bswap): Likewise.
13548 * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
13549 explicit encoding for the power-of-2 permutes.
13550 (vect_permute_store_chain): Likewise.
13551 (vect_grouped_load_supported): Likewise.
13552 (vect_permute_load_chain): Likewise.
13553
13554 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13555
13556 * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
13557 * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
13558 * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
13559 * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
13560 * tree-vect-stmts.c (vectorizable_bswap): Likewise.
13561 (vect_gen_perm_mask_any): Likewise.
13562
13563 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13564
13565 * int-vector-builder.h: New file.
13566 * vec-perm-indices.h: Include int-vector-builder.h.
13567 (vec_perm_indices): Redefine as an int_vector_builder.
13568 (auto_vec_perm_indices): Delete.
13569 (vec_perm_builder): Redefine as a stand-alone class.
13570 (vec_perm_indices::vec_perm_indices): New function.
13571 (vec_perm_indices::clamp): Likewise.
13572 * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
13573 (vec_perm_indices::new_vector): New function.
13574 (vec_perm_indices::new_expanded_vector): Update for new
13575 vec_perm_indices class.
13576 (vec_perm_indices::rotate_inputs): New function.
13577 (vec_perm_indices::all_in_range_p): Operate directly on the
13578 encoded form, without computing elided elements.
13579 (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
13580 encoding. Update for new vec_perm_indices class.
13581 * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
13582 the given vec_perm_builder.
13583 (expand_vec_perm_var): Update vec_perm_builder constructor.
13584 (expand_mult_highpart): Use vec_perm_builder instead of
13585 auto_vec_perm_indices.
13586 * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
13587 vec_perm_indices instead of auto_vec_perm_indices. Use a single
13588 or double series encoding as appropriate.
13589 * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
13590 vec_perm_indices instead of auto_vec_perm_indices.
13591 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13592 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13593 (vect_permute_store_chain): Likewise.
13594 (vect_grouped_load_supported): Likewise.
13595 (vect_permute_load_chain): Likewise.
13596 (vect_shift_permute_load_chain): Likewise.
13597 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13598 (vect_transform_slp_perm_load): Likewise.
13599 (vect_schedule_slp_instance): Likewise.
13600 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13601 (vectorizable_mask_load_store): Likewise.
13602 (vectorizable_bswap): Likewise.
13603 (vectorizable_store): Likewise.
13604 (vectorizable_load): Likewise.
13605 * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
13606 vec_perm_indices instead of auto_vec_perm_indices. Use
13607 tree_to_vec_perm_builder to read the vector from a tree.
13608 * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
13609 vec_perm_builder instead of a vec_perm_indices.
13610 (have_whole_vector_shift): Use vec_perm_builder and
13611 vec_perm_indices instead of auto_vec_perm_indices. Leave the
13612 truncation to calc_vec_perm_mask_for_shift.
13613 (vect_create_epilog_for_reduction): Likewise.
13614 * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
13615 from auto_vec_perm_indices to vec_perm_indices.
13616 (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
13617 instead of changing individual elements.
13618 (aarch64_vectorize_vec_perm_const): Use new_vector to install
13619 the vector in d.perm.
13620 * config/arm/arm.c (expand_vec_perm_d::perm): Change
13621 from auto_vec_perm_indices to vec_perm_indices.
13622 (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
13623 instead of changing individual elements.
13624 (arm_vectorize_vec_perm_const): Use new_vector to install
13625 the vector in d.perm.
13626 * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
13627 Update vec_perm_builder constructor.
13628 (rs6000_expand_interleave): Likewise.
13629 * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
13630 (rs6000_expand_interleave): Likewise.
13631
13632 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13633
13634 * optabs-query.c (can_vec_perm_var_p): Check whether lowering
13635 to qimode could truncate the indices.
13636 * optabs.c (expand_vec_perm_var): Likewise.
13637
13638 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13639
13640 * Makefile.in (OBJS): Add vec-perm-indices.o.
13641 * vec-perm-indices.h: New file.
13642 * vec-perm-indices.c: Likewise.
13643 * target.h (vec_perm_indices): Replace with a forward class
13644 declaration.
13645 (auto_vec_perm_indices): Move to vec-perm-indices.h.
13646 * optabs.h: Include vec-perm-indices.h.
13647 (expand_vec_perm): Delete.
13648 (selector_fits_mode_p, expand_vec_perm_var): Declare.
13649 (expand_vec_perm_const): Declare.
13650 * target.def (vec_perm_const_ok): Replace with...
13651 (vec_perm_const): ...this new hook.
13652 * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
13653 (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
13654 * doc/tm.texi: Regenerate.
13655 * optabs.def (vec_perm_const): Delete.
13656 * doc/md.texi (vec_perm_const): Likewise.
13657 (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
13658 * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
13659 expand_vec_perm for constant permutation vectors. Assert that
13660 the mode of variable permutation vectors is the integer equivalent
13661 of the mode that is being permuted.
13662 * optabs-query.h (selector_fits_mode_p): Declare.
13663 * optabs-query.c: Include vec-perm-indices.h.
13664 (selector_fits_mode_p): New function.
13665 (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
13666 is defined, instead of checking whether the vec_perm_const_optab
13667 exists. Use targetm.vectorize.vec_perm_const instead of
13668 targetm.vectorize.vec_perm_const_ok. Check whether the indices
13669 fit in the vector mode before using a variable permute.
13670 * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
13671 vec_perm_indices instead of an rtx.
13672 (expand_vec_perm): Replace with...
13673 (expand_vec_perm_const): ...this new function. Take the selector
13674 as a vec_perm_indices rather than an rtx. Also take the mode of
13675 the selector. Update call to shift_amt_for_vec_perm_mask.
13676 Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
13677 Use vec_perm_indices::new_expanded_vector to expand the original
13678 selector into bytes. Check whether the indices fit in the vector
13679 mode before using a variable permute.
13680 (expand_vec_perm_var): Make global.
13681 (expand_mult_highpart): Use expand_vec_perm_const.
13682 * fold-const.c: Includes vec-perm-indices.h.
13683 * tree-ssa-forwprop.c: Likewise.
13684 * tree-vect-data-refs.c: Likewise.
13685 * tree-vect-generic.c: Likewise.
13686 * tree-vect-loop.c: Likewise.
13687 * tree-vect-slp.c: Likewise.
13688 * tree-vect-stmts.c: Likewise.
13689 * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
13690 Delete.
13691 * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
13692 * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
13693 (aarch64_vectorize_vec_perm_const_ok): Fuse into...
13694 (aarch64_vectorize_vec_perm_const): ...this new function.
13695 (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13696 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13697 * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
13698 * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
13699 * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13700 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13701 (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
13702 into...
13703 (arm_vectorize_vec_perm_const): ...this new function. Explicitly
13704 check for NEON modes.
13705 * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
13706 * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
13707 * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
13708 (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
13709 into...
13710 (ix86_vectorize_vec_perm_const): ...this new function. Incorporate
13711 the old VEC_PERM_CONST conditions.
13712 * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
13713 * config/ia64/vect.md (vec_perm_const<mode>): Delete.
13714 * config/ia64/ia64.c (ia64_expand_vec_perm_const)
13715 (ia64_vectorize_vec_perm_const_ok): Merge into...
13716 (ia64_vectorize_vec_perm_const): ...this new function.
13717 * config/mips/loongson.md (vec_perm_const<mode>): Delete.
13718 * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
13719 * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
13720 * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
13721 * config/mips/mips.c (mips_expand_vec_perm_const)
13722 (mips_vectorize_vec_perm_const_ok): Merge into...
13723 (mips_vectorize_vec_perm_const): ...this new function.
13724 * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
13725 * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
13726 * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
13727 * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
13728 * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
13729 (rs6000_expand_vec_perm_const): Delete.
13730 * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
13731 Delete.
13732 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13733 (altivec_expand_vec_perm_const_le): Take each operand individually.
13734 Operate on constant selectors rather than rtxes.
13735 (altivec_expand_vec_perm_const): Likewise. Update call to
13736 altivec_expand_vec_perm_const_le.
13737 (rs6000_expand_vec_perm_const): Delete.
13738 (rs6000_vectorize_vec_perm_const_ok): Delete.
13739 (rs6000_vectorize_vec_perm_const): New function.
13740 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
13741 an element count and rtx array.
13742 (rs6000_expand_extract_even): Update call accordingly.
13743 (rs6000_expand_interleave): Likewise.
13744 * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
13745 * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
13746 * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
13747 * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
13748 (rs6000_expand_vec_perm_const): Delete.
13749 * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
13750 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13751 (altivec_expand_vec_perm_const_le): Take each operand individually.
13752 Operate on constant selectors rather than rtxes.
13753 (altivec_expand_vec_perm_const): Likewise. Update call to
13754 altivec_expand_vec_perm_const_le.
13755 (rs6000_expand_vec_perm_const): Delete.
13756 (rs6000_vectorize_vec_perm_const_ok): Delete.
13757 (rs6000_vectorize_vec_perm_const): New function. Remove stray
13758 reference to the SPE evmerge intructions.
13759 (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
13760 an element count and rtx array.
13761 (rs6000_expand_extract_even): Update call accordingly.
13762 (rs6000_expand_interleave): Likewise.
13763 * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
13764 * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
13765 new function.
13766 (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
13767
13768 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13769
13770 * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
13771 vector mode and that that mode matches the mode of the data
13772 being permuted.
13773 (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
13774 out into expand_vec_perm_var. Do all CONST_VECTOR handling here,
13775 directly using expand_vec_perm_1 when forcing selectors into
13776 registers.
13777 (expand_vec_perm_var): New function, split out from expand_vec_perm.
13778
13779 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13780
13781 * optabs-query.h (can_vec_perm_p): Delete.
13782 (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
13783 * optabs-query.c (can_vec_perm_p): Split into...
13784 (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
13785 (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
13786 particular selector is valid.
13787 * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
13788 * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
13789 (vect_grouped_load_supported): Likewise.
13790 (vect_shift_permute_load_chain): Likewise.
13791 * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
13792 (vect_transform_slp_perm_load): Likewise.
13793 * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
13794 (vectorizable_bswap): Likewise.
13795 (vect_gen_perm_mask_checked): Likewise.
13796 * fold-const.c (fold_ternary_loc): Likewise. Don't take
13797 implementations of variable permutation vectors into account
13798 when deciding which selector to use.
13799 * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
13800 vec_perm_const_optab is supported; instead use can_vec_perm_const_p
13801 with a false third argument.
13802 * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
13803 to test whether the constant selector is valid and can_vec_perm_var_p
13804 to test whether a variable selector is valid.
13805
13806 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13807
13808 * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
13809 * optabs-query.c (can_vec_perm_p): Likewise.
13810 * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
13811 instead of vec_perm_indices.
13812 * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
13813 (vect_gen_perm_mask_checked): Likewise,
13814 * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
13815 (vect_gen_perm_mask_checked): Likewise,
13816
13817 2018-01-02 Richard Sandiford <richard.sandiford@linaro.org>
13818
13819 * optabs-query.h (qimode_for_vec_perm): Declare.
13820 * optabs-query.c (can_vec_perm_p): Split out qimode search to...
13821 (qimode_for_vec_perm): ...this new function.
13822 * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
13823
13824 2018-01-02 Aaron Sawdey <acsawdey@linux.vnet.ibm.com>
13825
13826 * rtlanal.c (canonicalize_condition): Return 0 if final rtx
13827 does not have a conditional at the top.
13828
13829 2018-01-02 Richard Biener <rguenther@suse.de>
13830
13831 * ipa-inline.c (big_speedup_p): Fix expression.
13832
13833 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
13834
13835 PR target/81616
13836 * config/i386/x86-tune-costs.h: Increase cost of integer load costs
13837 for generic 4->6.
13838
13839 2018-01-02 Jan Hubicka <hubicka@ucw.cz>
13840
13841 PR target/81616
13842 Generic tuning.
13843 * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
13844 cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
13845 and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
13846 cond_taken_branch_cost 3->4.
13847
13848 2018-01-01 Jakub Jelinek <jakub@redhat.com>
13849
13850 PR tree-optimization/83581
13851 * tree-loop-distribution.c (pass_loop_distribution::execute): Return
13852 TODO_cleanup_cfg if any changes have been made.
13853
13854 PR middle-end/83608
13855 * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
13856 convert_modes if target mode has the right side, but different mode
13857 class.
13858
13859 PR middle-end/83609
13860 * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
13861 last argument when extracting from CONCAT. If either from_real or
13862 from_imag is NULL, use expansion through memory. If result is not
13863 a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
13864 the parts directly to inner mode, if even that fails, use expansion
13865 through memory.
13866
13867 PR middle-end/83623
13868 * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
13869 check for bswap in mode rather than HImode and use that in expand_unop
13870 too.
13871 \f
13872 Copyright (C) 2018 Free Software Foundation, Inc.
13873
13874 Copying and distribution of this file, with or without modification,
13875 are permitted in any medium without royalty provided the copyright
13876 notice and this notice are preserved.