Revert 2 ::get to ::get_create for IPA summaries (PR ipa/86279).
[official-gcc.git] / gcc / ChangeLog
blob5c1b097c2af3a63b753908e9c4bc19d5e134c3e6
1 2018-07-02  Martin Liska  <mliska@suse.cz>
3         PR ipa/86279
4         * ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get.
5         (propagate_nothrow): Likewise.
7 2018-07-02  Martin Liska  <mliska@suse.cz>
9         PR ipa/86323
10         * ipa-inline.c (early_inliner): Revert wrongly added ::get call.
12 2018-07-02  David Malcolm  <dmalcolm@redhat.com>
14         * dumpfile.c (dump_generic_expr_loc): Undo removal of this
15         function in r262149, changing "loc" param from source_location to
16         const dump_location_t &.
17         * dumpfile.h (dump_generic_expr_loc): Undo removal of this
18         declaration, as above.
20 2018-07-01  Paul Koning  <ni1d@arrl.net>
22         * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
23         -munit-asm, -mgnu-asm, -mdec-asm.
24         * config/pdp11/pdp11-protos.h (pdp11_gen_int_label): New.
25         (pdp11_output_labelref): New.
26         (pdp11_output_def): New.
27         (pdp11_output_addr_vec_elt): New.
28         * config/pdp11/pdp11.c: Use tab between opcode and operands.  Use
29         %# and %@ format codes.
30         (pdp11_option_override): New.
31         (TARGET_ASM_FILE_START_FILE_DIRECTIVE): Define.
32         (pdp11_output_ident): New.
33         (pdp11_asm_named_section): New.
34         (pdp11_asm_init_sections): New.
35         (pdp11_file_start): New.
36         (pdp11_file_end): New.
37         (output_ascii): Use .ascii/.asciz for -mdec-asm.
38         (pdp11_asm_print_operand): Update %# and %$ for -mdec-asm.  Add
39         %o, like %c but octal.
40         (pdp11_option_override): New.
41         * config/pdp11/pdp11.h (TEXT_SECTION_ASM_OP): Update for
42         -mdec-asm.
43         (DATA_SECTION_ASM_OP): Ditto.
44         (READONLY_DATA_SECTION_ASM_OP): New.
45         (IS_ASM_LOGICAL_LINE_SEPARATOR): New.
46         (ASM_GENERATE_INTERNAL_LABEL): Use new function.
47         (ASM_OUTPUT_LABELREF): Ditto.
48         (ASM_OUTPUT_DEF): Ditto.
49         (ASM_OUTPUT_EXTERNAL): New.
50         (ASM_OUTPUT_SOURCE_FILENAME): New.
51         (ASM_OUTPUT_ADDR_VEC_ELT): Use new function.
52         (ASM_OUTPUT_SKIP): Update for -mdec-asm.
53         * config/pdp11/pdp11.md: Use tab between opcode and operands.  Use
54         %# and %@ format codes.
55         * config/pdp11/pdp11.opt (mgnu-asm): New.
56         (mdec-asm): Conflicts with -mgnu-asm and -munix-asm.
57         (munix-asm): Conflicts with -mdec-asm and -mgnu-asm.
58         * doc/invoke.txt (PDP-11 Options): Add -mgnu-asm.
60 2018-07-01  Aldy Hernandez  <aldyh@redhat.com>
62         * tree-ssa-threadupdate.c (mark_threaded_blocks): Avoid
63         dereferencing path[] beyond its length.
64         (debug_path): New.
65         (debug_all_paths): New.
66         (rewire_first_differing_edge): New.
67         (adjust_paths_after_duplication): New.
68         (duplicate_thread_path): Call adjust_paths_after_duplication.
69         Add new argument.
70         (thread_through_all_blocks): Add new argument to
71         duplicate_thread_path.
73 2018-06-30  Jim Wilson  <jimw@sifive.com>
75         * config/riscv/predicates.md (p2m1_shift_operand): New.
76         (high_mask_shift_operand): New.
77         * config/riscv/riscv.md (lshrsi3_zero_extend_3+1): New combiner
78         pattern using p2m1_shift_operand.
79         (lshsi3_zero_extend_3+2): New combiner pattern using
80         high_mask_shift_operand.
82 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
84         * tree-vect-patterns.c (vect_get_external_def_edge): New function,
85         split out from...
86         (vect_recog_rotate_pattern): ...here.
87         (vect_convert_input): Try to insert casts of invariants in the
88         preheader.
89         * tree-vect-loop-manip.c (vect_loop_versioning): Don't require the
90         preheader to be empty.
92 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
94         * tree-vect-patterns.c (append_pattern_def_seq): Take an optional
95         vector type.  If given, install it in the new statement's
96         STMT_VINFO_VECTYPE.
97         (vect_element_precision): New function.
98         (vect_unpromoted_value): New struct.
99         (vect_unpromoted_value::vect_unpromoted_value): New function.
100         (vect_unpromoted_value::set_op): Likewise.
101         (vect_look_through_possible_promotion): Likewise.
102         (vect_joust_widened_integer, vect_joust_widened_type): Likewise.
103         (vect_widened_op_tree, vect_convert_input): Likewise.
104         (vect_convert_inputs, vect_convert_output): Likewise.
105         (vect_recog_dot_prod_pattern): Use vect_look_through_possible_promotion
106         to handle the optional cast of the multiplication result and
107         vect_widened_op_tree to detect the widened multiplication itself.
108         Do not require the input and output of promotion casts to have
109         the same sign, but base the signedness of the operation on the
110         input rather than the result.  If the pattern includes two
111         promotions, check that those promotions have the same sign.
112         Do not restrict the MULT_EXPR handling to a double-width result;
113         handle quadruple-width results and wider.  Use vect_convert_inputs
114         to convert the inputs to the common type.
115         (vect_recog_sad_pattern):  Use vect_look_through_possible_promotion
116         to handle the optional cast of the ABS result.  Also allow a sign
117         change or a sign extension between the ABS and MINUS.
118         Use vect_widened_op_tree to detect the widened subtraction and use
119         vect_convert_inputs to convert the inputs to the common type.
120         (vect_handle_widen_op_by_const): Delete.
121         (vect_recog_widen_op_pattern): New function.
122         (vect_recog_widen_mult_pattern): Use it.
123         (vect_recog_widen_shift_pattern): Likewise.
124         (vect_recog_widen_sum_pattern): Use
125         vect_look_through_possible_promotion to handle the promoted
126         PLUS_EXPR operand.
128 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
130         * gimple-iterator.c (gsi_for_stmt): Add a new overload that takes
131         the containing gimple_seq *.
132         * gimple-iterator.h (gsi_for_stmt): Declare it.
133         * tree-vect-patterns.c (vect_recog_dot_prod_pattern)
134         (vect_recog_sad_pattern, vect_recog_widen_sum_pattern)
135         (vect_recog_widen_shift_pattern, vect_recog_rotate_pattern)
136         (vect_recog_vector_vector_shift_pattern, vect_recog_divmod_pattern)
137         (vect_recog_mask_conversion_pattern): Remove STMT_VINFO_IN_PATTERN_P
138         checks.
139         (vect_init_pattern_stmt, vect_set_pattern_stmt): New functions,
140         split out from...
141         (vect_mark_pattern_stmts): ...here.  Handle cases in which the
142         statement being replaced is part of an existing pattern
143         definition sequence, inserting the new pattern statements before
144         the original one.
145         (vect_pattern_recog_1): Don't return a bool.  If the statement
146         is already part of a pattern, instead apply pattern matching
147         to the pattern definition statements.  Don't clear the
148         STMT_VINFO_RELATED_STMT if is_pattern_stmt_p.
149         (vect_pattern_recog): Don't break after the first match;
150         continue processing the pattern definition statements instead.
151         Don't bail out for STMT_VINFO_IN_PATTERN_P here.
153 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
155         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
156         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
157         (vect_recog_widen_sum_pattern): Use it.
159 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
161         * tree-vect-loop.c (vectorizable_reduction): Assert that the
162         phi is not a pattern statement and has not been replaced by
163         a pattern statement.
164         * tree-vect-patterns.c (type_conversion_p): Don't check
165         STMT_VINFO_IN_PATTERN_P.
166         (vect_recog_vector_vector_shift_pattern): Likewise.
167         (vect_recog_dot_prod_pattern): Expect vect_is_simple_use to return
168         the pattern statement rather than the original statement; check
169         directly for a WIDEN_MULT_EXPR here.
170         * tree-vect-slp.c (vect_get_and_check_slp_defs): Expect
171         vect_is_simple_use to return the pattern statement rather
172         than the original statement; use is_pattern_stmt_p to check
173         for such a pattern statement.
174         * tree-vect-stmts.c (process_use): Expect vect_is_simple_use
175         to return the pattern statement rather than the original statement;
176         don't do the same transformation here.
177         (vect_is_simple_use): If the defining statement has been replaced
178         by a pattern statement, return the pattern statement instead.
179         Remove the corresponding (local) transformation from the vectype
180         overload.
182 2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
184         * tree-vectorizer.h (vect_is_simple_use): Move the gimple ** to the
185         end and default to null.
186         * tree-vect-loop.c (vect_create_epilog_for_reduction)
187         (vectorizable_reduction): Update calls accordingly, dropping the
188         gimple ** argument if the passed-back statement isn't needed.
189         * tree-vect-patterns.c (vect_get_internal_def, type_conversion_p)
190         (vect_recog_rotate_pattern): Likewise.
191         (vect_recog_mask_conversion_pattern): Likewise.
192         * tree-vect-slp.c (vect_get_and_check_slp_defs): Likewise.
193         (vect_mask_constant_operand_p): Likewise.
194         * tree-vect-stmts.c (is_simple_and_all_uses_invariant, process_use):
195         (vect_model_simple_cost, vect_get_vec_def_for_operand): Likewise.
196         (get_group_load_store_type, get_load_store_type): Likewise.
197         (vect_check_load_store_mask, vect_check_store_rhs): Likewise.
198         (vectorizable_call, vectorizable_simd_clone_call): Likewise.
199         (vectorizable_conversion, vectorizable_assignment): Likewise.
200         (vectorizable_shift, vectorizable_operation): Likewise.
201         (vectorizable_store, vect_is_simple_cond): Likewise.
202         (vectorizable_condition, vectorizable_comparison): Likewise.
203         (get_same_sized_vectype, vect_get_mask_type_for_stmt): Likewise.
204         (vect_is_simple_use): Rename the def_stmt argument to def_stmt_out
205         and move it to the end.  Cope with null def_stmt_outs.
207 2018-06-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>
209         * Makefile.in (FLAGS_TO_PASS): Add RANLIB_FOR_TARGET.
211 2018-06-29  Jeff Law  <law@redhat.com>
213         * config/v850/v850.c (v850_legitimate_address_p): Handle large
214         displacements for TARGET_V850E2V3 and newer.
215         (TARGET_LRA_P): Remove.  Defaults to LRA now.
216         * config/v850/v850.md (sign23byte_load): Remove.
217         (unsign23byte_load, sign23hword_load, unsign23hword_load): Likewise.
218         (23word_load, 23byte_store, 23hword_store, 23word_store): Likewise.
220 2018-06-29  Martin Liska  <mliska@suse.cz>
222         PR lto/85759
223         * coverage.c (coverage_init): Mangle full path name.
224         * doc/invoke.texi: Document the change.
225         * gcov-io.c (mangle_path): New.
226         * gcov-io.h (mangle_path): Likewise.
227         * gcov.c (mangle_name): Use mangle_path for path mangling.
229 2018-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
231         * config/arm/arm.c (output_move_double): Don't allow STRD instructions
232         if starting source register is not even.
234 2018-06-29  Martin Liska  <mliska@suse.cz>
236         PR tree-optimization/86263
237         * tree-switch-conversion.c (switch_decision_tree::try_switch_expansion):
238         Make edge redirection.
240 2018-06-29  David Malcolm  <dmalcolm@redhat.com>
242         * dumpfile.c (dump_loc): Add indentation based on scope depth.
243         (dump_scope_depth): New variable.
244         (get_dump_scope_depth): New function.
245         (dump_begin_scope): New function.
246         (dump_end_scope): New function.
247         * dumpfile.h (get_dump_scope_depth): New declaration.
248         (dump_begin_scope): New declaration.
249         (dump_end_scope): New declaration.
250         (class auto_dump_scope): New class.
251         (AUTO_DUMP_SCOPE): New macro.
252         * tree-vectorizer.h (DUMP_VECT_SCOPE): Reimplement in terms of
253         AUTO_DUMP_SCOPE.
255 2018-06-29  Richard Biener  <rguenther@suse.de>
257         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Assert
258         compute_all_dependences succeeds.
259         * tree-vect-loop.c (vect_get_datarefs_in_loop): Fail early if we
260         exceed --param loop-max-datarefs-for-datadeps.
262 2018-06-29  Jakub Jelinek  <jakub@redhat.com>
264         * config/rs6000/t-rs6000: Append rs6000-modes.h to TM_H.
266 2018-06-28  Uros Bizjak  <ubizjak@gmail.com>
268         PR target/86348
269         * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): Use
270         alternative 0 in preferred_for_speed attribute.
272 2018-06-28  Paul Koning  <ni1d@arrl.net>
274         * config/pdp11/pdp11-protos.h (pdp11_shift_length): New function.
275         * config/pdp11/pdp11.c (pdp11_shift_length): New function.
276         * config/pdp11/pdp11.h (ADJUST_INSN_LENGTH): Remove.
277         * config/pdp11/pdp11.md: Correct "length" attribute calculation
278         for shift insn patterns.
280 2018-06-28  David Malcolm  <dmalcolm@redhat.com>
282         * cgraph.c (cgraph_node::get_body): Replace assignments to
283         "dump_file" with calls to set_dump_file.
284         * dumpfile.c (alt_dump_file): Make static, and group with...
285         (alt_flags): ...this definition.
286         (dumps_are_enabled): New variable.
287         (refresh_dumps_are_enabled): New function.
288         (set_dump_file): New function.
289         (set_alt_dump_file): New function.
290         (gcc::dump_manager::dump_start): Replace assignments to
291         "dump_file" and "alt_dump_file" with calls to set_dump_file and
292         set_alt_dump_file.
293         (gcc::dump_manager::dump_finish): Likewise.
294         * dumpfile.h (alt_dump_file): Delete decl.
295         (dumps_are_enabled): New variable decl.
296         (set_dump_file): New function decl.
297         (dump_enabled_p): Rewrite in terms of new "dumps_are_enabled"
298         global.
299         * tree-nested.c (lower_nested_functions): Replace assignments to
300         "dump_file" with calls to set_dump_file.
302 2018-06-28  Eric Botcazou  <ebotcazou@adacore.com>
304         * tree-cfg.c (verify_gimple_in_cfg): Call verify_location on the
305         goto_locus of each outgoing edge of each basic block.
307 2018-06-28  Richard Biener  <rguenther@suse.de>
309         * dwarf2out.c (decl_scope_table): Remove.
310         (push_decl_scope): Likewise.
311         (pop_decl_scope): Likewise.
312         (gen_type_die_for_member): Do not call push/pop_decl_scope.
313         (gen_struct_or_union_type_die): Likewise.
314         (gen_tagged_type_die): Likewise.
315         (dwarf2out_init): Do not initialize decl_scope_table.
316         (dwarf2out_c_finalize): Do not free it.
318 2018-06-28  Richard Biener  <rguenther@suse.de>
320         * dwarf2out.c (gen_subprogram_die): Use is_unit_die when
321         deciding whether to not re-use a DIE.
323 2018-06-28  Richard Biener  <rguenther@suse.de>
325         * dwarf2out.c (gen_subprogram_die): Always re-use DIEs with an
326         DW_AT_abstract_origin attribute.
328 2018-06-28  Martin Liska  <mliska@suse.cz>
330         * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
331         Use newly introduced constants.
332         * tree-switch-conversion.h (struct jump_table_cluster):
333         Define max_ratio_for_size and max_ratio_for_speed.
335 2018-06-28  Martin Liska  <mliska@suse.cz>
337         * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
338         Add new checking assert to catch invalid state.
339         (jump_table_cluster::can_be_handled): Handle single case
340         clusters.
341         (jump_table_cluster::is_beneficial): Bail out for such case.
342         (bit_test_cluster::find_bit_tests):
343         Add new checking assert to catch invalid state.
344         (bit_test_cluster::can_be_handled): Handle single case
345         clusters.
346         (bit_test_cluster::is_beneficial): Bail out for such case.
347         (switch_decision_tree::analyze_switch_statement):
348         Fix comment.
350 2018-06-28  Martin Liska  <mliska@suse.cz>
352         * common.opt: Introduce -completion option.
353         * gcc.c (driver_handle_option): Handle it.
354         (driver::main): Print completions if completion
355         is set.
356         * opt-suggestions.c (option_proposer::get_completions):
357         New function.
358         (option_proposer::suggest_completion): Likewise.
359         (option_proposer::find_param_completions): Likewise.
360         (verify_autocompletions): Likewise.
361         (test_completion_valid_options): Likewise.
362         (test_completion_valid_params): Likewise.
363         (in_completion_p): Likewise.
364         (empty_completion_p): Likewise.
365         (test_completion_partial_match): Likewise.
366         (test_completion_garbage): Likewise.
367         (opt_proposer_c_tests): Likewise.
368         * opt-suggestions.h: Declare new functions.
369         * opts.c (common_handle_option): Handle OPT__completion_.
370         * selftest-run-tests.c (selftest::run_tests): Add
371         opt_proposer_c_tests.
372         * selftest.c (assert_str_startswith): New.
373         * selftest.h (assert_str_startswith): Likewise.
374         (opt_proposer_c_tests): New.
375         (ASSERT_STR_STARTSWITH): Likewise.
377 2018-06-28  Martin Liska  <mliska@suse.cz>
379         * Makefile.in: Add opt-suggestions.o.
380         * gcc-main.c: Include opt-suggestions.h.
381         * gcc.c (driver::driver): Likewise.
382         (driver::~driver): Remove m_option_suggestions.
383         (driver::build_option_suggestions): Moved to option_proposer.
384         (driver::suggest_option): Likewise.
385         (driver::handle_unrecognized_options): Use option_proposer.
386         * gcc.h (class driver): Add new memver m_option_proposer.
387         * opt-suggestions.c: New file.
388         * opt-suggestions.h: New file.
390 2018-06-28  Martin Liska  <mliska@suse.cz>
392         * vec.h (class auto_string_vec): New (moved from auto_argvec).
393         (auto_string_vec::~auto_string_vec): Likewise.
395 2018-06-28  Eric Botcazou  <ebotcazou@adacore.com>
397         * tree-inline.c (remap_gimple_stmt): Force input_location on the new
398         statement if id->reset_location is true.
399         (copy_edges_for_bb): Do not set goto_locus on the new edges if
400         id->reset_location is true.
401         (copy_phis_for_bb): Force input_location on the arguments if
402         id->reset_location is true.
403         (expand_call_inline): Set id->reset_location if DECL_IGNORED_P
404         is set on the function to be inlined.
405         * tree-inline.h (struct copy_body_data): Move remapping_type_depth and
406         prevent_decl_creation_for_types fields up and add reset_location field.
408 2018-06-27  Stephan Bergmann  <sbergman@redhat.com>
410         * doc/invoke.texi (Debugging Options): Add -gsplit-dwarf.
412 2018-06-27  Dimitar Dimitrov  <dimitar@dinux.eu>
414         * lra-eliminations.c (update_reg_eliminate): Mark all spanning hard
415         registers for Pmode.
416         * lra-lives.c (check_pseudos_live_through_calls): Mark all spanning
417         hard registers for the clobbered pseudo.
419 2018-06-27  Paul Koning  <ni1d@arrl.net>
421         * common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
422         mutually exclusive options.
423         * config/pdp11/constraints.md (h): New constraint.
424         (O): Update definition to match shift code generation.
425         (D): New constraint.
426         * config/pdp11/pdp11-modes.def (CCNZ): Define mode.
427         (CCFP): Remove.
428         * config/pdp11/pdp11-protos.h (int_no_side_effect_operand): New
429         function.
430         (output_jump): Change arguments.
431         (pdp11_fixed_cc_regs): New function.
432         (pdp11_cc_mode): Ditto.
433         (pdp11_expand_shift): Ditto.
434         (pdp11_assemble_shift): Ditto.
435         (pdp11_small_shift): Ditto.
436         (pdp11_branch_cost): Remove.
437         * config/pdp11/pdp11.c (pdp11_assemble_integer): Remove comments
438         from output.
439         (pdp11_register_move_cost): Update for CC registers.
440         (pdp11_rtx_costs): Add case for LSHIFTRT.
441         (pdp11_output_jump): Add CCNZ mode conditional branches.
442         (notice_update_cc_on_set): Remove.
443         (pdp11_cc_mode): New function.
444         (simple_memory_operand): Correct pre/post decrement case.
445         (no_side_effect_operand): New function.
446         (pdp11_regno_reg_class): Add CC_REGS class.
447         (pdp11_fixed_cc_regs): New function.
448         (pdp11_small_shift): New function.
449         (pdp11_expand_shift): New function to expand shift insns.
450         (pdp11_assemble_shift): New function to output shifts.
451         (pdp11_branch_cost): Remove.
452         (pdp11_modes_tieable_p): Make QI/HI modes tieable.
453         * config/pdp11/pdp11.h (SIZE_TYPE): Ensure 16-bit type.
454         (WCHAR_TYPE): Ditto.
455         (PTRDIFF_TYPE): Ditto.
456         (ADJUST_INSN_LENGTH): New macro.
457         (FIXED_REGISTERS): Add CC registers.
458         (CALL_USED_REGISTERS): Ditto.
459         (reg_class): Ditto.
460         (REG_CLASS_NAMES): Ditto.
461         (REG_CLASS_CONTENTS): Ditto.
462         (SELECT_CC_MODE): Use new function.
463         (TARGET_FLAGS_REGNUM): New macro.
464         (TARGET_FIXED_CONDITION_CODE_REGS): Ditto.
465         (cc0_reg_rtx): Remove.
466         (CC_STATUS_MDEP): Remove.
467         (CC_STATUS_MDEFP_INIT): Remove.
468         (CC_IN_FPU): Remove.
469         (NOTICE_UPDATE_CC): Remove.
470         (REGISTER_NAMES): Add CC registers.
471         (BRANCH_COST): Change to constant 1.
472         * config/pdp11/pdp11.md: Rewrite for CCmode condition code
473         handling.
474         * config/pdp11/pdp11.opt (mbcopy): Remove.
475         (mbcopy-builtin): Remove.
476         (mbranch-cheap): Remove.
477         (mbranch-expensive): Remove.
478         * config/pdp11/predicates.md (expand_shift_operand): Update to
479         match shift code generation.
480         (ccnz_operator): New predicate.
481         * doc/invoke.texi (PDP-11 Options): Remove deleted options
482         -mbcopy, -mbcopy-builtin, -mbranch-cheap, -mbranch-expensive.
483         Remove non-existent option -mabshi, -mno-abshi.  Document mutually
484         exclusive options.
485         * doc/md.texi (PDP-11): Document new D and h constraints.  Update
486         description of O constraint.
488 2018-06-27  Jeff Law  <law@redhat.com>
489             Austin Law  <austinklaw@gmail.com>
491         * config/v850/v850.md (addsi3_set_flags): New pattern.
492         (subsi3_set_flags, negsi2_set_flags, andsi3_set_flags): Likewise.
493         (iorsi3_set_flags, xorsi3_set_flags, one_cmplsi2_set_flags): Likewise.
494         (zero_extendhisi2_v850_set_flags): Likewise.
495         (zero_extendqisi2_v850_set_flags): Likewise.
496         (ashlsi3_set_flags, ashlsi3_v850e2_set_flags): Likewise.
497         (lshrsi3_set_flags, lshrsi3_v850e2_set_flags): Likewise.
498         (ashrsi3_set_flags, ashrsi3_v850e2_set_flags): Likewise.
500         * config/v850/v850-protos.h (notice_update_cc): Remove.
501         * config/v850/v850.c (v850_compare_op0, v850_compare_op1): Remove.
502         (v850_print_operand): Handle 'D' and "d".
503         (v850_select_cc_mode): Remove ATTRIBUTE_UNUSED for last argument.
504         Add handling of arithmetic/logical operations compared against zero.
505         (v850_gen_float_compare): Remove ATTRIBUTE_UNUSED for last argument.
506         Do not look at v850_compare_op, instead get mode from last argument.
507         (v850_gen_compare): Remove
508         (increment_stack): Use addsi3_clobber_flags to avoid splitting failure
509         after reload for prologue insns.
510         (expand_prologue): Account for CLOBBER of CC_REGNUM in various
511         patterns.
512         (construct_save_jarl): Likewise.
513         (TARGET_FLAGS_REGNUM): Define.
514         * config/v850/v850.h (v850_compare_op0, v850_compare_op1): Remove.
515         (NOTICE_UPDATE_CC): Remove.
516         * config/v850/v850.md (v850_tst1): Use (reg:CCZ CC_REGNUM) rather
517         than cc0.  Conditionalize on reload_completed.
518         (cmpsi_insn, setfcc_insn): Likewise.
519         (tst1 splitter): Turn into define_and_split which sets the flags
520         after reload.
521         (cstoresi4, cbranchsf4, cbranchdf4, cbranchsi4_insn): Likewise.
522         (cbranchsi4, branch_normal, branch_invert): Do not expose cc0 here.
523         (cstoresf4, cstoredf4): Clobber the flags.
524         (cmpsi, cmpsf, cmpdf): Remove expanders.
525         (setf_insn): Remove pattern.
526         (addsi3): Turn into define_and_split which clobbers the flags after
527         reload and a suitable pattern (addsi3_clobber_flags) for use after
528         reload.
529         (subsi3, negsi2, andsi3, iorsi3, xorsi3, one_cmplsi2) Likewise.
530         (ashlsi3, ashlsi3_v850e2, lshrsi3, lsh4si3_v850e2): Likewise.
531         (ashrsi3, ashrsi3_v850e2): Likewise.
532         (bins): Clobber the flags.
533         (movsicc_normal_cc, movsicc_normal, movsicc_tst1): Likewise.
534         (movsicc_tst1_revesed, sasf, swap and rotate patterns): Likewise.
535         (fix_loop_counter, call_internal_short, call_internal_long): Likewise.
536         (call_value_internal_short, call_value_internal_long): Likewise.
537         (callt_save_interrupt, callt_return_interrupt): Likewise.
538         (save_interrupt, return_interrupt): Likewise.
539         (callt_save_all_interrupt, save_all_interrupt): Likewise.
540         (_save_all_interrupt, callt_restore_all_interrupt): Likewise.
541         (restore_all_interrupt, _restore_all_interrupt): Likewise.
542         (All FP comparisons): Only allow after reload has completed.
543         (trfsr): Likewise.
544         (divh, divhu): Tweak output template.
545         (branch_z_normal, branch_z_invert): Remove
546         (branch_nz_normal, branch_nz_invert): Likewise.
547         (extendhisi_insn, extendqisi_insn): Do not clobber flags.
549         * config/v850/v850-modes.def (CCZ, CCNZ): Add new modes.
550         * config/v850/v850.c (notice_update_cc): Remove.
551         * config/v850/v850.h  (CC_OVERFLOW_UNUSABLE): Remove
552         (CC_NO_CARRY): Likewise.
553         (NOTICE_UPDATE_CC): Define to nothing.
554         * config/v850/v850.md: Remove block comment on cc0 handling
555         Remove "cc" attribute from all patterns.  Remove cc_status handling
556         from all patterns.  Minor formatting fixes.
558 2018-06-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
560         * config/aarch64/aarch64-cores.def (cortex-a76): New entry.
561         (cortex-a76.cortex-a55): Likewise.
562         * config/aarch64/aarch64-tune.md: Regenerate.
563         * doc/invoke.texi (AArch64 Options): Document cortex-a76 and
564         cortex-a76.cortex-a55.
566 2018-06-27  Jeff Law  <law@redhat.com>
568         * config/v850/t-v850 (MULTILIB_OPTIONS): Remove 8byte-align.
569         (MULTILIB_DIRNAMES): Similarly.
571 2018-06-27  Eric Botcazou  <ebotcazou@adacore.com>
573         * gimple.h (gimple_return_retbnd): Delete.
574         (gimple_return_set_retbnd): Likewise.
575         * cgraphunit.c (cgraph_node::expand_thunk): Remove call to
576         gimple_return_set_retbnd.
577         * gimple-pretty-print.c (dump_gimple_return): Remove call to
578         gimple_return_retbnd and adjust.
579         * tree-inline.h (struct copy_body_data): Remove retbnd field.
580         * tree-inline.c (remap_gimple_stmt): Remove handling of retbnd.
581         Explicitly return NULL in a couple more cases.  Move assertion
582         on debug statements and remove unreachable code.
583         (reset_debug_binding): Do not test id->retbnd.
584         (expand_call_inline): Do not set it.
586 2018-06-27  Rasmus Villemoes  <rv@rasmusvillemoes.dk>
588         * configure.ac: Add --disable-gcov option.
589         * configure: Regenerate.
590         * Makefile.in: Honour @enable_gcov@.
591         * doc/install.texi: Document --disable-gcov.
593 2018-06-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
595         * config/arm/arm-cpus.in (cortex-a76): New entry.
596         (cortex-a76.cortex-a55): Likewise.
597         * config/arm/arm-tables.opt: Regenerate.
598         * config/arm/arm-tune.md: Likewise.
599         * config/arm/driver-arm.c (arm_cpu_table): Add Cortex-A76 entry.
600         * doc/invoke.texi (ARM Options): Document cortex-a76 and
601         cortex-a76.cortex-a55.
603 2018-06-27 Tamar Christina  <tamar.christina@arm.com>
605         PR target/85769
606         * config/aarch64/aarch64.md (*movhf_aarch64): Add dup v0.4h pattern.
608 2018-06-27  Siddhesh Poyarekar  <siddhesh@sourceware.org>
610         * config/aarch64/aarch64.h (CALL_USE_REGISTERS): Fix obsolete
611         comment.
612         (EPILOGUE_USES): Likewise.
614 2018-06-26  Eric Botcazou  <ebotcazou@adacore.com>
616         * tree-inline.c (remap_location): New function extracted from...
617         (copy_edges_for_bb): Add ID parameter.  Remap goto_locus.
618         (copy_phis_for_bb): ...here.  Call remap_location.
619         (copy_cfg_body): Adjust call to copy_edges_for_bb.
621 2018-06-26  Aaron Sawdey  <acsawdey@linux.ibm.com>
623         * config/rs6000/rs6000-string.c (expand_block_clear): Don't use
624         unaligned vsx for 16B memset.
626 2018-06-26  Segher Boessenkool  <segher@kernel.crashing.org>
628         PR target/86285
629         * config/rs6000/rs6000.c (rs6000_init_builtins): Do not set
630         ieee128_float_type_node to long_double_type_node unless
631         TARGET_LONG_DOUBLE_128 is set.
633 2018-06-26  David Malcolm  <dmalcolm@redhat.com>
635         * cfgloop.c (get_loop_location): Convert return type from
636         location_t to dump_user_location_t, replacing INSN_LOCATION lookups
637         by implicit construction from rtx_insn *, and using
638         dump_user_location_t::from_function_decl for the fallback case.
639         * cfgloop.h (get_loop_location): Convert return type from
640         location_t to dump_user_location_t.
641         * cgraphunit.c (walk_polymorphic_call_targets): Update call to
642         dump_printf_loc to pass in a dump_location_t rather than a
643         location_t, via the gimple stmt.
644         * coverage.c (get_coverage_counts): Update calls to
645         dump_printf_loc to pass in dump_location_t rather than a
646         location_t.
647         * doc/optinfo.texi (Dump types): Convert example of
648         dump_printf_loc from taking "locus" to taking "insn".  Update
649         description of the "_loc" calls to cover dump_location_t.
650         * dumpfile.c: Include "backend.h", "gimple.h", "rtl.h", and
651         "selftest.h".
652         (dump_user_location_t::dump_user_location_t): New constructors,
653         from gimple *stmt and rtx_insn *.
654         (dump_user_location_t::from_function_decl): New function.
655         (dump_loc): Make static.
656         (dump_gimple_stmt_loc): Convert param "loc" from location_t to
657         const dump_location_t &.
658         (dump_generic_expr_loc): Delete.
659         (dump_printf_loc): Convert param "loc" from location_t to
660         const dump_location_t &.
661         (selftest::test_impl_location): New function.
662         (selftest::dumpfile_c_tests): New function.
663         * dumpfile.h: Include "profile-count.h".
664         (class dump_user_location_t): New class.
665         (struct dump_impl_location_t): New struct.
666         (class dump_location_t): New class.
667         (dump_printf_loc): Convert 2nd param from source_location to
668         const dump_location_t &.
669         (dump_generic_expr_loc): Delete.
670         (dump_gimple_stmt_loc): Convert 2nd param from source_location to
671         const dump_location_t &.
672         * gimple-fold.c (fold_gimple_assign): Update call to
673         dump_printf_loc to pass in a dump_location_t rather than a
674         location_t, via the gimple stmt.
675         (gimple_fold_call): Likewise.
676         * gimple-loop-interchange.cc
677         (loop_cand::analyze_iloop_reduction_var): Update for change to
678         check_reduction_path.
679         (tree_loop_interchange::interchange): Update for change to
680         find_loop_location.
681         * graphite-isl-ast-to-gimple.c (scop_to_isl_ast): Update for
682         change in return-type of find_loop_location.
683         (graphite_regenerate_ast_isl): Likewise.
684         * graphite-optimize-isl.c (optimize_isl): Likewise.
685         * graphite.c (graphite_transform_loops): Likewise.
686         * ipa-devirt.c (ipa_devirt): Update call to dump_printf_loc to
687         pass in a dump_location_t rather than a location_t, via the
688         gimple stmt.
689         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
690         * ipa.c (walk_polymorphic_call_targets): Likewise.
691         * loop-unroll.c (report_unroll): Convert "locus" param from
692         location_t to dump_location_t.
693         (decide_unrolling): Update for change to get_loop_location's
694         return type.
695         * omp-grid.c (struct grid_prop): Convert field "target_loc" from
696         location_t to dump_user_location_t.
697         (grid_find_single_omp_among_assignments_1): Updates calls to
698         dump_printf_loc to pass in a dump_location_t rather than a
699         location_t, via the gimple stmt.
700         (grid_parallel_clauses_gridifiable): Convert "tloc" from
701         location_t to dump_location_t.  Updates calls to dump_printf_loc
702         to pass in a dump_location_t rather than a location_t, via the
703         gimple stmt.
704         (grid_inner_loop_gridifiable_p): Likewise.
705         (grid_dist_follows_simple_pattern): Likewise.
706         (grid_gfor_follows_tiling_pattern): Likewise.
707         (grid_target_follows_gridifiable_pattern): Likewise.
708         (grid_attempt_target_gridification): Convert initialization
709         of local "grid" from memset to zero-initialization; FIXME: does
710         this require C++11?  Update call to dump_printf_loc to pass in a
711         optinfo_location rather than a location_t, via the gimple stmt.
712         * profile.c (read_profile_edge_counts): Updates call to
713         dump_printf_loc to pass in a dump_location_t rather than a
714         location_t
715         (compute_branch_probabilities): Likewise.
716         * selftest-run-tests.c (selftest::run_tests): Call
717         dumpfile_c_tests.
718         * selftest.h (dumpfile_c_tests): New decl.
719         * tree-loop-distribution.c (pass_loop_distribution::execute):
720         Update for change in return type of find_loop_location.
721         * tree-parloops.c (parallelize_loops): Likewise.
722         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Convert
723         "locus" from location_t to dump_user_location_t.
724         (canonicalize_loop_induction_variables): Likewise.
725         * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_loop): Update
726         for change in return type of find_loop_location.
727         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update call
728         to dump_printf_loc to pass in a dump_location_t rather than a
729         location_t, via the stmt.
730         * tree-ssa-sccvn.c (eliminate_dom_walker::before_dom_children):
731         Likewise.
732         * tree-vect-loop-manip.c (find_loop_location): Convert return
733         type from source_location to dump_user_location_t.
734         (vect_do_peeling): Update for above change.
735         (vect_loop_versioning): Update for change in type of
736         vect_location.
737         * tree-vect-loop.c (check_reduction_path): Convert "loc" param
738         from location_t to dump_user_location_t.
739         (vect_estimate_min_profitable_iters): Update for change in type
740         of vect_location.
741         * tree-vect-slp.c (vect_print_slp_tree): Convert param "loc" from
742         location_t to dump_location_t.
743         (vect_slp_bb): Update for change in type of vect_location.
744         * tree-vectorizer.c (vect_location): Convert from source_location
745         to dump_user_location_t.
746         (try_vectorize_loop_1): Update for change in vect_location's type.
747         (vectorize_loops): Likewise.
748         (increase_alignment): Likewise.
749         * tree-vectorizer.h (vect_location): Convert from source_location
750         to dump_user_location_t.
751         (find_loop_location): Convert return type from source_location to
752         dump_user_location_t.
753         (check_reduction_path): Convert 1st param from location_t to
754         dump_user_location_t.
755         * value-prof.c (check_counter): Update call to dump_printf_loc to
756         pass in a dump_user_location_t rather than a location_t; update
757         call to error_at for change in type of "locus".
758         (check_ic_target): Update call to dump_printf_loc to
759         pass in a dump_user_location_t rather than a location_t, via the
760         call_stmt.
762 2018-06-26  Robin Dapp  <rdapp@linux.vnet.ibm.com>
764         * config/s390/s390.h (enum processor_flags): Do not use
765         default tune parameter when -march was specified.
767 2018-06-26  Jakub Jelinek  <jakub@redhat.com>
769         PR target/86314
770         * config/i386/i386.md (setcc + movzbl to xor + setcc peephole2s):
771         Check reg_overlap_mentioned_p in addition to reg_set_p with the same
772         operands.
774 2018-06-26  Richard Biener  <rguenther@suse.de>
776         PR tree-optimization/86287
777         PR bootstrap/86316
778         * tree-vect-loop.c (vect_transform_loop_stmt): Fix read-after-free.
779         (vect_analyze_loop): Initialize n_stmts.
781 2018-06-26  Richard Biener  <rguenther@suse.de>
783         PR middle-end/86271
784         * fold-const.c (fold_convertible_p): Pointer extension
785         isn't valid.
787 2018-06-26  Alexandre Oliva <aoliva@redhat.com>
789         PR debug/86064
790         * dwarf2out.c (loc_list_has_views): Adjust comments.
791         (dw_loc_list): Split single cross-partition range with
792         nonzero locview.
794 2018-06-25  Jeff Law  <law@redhat.com>
796         * common/config/v850/v850-common.c (TARGET_DEFAULT_TARGET_FLAGS): Turn
797         on -mbig-switch by default.
799         * config/v850/predicates.md (const_float_1_operand): Fix match_code
800         test.
801         (const_float_0_operand): Remove unused predicate.
802         * config/v850/v850.md (define_constants): Remove UNSPEC_LOOP.
803         (define_c_enum unspec): Add LOOP, RCP and RSQRT constants.
804         (recipsf2): New expander.  Original pattern now called
805         (recipsf2_insn).
806         (recipdf2, recipdf2_insn): Similarly.
807         (rsqrtsf2, rsqrtsf2_insn): Similarly
808         (rsqrtdf2, rsqrtdf2_insn): Similarly
810 2018-06-26  Gerald Pfeifer  <gerald@pfeifer.com>
812         * ginclude/stddef.h: Remove an obsolete comment on FreeBSD 5.
813         Simplify logic for FreeBSD (twice).
815 2018-06-25  Martin Sebor  <msebor@redhat.com>
817         PR tree-optimization/86204
818         * tree-ssa-strlen.c (handle_builtin_strlen): Avoid storing
819         a strnlen result if it's less than the length of the string.
821 2018-06-25  Martin Sebor  <msebor@redhat.com>
823         PR tree-optimization/85700
824         * gimple-fold.c (gimple_fold_builtin_strncat): Adjust comment.
825         * tree-ssa-strlen.c (is_strlen_related_p): Handle integer subtraction.
826         (maybe_diag_stxncpy_trunc): Distinguish strncat from strncpy.
828 2018-06-25  Martin Sebor  <msebor@redhat.com>
830         * doc/extend.texi (Zero-length arrays): Update and clarify.
832 2018-06-25  Michael Meissner  <meissner@linux.ibm.com>
834         * config.gcc (powerpc64le*): Revert January 16th, 2018 patch that
835         added IEEE/IBM long double multilib support on PowerPC little
836         endian Linux systems.
837         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Likewise.
838         (MULTILIB_DEFAULTS): Likewise.
839         * config/rs6000/rs6000.c (rs6000_option_override_internal):
840         Likewise.
841         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Likewise.
842         * config/rs6000/t-ldouble-linux64le-ibm: Delete, no longer used.
843         * config/rs6000/t-ldouble-linux64le-ieee: Delete, no longer used.
845 2018-06-25  Alexander Monakov  <amonakov@ispras.ru>
847         PR middle-end/86311
848         * sort.cc (REORDER_23): Avoid memcpy with same destination and source.
849         (REORDER_45): Likewise.
851 2018-06-25  Jeff Law  <law@redhat.com>
853         * config/v850/v850.md (divmodhi4): Make sure to sign extend the
854         dividend to 32 bits.  Adjust length.
855         (udivmodhi4): Cleanup output template.  Fix length.
857 2018-06-25  Carl Love  <cel@us.ibm.com>
859         * config/rs6000/vsx.md: Change word selector to prefered location.
861 2018-06-25  Richard Biener  <rguenther@suse.de>
863         PR tree-optimization/86304
864         * tree-vectorizer.c (vectorize_loops): Walk over new possibly
865         epilogue-if-converted loops as well.
867 2018-06-25  Jan Hubicka  <hubicka@ucw.cz>
869         * lto-section-out.c (lto_begin_section): Do not print section
870         name for noaddr and unnumbered dumps.
872 2018-06-25  Richard Biener  <rguenther@suse.de>
874         * tree-vectorizer.h (struct vec_info_shared): New structure
875         with parts split out from struct vec_info and loop_nest from
876         struct _loop_vec_info.
877         (struct vec_info): Adjust accordingly.
878         (struct _loop_vec_info): Likewise.
879         (LOOP_VINFO_LOOP_NEST): Adjust.
880         (LOOP_VINFO_DATAREFS): Likewise.
881         (LOOP_VINFO_DDRS): Likewise.
882         (struct _bb_vec_info): Likewise.
883         (BB_VINFO_DATAREFS): Likewise.
884         (BB_VINFO_DDRS): Likewise.
885         (struct _stmt_vec_info): Add dr_aux member.
886         (DR_VECT_AUX): Adjust to refer to member of DR_STMTs vinfo.
887         (DR_MISALIGNMENT_UNINITIALIZED): New.
888         (set_dr_misalignment): Adjust.
889         (dr_misalignment): Assert misalign isn't DR_MISALIGNMENT_UNINITIALIZED.
890         (vect_analyze_loop): Adjust prototype.
891         (vect_analyze_loop_form): Likewise.
892         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
893         Compute dependences lazily.
894         (vect_record_base_alignments): Use shared datarefs/ddrs.
895         (vect_verify_datarefs_alignment): Likewise.
896         (vect_analyze_data_refs_alignment): Likewise.
897         (vect_analyze_data_ref_accesses): Likewise.
898         (vect_analyze_data_refs): Likewise.
899         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Add
900         constructor parameter for shared part.
901         (vect_analyze_loop_form): Pass in shared part and adjust.
902         (vect_analyze_loop_2): Pass in storage for the number of
903         stmts.  Move loop nest finding to the caller.  Compute
904         datarefs lazily.
905         (vect_analyze_loop): Pass in shared part.
906         (vect_transform_loop): Verify shared datarefs are unchanged.
907         * tree-vect-slp.c (_bb_vec_info::_bb_vec_info): Add
908         constructor parameter for shared part.
909         (vect_slp_analyze_bb_1): Pass in shared part and adjust.
910         (vect_slp_bb): Verify shared datarefs are unchanged before
911         transform.
912         * tree-vect-stmts.c (ensure_base_align): Adjust for DR_AUX
913         change.
914         (new_stmt_vec_info): Initialize DR_AUX misalignment to
915         DR_MISALIGNMENT_UNINITIALIZED.
916         * tree-vectorizer.c (vec_info::vec_info): Add constructor
917         parameter for shared part.
918         (vec_info::~vec_info): Adjust.
919         (vec_info_shared::vec_info_shared): New.
920         (vec_info_shared::~vec_info_shared): Likewise.
921         (vec_info_shared::save_datarefs): Likewise.
922         (vec_info_shared::check_datarefs): Likewise.
923         (try_vectorize_loop_1): Construct shared part live for analyses
924         of a single loop for multiple vector sizes.
925         * tree-parloops.c (gather_scalar_reductions): Adjust.
927 2018-06-25  Richard Biener  <rguenther@suse.de>
929         * tree-vect-data-refs.c (vect_find_stmt_data_reference): Modify
930         DR for SIMD lane accesses here and mark DR with (void *)-1 aux.
931         (vect_analyze_data_refs): Remove similar code from here and
932         simplify accordingly.
934 2018-06-25  Richard Biener  <rguenther@suse.de>
936         * tree-vect-data-refs.c (vect_check_gather_scatter): Fail
937         for reverse storage order accesses rather than asserting
938         they cannot happen here.
940 2018-06-25  Tom de Vries  <tdevries@suse.de>
942         PR debug/86257
943         * config/i386/i386.md (define_insn "*tls_global_dynamic_64_<mode>"):
944         Use data16 instead of .byte for insn prefix.
946 2018-06-25  Andreas Krebbel  <krebbel@linux.ibm.com>
948         PR C++/86082
949         * parser.c (make_char_string_pack): Pass this literal chars
950         through cpp_interpret_string.
951         (cp_parser_userdef_numeric_literal): Check the result of
952         make_char_string_pack.
954 2018-06-24  Maya Rashish  <coypu@sdf.org>
956         * ginclude/stddef.h: Simplify conditions around avoiding
957         re-definition of __size_t.
959 2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
961         * lto-streamer-out.c (tree_is_indexable): Make LABEL_DECL nonindexable
962         unless it is forced or nonlocal; assert that we stream no IMPORTED_DECL.
964 2018-06-22  Maya Rashish  <coypu@sdf.org>
966         * doc/invoke.texi (mno-fancy-math-387): Update for changes
967         made to OpenBSD and NetBSD through the years.
969 2018-06-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
971         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
972         behavior of vec_pack (vector double, vector double) to match
973         behavior of vec_float2 (vector double, vector double).
975 2018-06-22  Olivier Hainque  <hainque@adacore.com>
977         * gimplify.c (gimplify_function_tree): Prevent creation
978         of a trampoline for the address of the current function
979         passed to entry/exit instrumentation hooks.
981 2018-06-22  Aaron Sawdey  <acsawdey@linux.ibm.com>
983         PR target/86222
984         * config/rs6000/rs6000-string.c (expand_strn_compare): Handle -m32
985         correctly.
987 2018-06-22  Martin Liska  <mliska@suse.cz>
989         PR tree-optimization/86263
990         * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
991         Bail out if is_enabled is false.
992         * tree-switch-conversion.h (jump_table_cluster::is_enabled):
993         New declaration.
994         (jump_table_cluster::is_enabled): New function.
996 2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
998         * lto-streamer-out.c (DFS::DFS_write_tree_body): Do not stream
999         BINFO_BASE_ACCESSES and BINFO_VPTR_FIELD.
1000         * tree-streamer-in.c (streamer_read_tree_bitfields): Likewise.
1001         (lto_input_ts_binfo_tree_pointers): Likewise.
1002         * tree-streamer-out.c (streamer_write_tree_bitfields,
1003         write_ts_binfo_tree_pointers): Likewise.
1004         * tree.c (free_lang_data_in_binfo): Clear BINFO_VPTR_FIELD.
1006 2018-06-22  Jan Hubicka  <hubicka@ucw.cz>
1008         * tree.c (free_lang_data_in_type): Free all TYPE_VFIELDs.
1010 2018-06-22  Martin Liska  <mliska@suse.cz>
1012         * symbol-summary.h (get): Make it pure and inline move
1013         functionality from ::get function.
1014         (get): Remove and inline into ::get and ::get_create.
1015         (get_create): Move code from ::get function.
1017 2018-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1019         PR target/85994
1020         * config/i386/sol2.h (CPP_SPEC): Don't pass -P for
1021         -x assembler-with-cpp.
1023 2018-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1025         * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define
1026         _FILE_OFFSET_BITS=64 for C++.
1028 2018-06-21  Michael Meissner  <meissner@linux.ibm.com>
1030         * config/rs6000/rs6000.md (extendtfif2): Add missing 128-bit
1031         conversion insn that shows up when pr85657-3.c is compiled using
1032         IEEE 128-bit long double.
1033         (neg<mode>2_internal): Use the correct mode to check whether the
1034         mode is IBM extended.
1035         * config/rs6000/rs6000.c (init_float128_ieee): Prevent complex
1036         multiply and divide external functions from being created more
1037         than once.
1039 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
1041         * cfgrtl.c (fixup_reorder_chain): Do not emit NOPs in DECL_IGNORED_P
1042         functions.
1043         (rtl_merge_blocks): Likewise.  Do not emit a NOP if the location of
1044         the edge can be forwarded.
1045         (cfg_layout_merge_blocks): Likewise.
1047 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
1049         * except.c (finish_eh_generation): Commit edge insertions only after
1050         the EH edges have been redirected from post-landing to landing pads.
1052 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
1054         * tree-nested.c (get_frame_type): Use create_tmp_var_raw instead of
1055         create_tmp_var_for to create the FRAME decl.
1056         (finalize_nesting_tree_1): Do not unchain the FRAME decl.
1058 2018-06-21  Eric Botcazou  <ebotcazou@adacore.com>
1060         * tree-inline.c (copy_edges_for_bb): Minor tweak.
1061         (maybe_move_debug_stmts_to_successors): Also reset the locus of the
1062         debug statement when resetting its value.
1063         (expand_call_inline): Copy the locus of the call onto the assignment
1064         of the return value, if any.  Use local variable in more cases.
1066 2018-06-21  Martin Liska  <mliska@suse.cz>
1068         * ipa-pure-const.c (propagate_nothrow): Use
1069         funct_state_summaries->get.
1070         (dump_malloc_lattice): Likewise.
1071         (propagate_malloc): Likewise.
1073 2018-06-21  Richard Biener  <rguenther@suse.de>
1075         * lto-streamer-out.c (DFS::DFS_write_tree_body): Update outdated
1076         comment.  Follow BLOCK_ABSTRACT_ORIGIN unconditionally.
1077         * tree-streamer-in.c (lto_input_ts_block_tree_pointers): Update
1078         comment.
1079         * tree-streamer-out.c (write_ts_block_tree_pointers): Stream
1080         BLOCK_ABSTRACT_ORIGIN unconditionally.
1082 2018-06-21  David Malcolm  <dmalcolm@redhat.com>
1084         * ipa-cp.c (ipcp_driver): Set edge_clone_summaries to NULL after
1085         deleting it.
1086         * ipa-reference.c (ipa_reference_c_finalize): Delete
1087         ipa_ref_opt_sum_summaries and set it to NULL.
1089 2018-06-21  Tom de Vries  <tdevries@suse.de>
1091         PR tree-optimization/85859
1092         * tree-ssa-tail-merge.c (stmt_local_def): Copy gimple_is_call
1093         test with comment from bb_no_side_effects_p.
1095 2018-06-21  Richard Biener  <rguenther@suse.de>
1097         PR tree-optimization/86232
1098         * tree-ssa-loop-niter.c (number_of_iterations_popcount): Adjust
1099         max for constant niter.
1101 2018-06-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
1103         * config/aarch64/aarch64-simd.md
1104         (*aarch64_crypto_aes<aes_op>v16qi_xor_combine): New.
1106 2018-06-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
1108         * config/aarch64/aarch64-simd.md (aarch64_crypto_aes<aes_op>v16qi):
1109         Make opernads of the unspec commutative.
1111 2018-06-21  Richard Biener  <rguenther@suse.de>
1113         * tree-data-ref.c (dr_step_indicator): Handle NULL DR_STEP.
1114         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
1115         Avoid calling vect_mark_for_runtime_alias_test with gathers or scatters.
1116         (vect_analyze_data_ref_dependence): Re-order checks to deal with
1117         NULL DR_STEP.
1118         (vect_record_base_alignments): Do not record base alignment
1119         for gathers or scatters.
1120         (vect_compute_data_ref_alignment): Drop return value that is always
1121         true.  Bail out early for gathers or scatters.
1122         (vect_enhance_data_refs_alignment): Bail out early for gathers
1123         or scatters.
1124         (vect_find_same_alignment_drs): Likewise.
1125         (vect_analyze_data_refs_alignment): Remove dead code.
1126         (vect_slp_analyze_and_verify_node_alignment): Likewise.
1127         (vect_analyze_data_refs): For possible gathers or scatters do
1128         not create an alternate DR, just check their possible validity
1129         and mark them.  Adjust DECL_NONALIASED handling to not rely
1130         on DR_BASE_ADDRESS.
1131         * tree-vect-loop-manip.c (vect_update_inits_of_drs): Do not
1132         update inits of gathers or scatters.
1133         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
1134         Also copy gather/scatter flag to pattern vinfo.
1136 2018-06-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
1138         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Change
1139         behavior of vec_packsu (vector unsigned long long, vector unsigned
1140         long long) to match behavior of vec_packs with same signature.
1142 2018-06-20  Chung-Lin Tang <cltang@codesourcery.com>
1143             Thomas Schwinge <thomas@codesourcery.com>
1144             Cesar Philippidis  <cesar@codesourcery.com>
1146         * gimplify.c (gimplify_scan_omp_clauses): Add support for
1147         OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
1148         (gimplify_adjust_omp_clauses): Likewise.
1149         (gimplify_oacc_declare_1): Add support for GOMP_MAP_RELEASE, remove
1150         support for GOMP_MAP_FORCE_{ALLOC,TO,FROM,TOFROM}.
1151         (gimplify_omp_target_update): Update handling of acc update and
1152         enter/exit data.
1153         * omp-low.c (install_var_field): Remove unused parameter
1154         base_pointers_restrict.
1155         (scan_sharing_clauses): Remove base_pointers_restrict parameter.
1156         Update call to install_var_field. Handle OMP_CLAUSE_{IF_PRESENT,
1157         FINALIZE}
1158         (omp_target_base_pointers_restrict_p): Delete.
1159         (scan_omp_target): Update call to scan_sharing_clauses.
1160         * tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_{IF_PRESENT,
1161         FINALIZE}.
1162         * tree-nested.c (convert_nonlocal_omp_clauses): Handle
1163         OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
1164         (convert_local_omp_clauses): Likewise.
1165         * tree-pretty-print.c (dump_omp_clause): Likewise.
1166         * tree.c (omp_clause_num_ops): Add entries for  OMP_CLAUSE_{IF_PRESENT,
1167         FINALIZE}.
1168         (omp_clause_code_name): Likewise.
1170 2018-06-20  Jakub Jelinek  <jakub@redhat.com>
1172         PR debug/86194
1173         * var-tracking.c (use_narrower_mode_test): Check if shift amount can
1174         be narrowed.
1176         PR tree-optimization/86231
1177         * tree-vrp.c (union_ranges): For (  [  )  ] or (   )[   ] range and
1178         anti-range don't overwrite *vr0min before using it to compute *vr0max.
1180 2018-06-20  Tom de Vries  <tdevries@suse.de>
1182         PR tree-optimization/86097
1183         * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Also convert *nit to
1184         iv type if signedness of iv type is not the same as that of *nit.
1186 2018-06-20  Jakub Jelinek  <jakub@redhat.com>
1188         * cfgrtl.c (rtl_verify_edges): Formatting fix.  If bb->preds has any
1189         EDGE_EH edges, verify they are all EDGE_EH.
1191 2018-06-20  Maya Rashish  <coypu@sdf.org>
1193         * ginclude/stddef.h: Limit #include <machine/ansi.h> to NetBSD.
1195 2018-06-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1197         * config/aarch64/aarch64-tuning-flags.def (no_ldp_stp_qregs): New.
1198         * config/aarch64/aarch64.c (xgene1_tunings): Add
1199         AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS to tune_flags.
1200         (aarch64_mode_valid_for_sched_fusion_p):
1201         Allow 16-byte modes.
1202         (aarch64_classify_address): Allow 16-byte modes for load_store_pair_p.
1203         * config/aarch64/aarch64-ldpstp.md: Add peepholes for LDP STP of
1204         128-bit modes.
1205         * config/aarch64/aarch64-simd.md (load_pair<VQ:mode><VQ2:mode>):
1206         New pattern.
1207         (vec_store_pair<VQ:mode><VQ2:mode>): Likewise.
1208         * config/aarch64/iterators.md (VQ2): New mode iterator.
1210 2018-06-20  Martin Liska  <mliska@suse.cz>
1212         * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
1213         Change default ratio from 10 to 8.
1215 2018-06-20  Martin Liska  <mliska@suse.cz>
1217         * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
1218         New.
1219         (bit_test_cluster::find_bit_tests): Likewise.
1220         (switch_decision_tree::analyze_switch_statement): Find clusters.
1221         * tree-switch-conversion.h (struct jump_table_cluster): Document
1222         hierarchy.
1224 2018-06-20  Martin Liska  <mliska@suse.cz>
1226         * tree-switch-conversion.c (switch_conversion::collect):
1227         Record m_uniq property.
1228         (switch_conversion::expand): Bail out for special conditions.
1229         (group_cluster::~group_cluster): New.
1230         (group_cluster::group_cluster): Likewise.
1231         (group_cluster::dump): Likewise.
1232         (jump_table_cluster::emit): New.
1233         (switch_decision_tree::fix_phi_operands_for_edges): New.
1234         (struct case_node): Remove struct.
1235         (jump_table_cluster::can_be_handled): New.
1236         (case_values_threshold): Moved to header.
1237         (reset_out_edges_aux): Likewise.
1238         (jump_table_cluster::is_beneficial): New.
1239         (bit_test_cluster::can_be_handled): Likewise.
1240         (add_case_node): Remove.
1241         (bit_test_cluster::is_beneficial): New.
1242         (case_bit_test::cmp): New.
1243         (bit_test_cluster::emit): New.
1244         (expand_switch_as_decision_tree_p): Remove.
1245         (bit_test_cluster::hoist_edge_and_branch_if_true): New.
1246         (fix_phi_operands_for_edge): Likewise.
1247         (switch_decision_tree::analyze_switch_statement): New.
1248         (compute_cases_per_edge): Move ...
1249         (switch_decision_tree::compute_cases_per_edge): ... here.
1250         (try_switch_expansion): Likewise.
1251         (switch_decision_tree::try_switch_expansion): Likewise.
1252         (record_phi_operand_mapping): Likewise.
1253         (switch_decision_tree::record_phi_operand_mapping): Likewise.
1254         (emit_case_decision_tree): Likewise.
1255         (switch_decision_tree::emit): Likewise.
1256         (balance_case_nodes): Likewise.
1257         (switch_decision_tree::balance_case_nodes): Likewise.
1258         (dump_case_nodes): Likewise.
1259         (switch_decision_tree::dump_case_nodes): Likewise.
1260         (emit_jump): Likewise.
1261         (switch_decision_tree::emit_jump): Likewise.
1262         (emit_cmp_and_jump_insns): Likewise.
1263         (switch_decision_tree::emit_cmp_and_jump_insns): Likewise.
1264         (emit_case_nodes): Likewise.
1265         (switch_decision_tree::emit_case_nodes): Likewise.
1266         (conditional_probability): Remove.
1267         * tree-switch-conversion.h (enum cluster_type): New.
1268         (PRINT_CASE): New.
1269         (struct cluster): Likewise.
1270         (cluster::cluster): Likewise.
1271         (struct simple_cluster): Likewise.
1272         (simple_cluster::simple_cluster): Likewise.
1273         (struct group_cluster): Likewise.
1274         (struct jump_table_cluster): Likewise.
1275         (struct bit_test_cluster): Likewise.
1276         (struct min_cluster_item): Likewise.
1277         (struct case_tree_node): Likewise.
1278         (case_tree_node::case_tree_node): Likewise.
1279         (jump_table_cluster::case_values_threshold): Likewise.
1280         (struct case_bit_test): Likewise.
1281         (struct switch_decision_tree): Likewise.
1282         (struct switch_conversion): Likewise.
1283         (switch_decision_tree::reset_out_edges_aux): Likewise.
1285 2018-06-20  Martin Liska  <mliska@suse.cz>
1287         * tree-switch-conversion.c (MAX_CASE_BIT_TESTS): Remove.
1288         (hoist_edge_and_branch_if_true): Likewise.
1289         (expand_switch_using_bit_tests_p): Likewise.
1290         (struct case_bit_test): Likewise.
1291         (case_bit_test_cmp): Likewise.
1292         (emit_case_bit_tests): Likewise.
1293         (switch_conversion::switch_conversion): New class.
1294         (struct switch_conv_info): Remove old struct.
1295         (collect_switch_conv_info): More to ...
1296         (switch_conversion::collect): ... this.
1297         (check_range): Likewise.
1298         (switch_conversion::check_range): Likewise.
1299         (check_all_empty_except_final): Likewise.
1300         (switch_conversion::check_all_empty_except_final): Likewise.
1301         (check_final_bb): Likewise.
1302         (switch_conversion::check_final_bb): Likewise.
1303         (create_temp_arrays): Likewise.
1304         (switch_conversion::create_temp_arrays): Likewise.
1305         (free_temp_arrays): Likewise.
1306         (gather_default_values): Likewise.
1307         (switch_conversion::gather_default_values): Likewise.
1308         (build_constructors): Likewise.
1309         (switch_conversion::build_constructors): Likewise.
1310         (constructor_contains_same_values_p): Likewise.
1311         (switch_conversion::contains_same_values_p): Likewise.
1312         (array_value_type): Likewise.
1313         (switch_conversion::array_value_type): Likewise.
1314         (build_one_array): Likewise.
1315         (switch_conversion::build_one_array): Likewise.
1316         (build_arrays): Likewise.
1317         (switch_conversion::build_arrays): Likewise.
1318         (gen_def_assigns): Likewise.
1319         (switch_conversion::gen_def_assigns): Likewise.
1320         (prune_bbs): Likewise.
1321         (switch_conversion::prune_bbs): Likewise.
1322         (fix_phi_nodes): Likewise.
1323         (switch_conversion::fix_phi_nodes): Likewise.
1324         (gen_inbound_check): Likewise.
1325         (switch_conversion::gen_inbound_check): Likewise.
1326         (process_switch): Use the newly created class.
1327         (switch_conversion::expand): New.
1328         (switch_conversion::~switch_conversion): New.
1329         * tree-switch-conversion.h: New file.
1331 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
1333         * tree-vectorizer.h (NUM_PATTERNS, vect_recog_func_ptr): Move to
1334         tree-vect-patterns.c.
1335         * tree-vect-patterns.c (vect_supportable_direct_optab_p): New function.
1336         (vect_recog_dot_prod_pattern): Use it.  Remove the type_in argument.
1337         (vect_recog_sad_pattern): Likewise.
1338         (vect_recog_widen_sum_pattern): Likewise.
1339         (vect_recog_pow_pattern): Likewise.  Check for a null vectype.
1340         (vect_recog_widen_shift_pattern): Remove the type_in argument.
1341         (vect_recog_rotate_pattern): Likewise.
1342         (vect_recog_mult_pattern): Likewise.
1343         (vect_recog_vector_vector_shift_pattern): Likewise.
1344         (vect_recog_divmod_pattern): Likewise.
1345         (vect_recog_mixed_size_cond_pattern): Likewise.
1346         (vect_recog_bool_pattern): Likewise.
1347         (vect_recog_mask_conversion_pattern): Likewise.
1348         (vect_try_gather_scatter_pattern): Likewise.
1349         (vect_recog_widen_mult_pattern): Likewise.  Check for a null vectype.
1350         (vect_recog_over_widening_pattern): Likewise.
1351         (vect_recog_gather_scatter_pattern): Likewise.
1352         (vect_recog_func_ptr): Move from tree-vectorizer.h
1353         (vect_vect_recog_func_ptrs): Move further down the file.
1354         (vect_recog_func): Likewise.  Remove the third argument.
1355         (NUM_PATTERNS): Define based on vect_vect_recog_func_ptrs.
1356         (vect_pattern_recog_1): Expect the pattern function to do any
1357         necessary target tests.  Also expect it to provide a vector type.
1358         Remove the type_in handling.
1360 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
1362         * tree-vect-patterns.c (vect_pattern_detected): New function.
1363         (vect_recog_dot_prod_patternm, vect_recog_sad_pattern)
1364         (vect_recog_widen_mult_pattern, vect_recog_widen_sum_pattern)
1365         (vect_recog_over_widening_pattern, vect_recog_widen_shift_pattern
1366         (vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern)
1367         (vect_recog_mult_pattern, vect_recog_divmod_pattern)
1368         (vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern)
1369         (vect_recog_mask_conversion_pattern)
1370         (vect_try_gather_scatter_pattern): Likewise.
1372 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
1374         * tree-vect-patterns.c (vect_get_internal_def): New function.
1375         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern)
1376         (vect_recog_vector_vector_shift_pattern, check_bool_pattern)
1377         (search_type_for_mask_1): Use it.
1379 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
1381         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove
1382         redundant WIDEN_SUM_EXPR handling.
1383         (vect_recog_sad_pattern): Likewise.
1385 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
1387         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Remove
1388         redundant check that the types of a PLUS_EXPR or MULT_EXPR agree.
1389         (vect_recog_sad_pattern): Likewise PLUS_EXPR, ABS_EXPR and MINUS_EXPR.
1390         (vect_recog_widen_mult_pattern): Likewise MULT_EXPR.
1391         (vect_recog_widen_sum_pattern): Likewise PLUS_EXPR.
1393 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
1395         * tree-vect-stmts.c (vectorizable_call): Make sure that we
1396         use the stmt_vec_info of the original bb statement for the
1397         new zero assignment, even if the call is part of a pattern.
1399 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
1401         * tree-vectorizer.h (_stmt_vec_info): Note above pattern_def_seq
1402         that the sequence is attached to the original statement rather
1403         than the pattern statement.
1404         * tree-vect-loop.c (vect_determine_vf_for_stmt): Take the
1405         PATTERN_DEF_SEQ from the original statement rather than
1406         the main pattern statement.
1407         * tree-vect-stmts.c (free_stmt_vec_info): Likewise.
1408         * tree-vect-patterns.c (vect_recog_dot_prod_pattern): Likewise.
1409         (vect_mark_pattern_stmts): Don't copy the PATTERN_DEF_SEQ.
1411 2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
1413         * tree-vect-stmts.c (vect_analyze_stmt): Move the handling of pattern
1414         definition statements before the early exit for statements that aren't
1415         live or relevant.
1416         * tree-vect-loop.c (vect_transform_loop_stmt): New function,
1417         split out from...
1418         (vect_transform_loop): ...here.  Process pattern definition
1419         statements without first checking whether the main pattern
1420         statement is live or relevant.
1422 2018-06-19  Eric Botcazou  <ebotcazou@adacore.com>
1424         * tree-cfgcleanup.c (tree_forwarder_block_p): Do not return false at
1425         -O0 if the locus represent UNKNOWN_LOCATION but have different values.
1426         
1427 2018-06-19  Aaron Sawdey  <acsawdey@linux.ibm.com>
1429         * config/rs6000/rs6000-string.c (select_block_compare_mode): Check
1430         TARGET_EFFICIENT_OVERLAPPING_UNALIGNED here instead of in caller.
1431         (do_and3, do_and3_mask, do_compb3, do_rotl3): New functions.
1432         (expand_block_compare): Change select_block_compare_mode call.
1433         (expand_strncmp_align_check): Use new functions, fix comment.
1434         (emit_final_str_compare_gpr): New function.
1435         (expand_strn_compare): Refactor and clean up code.
1436         * config/rs6000/vsx.md (vsx_mov<mode>_64bit): Remove *.
1438 2018-06-19  Tony Reix  <tony.reix@atos.com>
1439             Damien Bergamini  <damien.bergamini@atos.com>
1440             David Edelsohn  <dje.gcc@gmail.com>
1442         * collect2.c (static_obj): New variable.
1443         (static_libs): New variable.
1444         (is_in_list): Uncomment declaration.
1445         (main): Track AIX libraries linked statically.
1446         (is_in_list): Uncomment definition.
1447         (scan_prog_file): Don't add AIX shared libraries initializer
1448         to constructor list if linking statically.
1450 2018-06-19  Max Filippov  <jcmvbkbc@gmail.com>
1452         * config/xtensa/xtensa.md (UNSPEC_FRAME_BLOCKAGE): New unspec
1453         constant.
1454         (allocate_stack, frame_blockage, *frame_blockage): New patterns.
1456 2018-06-19  Jan Hubicka  <hubicka@ucw.cz>
1458         * tree.c (find_decls_types_r): Remove all non-VAR_DECLs from
1459         blocks.
1461 2018-06-19  Martin Liska  <mliska@suse.cz>
1463         * config/i386/i386.c (ix86_can_inline_p): Do not use
1464         ipa_fn_summaries::get_create.
1465         * ipa-cp.c (ipcp_cloning_candidate_p): Replace get_create with
1466         get.
1467         (devirtualization_time_bonus): Likewise.
1468         (ipcp_propagate_stage): Likewise.
1469         * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
1470         (edge_set_predicate): Likewise.
1471         (evaluate_conditions_for_known_args): Likewise.
1472         (evaluate_properties_for_edge): Likewise.
1473         (ipa_call_summary::reset): Tranform to ...
1474         (ipa_call_summary::~ipa_call_summary): ... this.
1475         (ipa_fn_summary::reset): Transform to ...
1476         (ipa_fn_summary::~ipa_fn_summary): ... this.
1477         (ipa_fn_summary_t::remove): Rename to ...
1478         (ipa_fn_summary_t::remove_callees): ... this.
1479         (ipa_fn_summary_t::duplicate): Use placement new
1480         instead of memory copy.
1481         (ipa_call_summary_t::duplicate): Likewise.
1482         (ipa_call_summary_t::remove): Remove.
1483         (dump_ipa_call_summary): Change get_create to get.
1484         (ipa_dump_fn_summary): Dump only when summary exists.
1485         (analyze_function_body): Use symbol_summary::get instead
1486         of get_create.
1487         (compute_fn_summary): Likewise.
1488         (estimate_edge_devirt_benefit): Likewise.
1489         (estimate_edge_size_and_time): Likewise.
1490         (inline_update_callee_summaries): Likewise.
1491         (remap_edge_change_prob): Likewise.
1492         (remap_edge_summaries): Likewise.
1493         (ipa_merge_fn_summary_after_inlining): Likewise.
1494         (write_ipa_call_summary): Likewise.
1495         (ipa_fn_summary_write): Likewise.
1496         (ipa_free_fn_summary): Likewise.
1497         * ipa-fnsummary.h (struct GTY): Add new ctor and copy ctor.
1498         (struct ipa_call_summary): Likewise.
1499         * ipa-icf.c (sem_function::merge): Use symbol_summary::get instead
1500         of get_create.
1501         * ipa-inline-analysis.c (do_estimate_edge_time): Likewise.
1502         (estimate_size_after_inlining): Likewise.
1503         (estimate_growth): Likewise.
1504         (growth_likely_positive): Likewise.
1505         * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
1506         (inline_call): Likewise.
1507         * ipa-inline.c (caller_growth_limits): Likewise.
1508         (can_inline_edge_p): Likewise.
1509         (can_inline_edge_by_limits_p): Likewise.
1510         (compute_uninlined_call_time): Likewise.
1511         (compute_inlined_call_time): Likewise.
1512         (want_inline_small_function_p): Likewise.
1513         (edge_badness): Likewise.
1514         (update_caller_keys): Likewise.
1515         (update_callee_keys): Likewise.
1516         (inline_small_functions): Likewise.
1517         (inline_to_all_callers_1): Likewise.
1518         (dump_overall_stats): Likewise.
1519         (early_inline_small_functions): Likewise.
1520         (early_inliner): Likewise.
1521         * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
1522         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
1523         * ipa-pure-const.c (malloc_candidate_p): Likewise.
1524         * ipa-split.c (execute_split_functions): Likewise.
1525         * symbol-summary.h: Likewise.
1526         * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
1528 2018-06-19  Richard Biener  <rguenther@suse.de>
1530         * tree-vectorizer.c (try_vectorize_loop_1): Split out of ...
1531         (vectorize_loops): ... here.  Fix dbgcnt handling.
1532         (try_vectorize_loop): Wrap try_vectorize_loop_1.
1534 2018-06-19  Segher Boessenkool  <segher@kernel.crashing.org>
1536         PR target/86197
1537         * config/rs6000/rs6000.md (rs6000_discover_homogeneous_aggregate): An
1538         ieee128 argument takes up only one (vector) register, not two (floating
1539         point) registers.
1541 2018-06-19  Eric Botcazou  <ebotcazou@adacore.com>
1543         * gimplify.c (gimplify_init_constructor): Really never clear for an
1544         incomplete constructor if CONSTRUCTOR_NO_CLEARING is set.
1546 2018-06-19  Richard Biener  <rguenther@suse.de>
1548         PR tree-optimization/86179
1549         * tree-vect-patterns.c (vect_pattern_recog_1): Clean up
1550         after failed recognition.
1552 2018-06-18  Martin Sebor  <msebor@redhat.com>
1554         PR middle-end/85602
1555         * calls.c (maybe_warn_nonstring_arg): Handle strncat.
1556         * tree-ssa-strlen.c (is_strlen_related_p): Make extern.
1557         Handle integer subtraction.
1558         (maybe_diag_stxncpy_trunc): Handle nonstring source arguments.
1559         * tree-ssa-strlen.h (is_strlen_related_p): Declare.
1561 2018-06-18  David Malcolm  <dmalcolm@redhat.com>
1563         * config/frv/frv-protos.h (frv_ifcvt_modify_insn): Strengthen 3rd
1564         param from rtx to rtx_insn *.
1565         * config/frv/frv.c (frv_ifcvt_add_insn): Likewise for "insn"
1566         param.
1567         (frv_ifcvt_modify_insn): Likwise.
1568         (frv_ifcvt_modify_final): Likwise for local "existing_insn",
1569         adding an as_a <rtx_insn *> cast.  Likewise for local "insn".
1570         * config/mips/mips.c (r10k_insert_cache_barriers): Add an
1571         as_a <rtx_insn *> cast to local "unprotected_region" once
1572         it's been established that it's not NULL or pc_rtx.
1573         * config/nds32/nds32-relax-opt.c (nds32_group_insns): Strengthen
1574         param "sethi" from rtx to rtx_insn *.
1575         (nds32_group_float_insns): Likewise for param "insn".
1576         * config/vax/vax-protos.h (vax_output_int_add): Likewise for 1st
1577         param.
1578         (vax_output_int_subtract): Likewise.
1579         * config/vax/vax.c (vax_output_int_add): Likewise for param
1580         "insn".
1581         (vax_output_int_subtract): Likewise.
1582         * emit-rtl.c (set_insn_deleted): Likewise, removing cast.
1583         (emit_pattern_after): Likewise for param "after".
1584         (emit_insn_after): Likewise.
1585         (emit_jump_insn_after): Likewise.
1586         (emit_call_insn_after): Likewise.
1587         (emit_debug_insn_after): Likewise.
1588         (emit_pattern_before): Likewise for param "before".
1589         (emit_insn_before): Likewise.
1590         (emit_jump_insn_before): Likewise.
1591         * final.c (get_insn_template): Likewise for param "insn", removing
1592         a cast.
1593         * output.h (get_insn_template): Likewise for 2nd param.
1594         * rtl.h (emit_insn_before): Likewise.
1595         (emit_jump_insn_before): Likewise.
1596         (emit_debug_insn_before_noloc): Likewise.
1597         (emit_insn_after): Likewise.
1598         (emit_jump_insn_after): Likewise.
1599         (emit_call_insn_after): Likewise.
1600         (emit_debug_insn_after): Likewise.
1601         (set_insn_deleted): Likewise for param.
1603 2018-06-18  Michael Meissner  <meissner@linux.ibm.com>
1605         PR target/85358
1606         * config/rs6000/rs6000-modes.def (toplevel): Rework the 128-bit
1607         floating point modes, so that IFmode is numerically greater than
1608         TFmode, which is greater than KFmode using FRACTIONAL_FLOAT_MODE
1609         to declare the ordering.  This prevents IFmode from being
1610         converted to TFmode when long double is IEEE 128-bit on an ISA 3.0
1611         machine.  Include rs6000-modes.h to share the fractional values
1612         between genmodes* and the rest of the compiler.
1613         (IFmode): Likewise.
1614         (KFmode): Likewise.
1615         (TFmode): Likewise.
1616         * config/rs6000/rs6000-modes.h: New file.
1617         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Change the
1618         meaning of rs6000_long_double_size so that 126..128 selects an
1619         appropriate 128-bit floating point type.
1620         (rs6000_option_override_internal): Likewise.
1621         * config/rs6000/rs6000.h (toplevel): Include rs6000-modes.h.
1622         (TARGET_LONG_DOUBLE_128): Change the meaning of
1623         rs6000_long_double_size so that 126..128 selects an appropriate
1624         128-bit floating point type.
1625         (LONG_DOUBLE_TYPE_SIZE): Update comment.
1626         * config/rs6000/rs6000.md (trunciftf2): Correct the modes of the
1627         source and destination to match the standard usage.
1628         (truncifkf2): Likewise.
1629         (copysign<mode>3, IEEE iterator): Rework copysign of float128 on
1630         ISA 2.07 to use an explicit clobber, instead of passing in a
1631         temporary.
1632         (copysign<mode>3_soft): Likewise.
1634 2018-06-18  David Malcolm  <dmalcolm@redhat.com>
1636         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences):
1637         Replace dump_printf_loc call with DUMP_VECT_SCOPE.
1638         (vect_slp_analyze_instance_dependence): Likewise.
1639         (vect_enhance_data_refs_alignment): Likewise.
1640         (vect_analyze_data_refs_alignment): Likewise.
1641         (vect_slp_analyze_and_verify_instance_alignment
1642         (vect_analyze_data_ref_accesses): Likewise.
1643         (vect_prune_runtime_alias_test_list): Likewise.
1644         (vect_analyze_data_refs): Likewise.
1645         * tree-vect-loop-manip.c (vect_update_inits_of_drs): Likewise.
1646         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
1647         (vect_analyze_scalar_cycles_1): Likewise.
1648         (vect_get_loop_niters): Likewise.
1649         (vect_analyze_loop_form_1): Likewise.
1650         (vect_update_vf_for_slp): Likewise.
1651         (vect_analyze_loop_operations): Likewise.
1652         (vect_analyze_loop): Likewise.
1653         (vectorizable_induction): Likewise.
1654         (vect_transform_loop): Likewise.
1655         * tree-vect-patterns.c (vect_pattern_recog): Likewise.
1656         * tree-vect-slp.c (vect_analyze_slp): Likewise.
1657         (vect_make_slp_decision): Likewise.
1658         (vect_detect_hybrid_slp): Likewise.
1659         (vect_slp_analyze_operations): Likewise.
1660         (vect_slp_bb): Likewise.
1661         * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise.
1662         (vectorizable_bswap): Likewise.
1663         (vectorizable_call): Likewise.
1664         (vectorizable_simd_clone_call): Likewise.
1665         (vectorizable_conversion): Likewise.
1666         (vectorizable_assignment): Likewise.
1667         (vectorizable_shift): Likewise.
1668         (vectorizable_operation): Likewise.
1669         * tree-vectorizer.h (DUMP_VECT_SCOPE): New macro.
1671 2018-06-18  Martin Sebor  <msebor@redhat.com>
1673         PR tree-optimization/81384
1674         * builtin-types.def (BT_FN_SIZE_CONST_STRING_SIZE): New.
1675         * builtins.c (expand_builtin_strnlen): New function.
1676         (expand_builtin): Call it.
1677         (fold_builtin_n): Avoid setting TREE_NO_WARNING.
1678         * builtins.def (BUILT_IN_STRNLEN): New.
1679         * calls.c (maybe_warn_nonstring_arg): Handle BUILT_IN_STRNLEN.
1680         Warn for bounds in excess of maximum object size.
1681         * tree-ssa-strlen.c (maybe_set_strlen_range): Return tree representing
1682         single-value ranges.  Handle strnlen.
1683         (handle_builtin_strlen): Handle strnlen.
1684         (strlen_check_and_optimize_stmt): Same.
1685         * doc/extend.texi (Other Builtins): Document strnlen.
1687 2018-06-18  Maya Rashish  <coypu@sdf.org>
1689         * config/alpha/openbsd.h (TARGET_DEFAULT): Define.
1690         (LINK_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): Likewise.
1691         (INTMAX_TYPE, UINTMAX_TYPE, WINT_TYPE): Likewise.
1693         * config/alpha/elf.h (STARTFILE_SPEC, ENDFILE_SPEC): Move from
1694         here to ...
1695         * config/alpha/linux.h (STARTFILE_SPEC, ENDFILE_SPEC): Here.
1697 2018-06-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
1699         * tree.c (escaped_string::escape): Replace cast to char * by
1700         const_cast<char *> (unescaped).
1702 2018-06-18  Nick Clifton  <nickc@redhat.com>
1704         PR 84195
1705         * tree.c (escaped_string): New class.  Converts an unescaped
1706         string into its escaped equivalent.
1707         (warn_deprecated_use): Use the new class to convert the
1708         deprecation message, if present.
1709         (test_escaped_strings): New self test.
1710         (test_c_tests): Add test_escaped_strings.
1711         * doc/extend.texi (deprecated): Add a note that the
1712         deprecation message is affected by the -fmessage-length
1713         option, and that control characters will be escaped.
1714         (#pragma GCC error): Document this pragma.
1715         (#pragma GCC warning): Likewise.
1716         * doc/invoke.texi (-fmessage-length): Document this option's
1717         effect on the #warning and #error preprocessor directives and
1718         the deprecated attribute.
1720 2018-06-18  Eric Botcazou  <ebotcazou@adacore.com>
1722         * tree.c (decl_value_expr_lookup): Revert latest change.
1723         (decl_value_expr_insert): Likewise.
1725 2018-06-17  Eric Botcazou  <ebotcazou@adacore.com>
1727         * gimplify.c (nonlocal_vlas): Delete.
1728         (nonlocal_vla_vars): Likewise.
1729         (gimplify_var_or_parm_decl): Do not add debug VAR_DECLs for non-local
1730         referenced VLAs.
1731         (gimplify_body): Do not create and destroy nonlocal_vlas.
1732         * tree-nested.c: Include diagnostic.h.
1733         (use_pointer_in_frame): Tweak.
1734         (lookup_field_for_decl): Add assertion and declare the transformation.
1735         (convert_nonlocal_reference_op) <PARM_DECL>: Rework and issue an
1736         internal error when the reference is in a wrong context.  Do not
1737         create a debug decl by default.
1738         (note_nonlocal_block_vlas): Delete.
1739         (convert_nonlocal_reference_stmt) <GIMPLE_BIND>: Do not call it.
1740         (convert_local_reference_op) <PARM_DECL>: Skip the frame decl.  Do not
1741         create a debug decl by default.
1742         (convert_gimple_call) <GIMPLE_CALL>: Issue an internal error when the
1743         call is in a wrong context.
1744         (fixup_vla_decls): New function.
1745         (finalize_nesting_tree_1): Adjust comment.  Call fixup_vla_decls if no
1746         debug variables were created.
1747         * tree.c (decl_value_expr_lookup): Add checking assertion.
1748         (decl_value_expr_insert): Likewise.
1750 2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>
1752         PR middle-end/82479
1753         * ipa-fnsummary.c (will_be_nonconstant_expr_predicate): Handle CALL_EXPR.
1754         * tree-scalar-evolution.c (interpret_expr): Likewise.
1755         (expression_expensive_p): Likewise.
1756         * tree-ssa-loop-ivopts.c (contains_abnormal_ssa_name_p): Likewise.
1757         * tree-ssa-loop-niter.c (number_of_iterations_popcount): New.
1758         (number_of_iterations_exit_assumptions): Use number_of_iterations_popcount.
1759         (ssa_defined_by_minus_one_stmt_p): New.
1761 2018-06-16  Kugan Vivekanandarajah  <kuganv@linaro.org>
1763         PR middle-end/64946
1764         * cfgexpand.c (expand_debug_expr): Hande ABSU_EXPR.
1765         * config/i386/i386.c (ix86_add_stmt_cost): Likewise.
1766         * dojump.c (do_jump): Likewise.
1767         * expr.c (expand_expr_real_2): Check operand type's sign.
1768         * fold-const.c (const_unop): Handle ABSU_EXPR.
1769         (fold_abs_const): Likewise.
1770         * gimple-pretty-print.c (dump_unary_rhs): Likewise.
1771         * gimple-ssa-backprop.c (backprop::process_assign_use): Likesie.
1772         (strip_sign_op_1): Likesise.
1773         * match.pd: Add new pattern to generate ABSU_EXPR.
1774         * optabs-tree.c (optab_for_tree_code): Handle ABSU_EXPR.
1775         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
1776         * tree-eh.c (operation_could_trap_helper_p): Likewise.
1777         * tree-inline.c (estimate_operator_cost): Likewise.
1778         * tree-pretty-print.c (dump_generic_node): Likewise.
1779         * tree-vect-patterns.c (vect_recog_sad_pattern): Likewise.
1780         * tree.def (ABSU_EXPR): New.
1782 2018-06-16  Jakub Jelinek  <jakub@redhat.com>
1784         PR middle-end/86095
1785         * common.opt (Wunsafe-loop-optimizations): Add Ignore, remove Var,
1786         documented as preserved for backward compatibility only.
1787         * doc/invoke.texi: Remove -Wunsafe-loop-optimizations documentation.
1789         PR rtl-optimization/86108
1790         * bb-reorder.c (create_forwarder_block): Renamed to ...
1791         (create_eh_forwarder_block): ... this.  Split OLD_BB after labels and
1792         jump from new landing pad to the second part.
1793         (sjlj_fix_up_crossing_landing_pad, dw2_fix_up_crossing_landing_pad):
1794         Adjust callers.
1796 2018-06-15  Jakub Jelinek  <jakub@redhat.com>
1798         PR middle-end/85878
1799         * expr.c (expand_assignment): Remove now redundant COMPLEX_MODE_P
1800         check from first store_expr, use to_mode instead of GET_MODE (to_rtx).
1801         Only call store_expr for halves if the mode is the same.
1803         PR middle-end/86123
1804         * match.pd ((X / Y) == 0 -> X < Y): Don't transform complex divisions.
1805         Fix up comment formatting.
1807 2018-06-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1809         * typed-splay-tree.h (typed_splay_tree::remove): New function.
1810         (typed_splay_tree::closure,
1811         typed_splay_tree::inner_foreach_fn, typed_splay_tree::m_inner): Deleted.
1812         (typed_splay_tree::typed_splay_tree,
1813         typed_splay_tree::operator =): Declared private.
1814         (typed_splay_tree::splay_tree_key, typed_splay_tree::splay_tree_value,
1815         typed_splay_tree::splay_tree_node_s, typed_splay_tree::KDEL,
1816         typed_splay_tree::VDEL, typed_splay_tree::splay_tree_delete_helper,
1817         typed_splay_tree::rotate_left, typed_splay_tree::rotate_right,
1818         typed_splay_tree::splay_tree_splay,
1819         typed_splay_tree::splay_tree_foreach_helper,
1820         typed_splay_tree::splay_tree_insert,
1821         typed_splay_tree::splay_tree_remove,
1822         typed_splay_tree::splay_tree_lookup,
1823         typed_splay_tree::splay_tree_predecessor,
1824         typed_splay_tree::splay_tree_successor,
1825         typed_splay_tree::splay_tree_min,
1826         typed_splay_tree::splay_tree_max): Took over from splay-tree.c/.h.
1827         (typed_splay_tree::root, typed_splay_tree::comp,
1828         typed_splay_tree::delete_key,
1829         typed_splay_tree::delete_value): New data members.
1830         * typed-splay-tree.c (selftest::test_str_to_int): Add a test for
1831         typed_splay_tree::remove.
1833 2018-06-15  Matthew Fortune  <matthew.fortune@mips.com>
1835         * config/mips/mips.h (ASM_SPEC): Pass through -mcrc, -mno-crc,
1836         -mginv and -mno-ginv to the assembler.
1837         * config/mips/mips.opt (-mcrc): New option.
1838         (-mginv): Likewise.
1839         * doc/invoke.text (-mcrc): Document.
1840         (-mginv): Likewise.
1842 2018-06-15  Nick Clifton  <nickc@redhat.com>
1844         PR 84195
1845         * tree.c (escaped_string): New class.  Converts an unescaped
1846         string into its escaped equivalent.
1847         (warn_deprecated_use): Use the new class to convert the
1848         deprecation message, if present.
1849         (test_escaped_strings): New self test.
1850         (test_c_tests): Add test_escaped_strings.
1851         * doc/extend.texi (deprecated): Add a note that the
1852         deprecation message is affected by the -fmessage-length
1853         option, and that control characters will be escaped.
1854         (#pragma GCC error): Document this pragma.
1855         (#pragma GCC warning): Likewise.
1856         * doc/invoke.texi (-fmessage-length): Document this option's
1857         effect on the #warning and #error preprocessor directives and
1858         the deprecated attribute.
1860 2018-06-15  Richard Biener  <rguenther@suse.de>
1862         * tree-vect-slp.c (vect_slp_bb): Dump MSG_OPTIMIZED_LOCATIONS
1863         here, also noting vector size used.
1864         * tree-vectorizer.c (vectorize_loops): Adjust.  Note vector
1865         size used in MSG_OPTIMIZED_LOCATIONS dump.
1866         (pass_slp_vectorize::execute): Adjust.
1868 2018-06-15  Claudiu Zissulescu  <claziss@synopsys.com>
1870         PR target/85968
1871         * config/arc/arc.c (arc_return_address_register): Fix
1872         if-condition.
1874 2018-06-15  Richard Biener  <rguenther@suse.de>
1876         PR middle-end/86159
1877         * tree-cfg.c (gimplify_build3): Do not strip sign conversions,
1878         leave useless conversion stripping to force_gimple_operand_gsi.
1879         (gimplify_build2): Likewise.
1880         (gimplify_build1): Likewise.
1882 2018-06-15  Richard Biener  <rguenther@suse.de>
1884         PR middle-end/86076
1885         * tree-cfg.c (move_stmt_op): unshare invariant addresses
1886         before adjusting their block.
1888 2018-06-15  Sebastian Huber  <sebastian.huber@embedded-brains.de>
1890         * config.gcc (riscv*-*-elf* | riscv*-*-rtems*): Use custom
1891         multilibs for *-*-rtems*.
1892         * config/riscv/t-rtems: New file.
1894 2018-06-14  Jakub Jelinek  <jakub@redhat.com>
1896         PR middle-end/86122
1897         * match.pd ((A +- CST1) +- CST2): Punt if last resort
1898         unsigned_type_for returns NULL.
1900         PR target/85945
1901         * lower-subreg.c (find_decomposable_subregs): Don't decompose float
1902         subregs of multi-word pseudos unless the float mode has word size.
1904 2018-06-14  Richard Biener  <rguenther@suse.de>
1906         PR middle-end/86139
1907         * tree-vect-generic.c (build_word_mode_vector_type): Remove
1908         duplicate and harmful type_hash_canon.
1909         * tree.c (type_hash_canon): Assert we didn't find ourselves.
1911 2018-06-14  Richard Biener  <rguenther@suse.de>
1913         PR ipa/86124
1914         * tree-ssa-struct-alias.c (create_variable_info_for): Handle
1915         NULL cgraph_node.
1917 2018-06-14  Sebastian Huber  <sebastian.huber@embedded-brains.de>
1919         * config/rtems.h (STDINT_LONG32): Define.
1921 2018-06-13  Matthew Fortune  <matthew.fortune@mips.com>
1922             Prachi Godbole  <prachi.godbole@imgtec.com>
1924         * config/mips/mips-cpus.def: Define P6600.
1925         * config/mips/mips-tables.opt: Regenerate.
1926         * config/mips/mips.c (mips_ucbranch_type): New enum.
1927         (mips_rtx_cost_data): Add support for P6600.
1928         (mips_issue_rate): Likewise.
1929         (mips_multipass_dfa_lookahead): Likewise.
1930         (mips_avoid_hazard): Likewise.
1931         (mips_reorg_process_insns): Likewise.
1932         (mips_classify_branch_p6600): New function.
1933         * config/mips/mips.h (TUNE_P6600): New define.
1934         (MIPS_ISA_LEVEL_SPEC): Infer mips64r6 from p6600.
1935         (ENABLE_LD_ST_PAIRS): Enable load/store bonding for p6600.
1936         * config/mips/mips.md: Include p6600.md.
1937         (processor): Add p6600.
1938         * config/mips/p6600.md: New file.
1939         * doc/invoke.texi: Add p6600 to supported architectures.
1941 2018-06-13  Martin Sebor  <msebor@redhat.com>
1943         PR tree-optimization/86114
1944         * gimple-fold.c (gimple_fold_builtin_strlen): Only handle LHS
1945         of integer types.
1946         * tree-ssa-strlen.c (maybe_set_strlen_range): Same.
1948 2018-06-13  Richard Biener  <rguenther@suse.de>
1950         * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern):
1951         Properly set vector type of the intermediate stmt.
1952         * tree-vect-stmts.c (vectorizable_operation): The destination
1953         var always has vectype_out type.
1955 2018-06-13  Jeff Law  <law@redhat.com>
1957         * config/rl78/rl78.c (move_elim_pass): Use TDF_NONE rather than
1958         integer 0 for argument to print_rtl_with_bb.
1959         (rl78_reorg): Likewise.
1961 2018-06-13  David Malcolm  <dmalcolm@redhat.com>
1963         * config/arc/arc.c (hwloop_optimize): Strengthen local "end_label"
1964         from rtx to rtx_insn *.
1965         * config/bfin/bfin.c (hwloop_optimize): Likewise for local
1966         "label".
1967         (add_sched_insns_for_speculation): Likewise for local "target",
1968         converting usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
1969         * config/c6x/c6x.c (reorg_split_calls): Strengthen param "call_labels"
1970         from rtx_insn ** to rtx_code_label **.
1971         (reorg_emit_nops): Likewise.
1972         (c6x_reorg): Likewise for local "call_labels".
1973         * config/sh/sh-protos.h (get_dest_uid): Strengthen 1st param from
1974         rtx to rtx_insn *.
1975         * config/sh/sh.c (dump_table): Strengthen local "lab" from rtx to
1976         rtx_code_label *, adding safe_as_a <rtx_code_label *> casts to
1977         the loops over LABEL_REFS.
1978         (fixup_addr_diff_vecs): Add as_a <rtx_insn *> to usage of
1979         braf_label.
1980         (barrier_align): Convert usage of JUMP_LABEL to JUMP_LABEL_AS_INSN.
1981         (get_dest_uid): Strengthen param "label" from rtx to rtx_insn *.
1982         (split_branches): Strengthen local "olabel" from rtx to
1983         rtx_insn *, adding a safe_as_a cast.
1984         * emit-rtl.c (next_real_insn): Strengthen param from "rtx"
1985         to "rtx_insn *".
1986         (add_insn_after): Likewise for first two params.
1987         (add_insn_before): Likewise.
1988         (remove_insn): Likewise for param.
1989         (emit_pattern_before_noloc): Likewise for second and third params.
1990         (emit_jump_insn_before_noloc): Convert NULL_RTX to NULL.
1991         (emit_call_insn_before_noloc): Likewise.
1992         (emit_debug_insn_before_noloc): Strengthen "before" param from "rtx"
1993         to "rtx_insn *".
1994         (emit_barrier_before): Likewise.
1995         (emit_label_before): Strengthen "label" param from "rtx" to
1996         "rtx_code_label *".  Strengthen "before" param from "rtx" to
1997         "rtx_insn *".
1998         (emit_insn_after_1): Strengthen "after" param from "rtx" to
1999         "rtx_insn *".
2000         (emit_pattern_after_noloc): Likewise.
2001         (emit_insn_after_noloc): Likewise.
2002         (emit_jump_insn_after_noloc): Likewise.
2003         (emit_call_insn_after_noloc): Likewise.
2004         (emit_debug_insn_after_noloc): Likewise.
2005         (emit_barrier_after): Likewise.
2006         (emit_label_after): Likewise for both params.
2007         (emit_pattern_after_setloc): Likewise for "after" param.  Convert
2008         "loc" param from "int" to "location_t".
2009         (emit_insn_after_setloc): Likewise.
2010         (emit_jump_insn_after_setloc): Likewise.
2011         (emit_call_insn_after_setloc): Likewise.
2012         (emit_debug_insn_after_setloc): Likewise.
2013         (emit_pattern_before_setloc): Likewise for "before" param.  Convert
2014         "loc" param from "int" to "location_t".
2015         (emit_pattern_before): Convert NULL_RTX to NULL.
2016         (emit_insn_before_setloc): Convert "loc" param from "int" to
2017         "location_t".
2018         (emit_jump_insn_before_setloc): Likewise.
2019         (emit_call_insn_before_setloc): Likewise.
2020         (emit_debug_insn_before_setloc): Strengthen "before" param from rtx to
2021         rtx_insn *.  Convert "loc" param from "int" to "location_t".
2022         * rtl.h (emit_insn_before_setloc, emit_jump_insn_before_setloc,
2023         emit_call_insn_before_setloc, emit_debug_insn_before_setloc):
2024         Convert 3rd param from "int" to "location_t".
2025         (emit_barrier_before, emit_barrier_after, next_real_insn):
2026         Strengthen param from rtx to rtx_insn *.
2027         (emit_label_before): Strengthen 1st param from "rtx" to
2028         "rtx_code_label *".  Strengthen 2nd param from "rtx" to
2029         "rtx_insn *".
2030         (emit_insn_after_noloc, emit_jump_insn_after_noloc,
2031         emit_call_insn_after_noloc, emit_debug_insn_after_noloc):
2032         Strengthen 2nd param from "rtx" to "rtx_insn *".
2033         (emit_insn_after_setloc, emit_jump_insn_after_setloc)
2034         emit_call_insn_after_setloc, emit_debug_insn_after_setloc):
2035         Likewise. Convert 3rd param from "int" to "location_t".
2036         (emit_label_after): Strengthen 1st param from "rtx" to
2037         "rtx_code_label *".
2038         (next_real_insn, remove_insn): Strengthen param from "rtx" to
2039         "rtx_insn *".
2040         (add_insn_before, add_insn_after): Strengthen 1st and 2nd params
2041         from "rtx" to "rtx_insn *".
2043 2018-06-13  Jan Hubicka  <hubicka@gcc.gnu.org>
2045         * cgraph.c (cgraph_node::get_untransformed_body): Dump function
2046         bodies streamed in with -Q.
2047         * dumpfile.c (dump_files): Add lto-stream-out dump file.
2048         * dumpfile.h (tree_dump_index): Add lto_stream_out.
2049         * gimple-streamer-out.c: Include gimple-pretty-print.h
2050         (output_bb): Dump stmts streamed.
2051         * lto-section-out.c: Include print-tree.h
2052         (lto_begin_section): Dump sections created.
2053         (lto_output_decl_index): Dump decl encoded.
2054         * lto-streamer-out.c: Include print-tree.h
2055         (create_output_block): Dump output block created.
2056         (DFS::DFS_write_tree_body): Dump DFS SCCs streamed.
2057         (output_function): Dump function output.
2058         (output_constructor): Dump constructor streamed.
2059         (write_global_stream): Output indexes encoded.
2060         (produce_asm_for_decls): Dump streams encoded.
2061         * lto-streamer.c (streamer_dump_file): New global var.
2062         * lto-streamer.h (streamer_dump_file): Declare.
2063         * passes.c (ipa_write_summaries): Initialize streamer dump.
2064         * varpool.c (varpool_node::get_constructor): Dump constructors streamed
2065         in.
2067 2018-06-13  Eric Botcazou  <ebotcazou@adacore.com>
2069         PR target/86048
2070         * config/i386/winnt.c (i386_pe_seh_cold_init): Do not emit negative
2071         offsets for register save directives.  Emit a second batch of save
2072         directives, if need be, when the function accesses prior frames.
2074 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2076         * config/arc/fpu.md (fmasf4): Force operand to register.
2077         (fnmasf4): Likewise.
2079 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2081         * config/arc/arc-protos.h (arc_pad_return): Remove.
2082         * config/arc/arc.c (machine_function): Remove force_short_suffix
2083         and size_reason.
2084         (arc_print_operand): Adjust printing of '&'.
2085         (arc_verify_short): Remove conditional printing of short suffix.
2086         (arc_final_prescan_insn): Remove reference to size_reason.
2087         (pad_return): New function.
2088         (arc_reorg): Call pad_return.
2089         (arc_pad_return): Remove.
2090         (arc_init_machine_status): Remove reference to force_short_suffix.
2091         * config/arc/arc.md (vunspec): Add VUNSPEC_ARC_BLOCKAGE.
2092         (attr length): When attribute iscompact is true force to 2
2093         regardless; in the case of maybe check if we want to force the
2094         instruction to have 4 bytes length.
2095         (nopv): Change it to generate 4 byte long nop as well.
2096         (blockage): New pattern.
2097         (simple_return): Remove call to arc_pad_return.
2098         (p_return_i): Likewise.
2100 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2102         * config/arc/elf.h (LINK_GCC_C_SEQUENCE_SPEC): Define.
2104 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2106         * config/arc/builtins.def (SYNC): SYNC instruction is valid on all
2107         ARC cores.
2109 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2111         * config/arc/arc.c (atomic_exchangesi): EX instruction is default
2112         for ARC700 and ARCv2.
2114 2018-06-13  Chenghua Xu <paul.hua.gm@gmail.com>
2116         PR target/86076
2117         * config/mips/loongson.md (vec_setv4hi): Gen_lowpart for
2118         operands[2] instead of operands[1].
2121 2018-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
2123         * lra-constraints.c (simplify_operand_subreg): In the paradoxical
2124         case, check whether the outer register overlaps an unallocatable
2125         register, not just whether it fits the required class.
2127 2018-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
2129         * poly-int.h (can_div_trunc_p): Add new overload in which all values
2130         are poly_ints.
2131         * alias.c (get_addr): Extend CONST_INT handling to poly_int_rtx_p.
2132         (memrefs_conflict_p): Likewise.
2133         (init_alias_analysis): Likewise.
2134         * cfgexpand.c (expand_debug_expr): Likewise.
2135         * combine.c (combine_simplify_rtx, force_int_to_mode): Likewise.
2136         * cse.c (fold_rtx): Likewise.
2137         * explow.c (adjust_stack, anti_adjust_stack): Likewise.
2138         * expr.c (emit_block_move_hints): Likewise.
2139         (clear_storage_hints, push_block, emit_push_insn): Likewise.
2140         (store_expr_with_bounds, reduce_to_bit_field_precision): Likewise.
2141         (emit_group_load_1): Use rtx_to_poly_int64 for group offsets.
2142         (emit_group_store): Likewise.
2143         (find_args_size_adjust): Use strip_offset.  Use rtx_to_poly_int64
2144         to read the PRE/POST_MODIFY increment.
2145         * calls.c (store_one_arg): Use strip_offset.
2146         * rtlanal.c (rtx_addr_can_trap_p_1): Extend CONST_INT handling to
2147         poly_int_rtx_p.
2148         (set_noop_p): Use rtx_to_poly_int64 for the elements selected
2149         by a VEC_SELECT.
2150         * simplify-rtx.c (avoid_constant_pool_reference): Use strip_offset.
2151         (simplify_binary_operation_1): Extend CONST_INT handling to
2152         poly_int_rtx_p.
2153         * var-tracking.c (compute_cfa_pointer): Take a poly_int64 rather
2154         than a HOST_WIDE_INT.
2155         (hard_frame_pointer_adjustment): Change from HOST_WIDE_INT to
2156         poly_int64.
2157         (adjust_mems, add_stores): Update accodingly.
2158         (vt_canonicalize_addr): Track polynomial offsets.
2159         (emit_note_insn_var_location): Likewise.
2160         (vt_add_function_parameter): Likewise.
2161         (vt_initialize): Likewise.
2163 2018-06-12  Jeff Law  <law@redhat.com>
2165         * config.gcc (alpha*-*-freebsd*): Remove.
2166         * config/alpha/freebsd.h: Remove.
2168 2018-06-12  David Malcolm  <dmalcolm@redhat.com>
2170         PR other/69968
2171         * spellcheck-tree.c (levenshtein_distance): Rename to...
2172         (get_edit_distance): ...this, and update for underlying renaming.
2173         * spellcheck-tree.h (levenshtein_distance): Rename to...
2174         (get_edit_distance): ...this.
2175         * spellcheck.c (levenshtein_distance): Rename to...
2176         (get_edit_distance): ...this.  Convert from Levenshtein distance
2177         to Damerau-Levenshtein distance by supporting transpositions of
2178         adjacent characters.  Rename "v1" to "v_next" and "v0" to
2179         "v_one_ago".
2180         (selftest::levenshtein_distance_unit_test_oneway): Rename to...
2181         (selftest::test_edit_distance_unit_test_oneway): ...this, and
2182         update for underlying renaming.
2183         (selftest::levenshtein_distance_unit_test): Rename to...
2184         (selftest::test_get_edit_distance_unit): ...this, and update for
2185         underlying renaming.
2186         (selftest::test_find_closest_string): Add example from PR 69968
2187         where transposition helps
2188         (selftest::test_metric_conditions): Update for renaming.
2189         (selftest::test_metric_conditions): Likewise.
2190         (selftest::spellcheck_c_tests): Likewise.
2191         * spellcheck.h (levenshtein_distance): Rename both overloads to...
2192         (get_edit_distance): ...this.
2193         (best_match::consider): Update for renaming.
2195 2018-06-12  Martin Sebor  <msebor@redhat.com>
2197         PR tree-optimization/85259
2198         * builtins.c (compute_objsize): Handle constant offsets.
2199         * gimple-ssa-warn-restrict.c (maybe_diag_offset_bounds): Return
2200         true iff a warning has been issued.
2201         * gimple.h (gimple_nonartificial_location): New function.
2202         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Call
2203         gimple_nonartificial_location and handle -Wno-system-headers.
2204         (handle_builtin_stxncpy): Same.
2206 2018-06-12  Martin Sebor  <msebor@redhat.com>
2208         PR c/85931
2209         * fold-const.c (operand_equal_p): Handle SAVE_EXPR.
2211 2018-06-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
2213         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
2214         BUILTIN_VEC_XST entries for pointer to double and long long.
2216 2018-06-12  H.J. Lu  <hongjiu.lu@intel.com>
2218         PR target/85990
2219         * config/i386/gnu-user.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
2220         Update comments.
2221         * config/i386/gnu-user64.h (TARGET_THREAD_SPLIT_STACK_OFFSET):
2222         Likewise.
2224 2018-06-12  Martin Liska  <mliska@suse.cz>
2226         * doc/options.texi: Document IntegerRange.
2228 2018-06-12  Martin Liska  <mliska@suse.cz>
2230         * config/i386/i386.opt: Make MPX-related options as Deprecated.
2231         * opt-functions.awk: Handle Deprecated flag.
2232         * opts-common.c (decode_cmdline_option): Handle cl_deprecated
2233         and report error.
2234         (read_cmdline_option): Report warning for a deprecated option.
2235         * opts.h (struct cl_option): Add new field cl_deprecated.
2236         (CL_ERR_DEPRECATED): New.
2238 2018-06-12  Martin Liska  <mliska@suse.cz>
2240         * doc/options.texi: Document Deprecated option flag.
2242 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2244         * config/arc/arc-arch.h (arc_extras): New enum.
2245         (arc_cpu_t):Add field extra.
2246         (arc_cpu_types): Consider the extras.
2247         * config/arc/arc-cpus.def: Add extras info.
2248         * config/arc/arc-opts.h (processor_type): Consider extra field.
2249         * config/arc/arc.c (arc_override_options): Handle extra field.
2251 2018-06-12  Claudiu Zissulescu  <claziss@synopsys.com>
2253         * config/arc/arc-arch.h: Update ARC_OPTX macro.
2254         * config/arc/arc-options.def (ARC_OPTX): Introduce a new doc
2255         field.
2256         * config/arc/arc.c (arc_init): Update pic warning.
2257         (irq_range): Update irq range parsing warnings.
2258         (arc_override_options): Update various warning messages.
2259         (arc_handle_aux_attribute): Likewise.
2261 2018-06-12  Robert Suchanek  <robert.suchanek@mips.com>
2263         * config/mips/i6400.md (i6400_fpu_fadd): Remove frint.
2265 2018-06-12  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
2267         * doc/sourcebuild.texi: Document usage of line number 0 in verify
2268         compiler messages directives.
2270 2018-06-12  Matthew Fortune  <mfortune@gmail.com>
2272         * config/mips/mips-cpus.def: New MIPS_CPU for i6500.
2273         * config/mips/mips-tables.opt: Regenerate.
2274         * config/mips/mips.h (MIPS_ISA_LEVEL_SPEC): Mark i6500 as
2275         mips64r6.
2276         * doc/invoke.texi: Document -march=i6500.
2278 2018-06-12  Prachi Godbole  <prachi.godbole@imgtec.com>
2280         * config/mips/i6400.md (i6400_gpmuldiv): Remove cpu_unit.
2281         (i6400_gpmul): Add cpu_unit.
2282         (i6400_gpdiv): Likewise.
2283         (i6400_msa_add_d): Update reservations.
2284         (i6400_msa_int_add) Likewise.
2285         (i6400_msa_short_logic3) Likewise.
2286         (i6400_msa_short_logic2) Likewise.
2287         (i6400_msa_short_logic) Likewise.
2288         (i6400_msa_move) Likewise.
2289         (i6400_msa_cmp) Likewise.
2290         (i6400_msa_short_float2) Likewise.
2291         (i6400_msa_div_d) Likewise.
2292         (i6400_msa_long_logic1) Likewise.
2293         (i6400_msa_long_logic2) Likewise.
2294         (i6400_msa_mult) Likewise.
2295         (i6400_msa_long_float2) Likewise.
2296         (i6400_msa_long_float4) Likewise.
2297         (i6400_msa_long_float5) Likewise.
2298         (i6400_msa_long_float8) Likewise.
2299         (i6400_fpu_fadd): Include frint type.
2300         (i6400_fpu_store): New define_insn_reservation.
2301         (i6400_fpu_load): Likewise.
2302         (i6400_fpu_move): Likewise.
2303         (i6400_fpu_fcmp): Likewise.
2304         (i6400_fpu_fmadd): Likewise.
2305         (i6400_int_mult): Include imul3nc type and update reservation.
2306         (i6400_int_div): Include idiv3 type and update reservation.
2307         (i6400_int_load): Update to check type not move_type.
2308         (i6400_int_store): Likewise.
2309         (i6400_int_prefetch): Set zero latency.
2311 2018-06-12  Eric Botcazou  <ebotcazou@adacore.com>
2313         * gcc.c: Document new %@{...} sequence.
2314         (LINK_COMMAND_SPEC): Use it for the -L switches.
2315         (cpp_unique_options): Use it for the -I switches.
2316         (at_file_argbuf): New global variable.
2317         (in_at_file): Likewise.
2318         (alloc_args): Create at_file_argbuf.
2319         (clear_args): Truncate at_file_argbuf.
2320         (store_arg): If in_at_file, push the argument onto at_file_argbuf.
2321         (open_at_file): New function.
2322         (close_at_file): Likewise.
2323         (create_at_file): Delete.
2324         (do_spec_1) <'i'>: Use open_at_file/close_at_file.
2325         <'o'>: Likewise.
2326         <'@'>: New case.
2327         (validate_switches_from_spec): Deal with %@{...} sequence.
2328         (validate_switches): Likewise.
2329         (driver::finalize): Call clear_args.
2331 2018-06-11  Rasmus Villemoes  <rasmus.villemoes@prevas.dk>
2333         * config/vx-common.h (USE_TM_CLONE_REGISTRY): #define to 0.
2335 2018-06-11  Martin Sebor  <msebor@redhat.com>
2337         * doc/invoke.texi (-Wall): List -Wc++17-compat.
2338         (Wno-class-memaccess): Add @opindex.
2339         (Wno-templates, Wno-multiple-inheritance): Same.
2340         (Wno-virtual-inheritance, Wno-namespaces): Same.
2341         (Wno-pedantic, Wno-chkp, Wcoverage-mismatch): Same.
2342         (Wno-format-overflow, Wno-format-truncation): Same.
2343         (Wno-unused-local-typedefs, Walloc-size-larger-than): Same.
2344         (Wno-alloc-size-larger-than, Wframe-larger-than): Same
2345         (Wno-stack-usage, Wno-c++-compat, Wno-c++11-compat): Same.
2346         (Wno-c++14-compat, Wno-c++17-compat, Wno-openmp-simd): Same.
2347         (Wno-unsuffixed-float-constants, Wno-addr-space-convert): Same.
2348         (Wno-misspelled-isr): Same.
2350 2018-06-11  Martin Sebor  <msebor@redhat.com>
2352         * PR tree-optimization/86083
2353         * tree-ssa-strlen.c (handle_char_store): Use tree_expr_nonzero_p.
2355 2018-06-11 Zhouyi Zhou <zhouzhouyi@gmail.com>
2357         * tree-eh.c (lower_eh_constructs_2): Add a comma to comment.
2359 2018-06-11  Segher Boessenkool  <segher@kernel.crashing.org>
2361         PR target/85755
2362         * config/rs6000/rs6000.md (*movdi_internal32): Put constraint modifiers
2363         on the correct operand.
2364         (*movdi_internal64): Ditto.
2366 2018-06-11  Martin Liska  <mliska@suse.cz>
2368         PR tree-optimization/86089
2369         * tree-ssa-strlen.c (get_string_length): Move back removed hunk.
2371 2018-06-11  Julia Koval  <julia.koval@intel.com>
2373         * config/i386/vaesintrin.h (_mm_aesdec_epi128, _mm_aesdeclast_epi128)
2374         _mm_aesenc_epi128, _mm_aesenclast_epi128: Remove.
2375         * config/i386/vpclmulqdqintrin.h (_mm_clmulepi64_epi128): Remove.
2377 2018-06-11  Olivier Hainque  <hainque@adacore.com>
2379         * dwarf2out.c (gen_compile_unit_die): Fallout to DW_LANG_Ada83
2380         for Ada with strict dwarf2.
2382 2018-06-08  Peter Bergner  <bergner@vnet.ibm.com>
2384         PR target/85755
2385         * config/rs6000/rs6000.c (mem_operand_gpr): Enable PRE_INC and PRE_DEC
2386         addresses.
2388 2018-06-08  Jan Hubicka  <hubicka@ucw.cz>
2390         * dumpfile.c (FIRST_ME_AUTO_NUMBERED_DUMP): Bump to 4.
2392 2018-06-08  David Edelsohn  <dje.gcc@gmail.com>
2394         * config/rs6000/rs6000.c (rs6000_passes_ieee128): Protect with #if
2395         TARGET_ELF.
2397 2018-06-08  Martin Liska  <mliska@suse.cz>
2399         * tree-cfg.h (debug_function): Fix argument type to match
2400         implementation.
2402 2018-06-08  Martin Liska  <mliska@suse.cz>
2404         * config/powerpcspe/powerpcspe.c (rs6000_xcoff_visibility):
2405         Remove usage of MPX-related (and removed) fields.
2406         * config/rs6000/rs6000.c (rs6000_xcoff_visibility): Likewise.
2408 2018-06-08  David Malcolm  <dmalcolm@redhat.com>
2410         * cfg.c (debug): Use TDF_NONE rather than 0.
2411         * cfghooks.c (debug): Likewise.
2412         * dumpfile.c (DUMP_FILE_INFO): Likewise; also for OPTGROUP.
2413         (struct dump_option_value_info): Convert to...
2414         (struct kv_pair): ...this template type.
2415         (dump_options): Convert to kv_pair<dump_flags_t>; use TDF_NONE
2416         rather than 0.
2417         (optinfo_verbosity_options): Likewise.
2418         (optgroup_options): Convert to kv_pair<optgroup_flags_t>; use
2419         OPTGROUP_NONE.
2420         (gcc::dump_manager::dump_register): Use optgroup_flags_t rather
2421         than int for "optgroup_flags" param.
2422         (dump_generic_expr_loc): Use dump_flags_t rather than int for
2423         "dump_kind" param.
2424         (dump_dec): Likewise.
2425         (dump_finish): Use TDF_NONE rather than 0.
2426         (gcc::dump_manager::opt_info_enable_passes): Use optgroup_flags_t
2427         rather than int for "optgroup_flags" param.  Use TDF_NONE rather
2428         than 0.  Update for change to option_ptr.
2429         (opt_info_switch_p_1): Convert "optgroup_flags" param from int *
2430         to optgroup_flags_t *.  Use TDF_NONE and OPTGROUP_NONE rather than
2431         0.  Update for changes to optinfo_verbosity_options and
2432         optgroup_options.
2433         (opt_info_switch_p): Convert optgroup_flags from int to
2434         optgroup_flags_t.
2435         (dump_basic_block): Use dump_flags_t rather than int
2436         for "dump_kind" param.
2437         * dumpfile.h (TDF_ADDRESS, TDF_SLIM, TDF_RAW, TDF_DETAILS,
2438         TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO, TDF_UID)
2439         TDF_STMTADDR, TDF_GRAPH, TDF_MEMSYMS, TDF_RHS_ONLY, TDF_ASMNAME,
2440         TDF_EH, TDF_NOUID, TDF_ALIAS, TDF_ENUMERATE_LOCALS, TDF_CSELIB,
2441         TDF_SCEV, TDF_GIMPLE, TDF_FOLDING, MSG_OPTIMIZED_LOCATIONS,
2442         MSG_MISSED_OPTIMIZATION, MSG_NOTE, MSG_ALL, TDF_COMPARE_DEBUG,
2443         TDF_NONE): Convert from macros to...
2444         (enum dump_flag): ...this new enum.
2445         (dump_flags_t): Update to use enum.
2446         (operator|, operator&, operator~, operator|=, operator&=):
2447         Implement for dump_flags_t.
2448         (OPTGROUP_NONE, OPTGROUP_IPA, OPTGROUP_LOOP, OPTGROUP_INLINE,
2449         OPTGROUP_OMP, OPTGROUP_VEC, OPTGROUP_OTHER, OPTGROUP_ALL):
2450         Convert from macros to...
2451         (enum optgroup_flag): ...this new enum.
2452         (optgroup_flags_t): New typedef.
2453         (operator|, operator|=): Implement for optgroup_flags_t.
2454         (struct dump_file_info): Convert field "alt_flags" to
2455         dump_flags_t.  Convert field "optgroup_flags" to
2456         optgroup_flags_t.
2457         (dump_basic_block): Use dump_flags_t rather than int for param.
2458         (dump_generic_expr_loc): Likewise.
2459         (dump_dec): Likewise.
2460         (dump_register): Convert param "optgroup_flags" to
2461         optgroup_flags_t.
2462         (opt_info_enable_passes): Likewise.
2463         * early-remat.c (early_remat::dump_edge_list): Use TDF_NONE rather
2464         than 0.
2465         * gimple-pretty-print.c (debug): Likewise.
2466         * gimple-ssa-store-merging.c (bswap_replace): Likewise.
2467         (merged_store_group::apply_stores): Likewise.
2468         * gimple-ssa-strength-reduction.c (insert_initializers): Likewise.
2469         * gimple.c (verify_gimple_pp): Likewise.
2470         * graphite-poly.c (print_pbb_body): Likewise.
2471         * passes.c (pass_manager::register_one_dump_file): Convert
2472         local "optgroup_flags" to optgroup_flags_t.
2473         * print-tree.c (print_node): Use TDF_NONE rather than 0.
2474         (debug): Likewise.
2475         (debug_body): Likewise.
2476         * tree-pass.h (struct pass_data): Convert field "optgroup_flags"
2477         to optgroup_flags_t.
2478         * tree-pretty-print.c (print_struct_decl): Use TDF_NONE rather
2479         than 0.
2480         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Likewise.
2481         (convert_mult_to_fma): Likewise.
2482         * tree-ssa-reassoc.c (undistribute_ops_list): Likewise.
2483         * tree-ssa-sccvn.c (vn_eliminate): Likewise.
2484         * tree-vect-data-refs.c (dump_lower_bound): Convert param
2485         "dump_kind" to dump_flags_t.
2487 2018-06-08  Segher Boessenkool  <segher@kernel.crashing.org>
2489         * config/rs6000/rs6000.c (min, max): Delete.
2491 2018-06-08  Segher Boessenkool  <segher@kernel.crashing.org>
2493         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete mention of
2494         -mabi=spe and -mabi=no-spe.
2496 2018-06-08  Martin Liska  <mliska@suse.cz>
2498         * ipa-pure-const.c (propagate_pure_const): Use ::get at places
2499         where we expect an existing summary.
2501 2018-06-08  Martin Liska  <mliska@suse.cz>
2503         * ipa-inline-analysis.c (simple_edge_hints): Use ::get method.
2504         * ipa-inline.h (estimate_edge_growth): Likewise.
2506 2018-06-08  Martin Liska  <mliska@suse.cz>
2508         * cgraph.c (function_version_hasher::hash): Use
2509         cgraph_node::get_uid ().
2510         (function_version_hasher::equal):
2511         * cgraph.h (cgraph_node::get_uid): New method.
2512         * ipa-inline.c (update_caller_keys): Use
2513         cgraph_node::get_uid ().
2514         (update_callee_keys): Likewise.
2515         * ipa-utils.c (searchc): Likewise.
2516         (ipa_reduced_postorder): Likewise.
2517         * lto-cgraph.c (input_node): Likewise.
2518         * passes.c (is_pass_explicitly_enabled_or_disabled): Likewise.
2519         * symbol-summary.h (symtab_insertion): Likewise.
2520         (symtab_removal): Likewise.
2521         (symtab_duplication): Likewise.
2522         * tree-pretty-print.c (dump_function_header): Likewise.
2523         * tree-sra.c (convert_callers_for_node): Likewise.
2525 2018-06-08  Martin Liska  <mliska@suse.cz>
2527         * cgraph.c (symbol_table::create_edge): Always assign a new
2528         unique number.
2529         (symbol_table::free_edge): Do not recycle numbers.
2530         * cgraph.h (cgraph_edge::get): New method.
2531         * symbol-summary.h (symtab_removal): Use it.
2532         (symtab_duplication): Likewise.
2533         (call_summary::hashable_uid): Remove.
2535 2018-06-08  Martin Liska  <mliska@suse.cz>
2537         * ipa-inline-analysis.c (inline_edge_removal_hook): Remove.
2538         (initialize_growth_caches): Remove.
2539         (free_growth_caches): Likewise.
2540         (do_estimate_edge_time): Use edge_growth_cache.
2541         (do_estimate_edge_size): Likewise.
2542         (do_estimate_edge_hints): Likewise.
2543         * ipa-inline.c (reset_edge_caches): Likewise.
2544         (recursive_inlining): Likewise.
2545         (inline_small_functions): Likewise.
2546         * ipa-inline.h (initialize_growth_caches): Remove.
2547         (estimate_edge_size): Likewise.
2548         (estimate_edge_time): Likewise.
2549         (estimate_edge_hints): Likewise.
2550         (reset_edge_growth_cache): Likewise.
2551         * symbol-summary.h (call_summary::remove): New method.
2553 2018-06-08  Martin Liska  <mliska@suse.cz>
2555         * ipa-cp.c (class edge_clone_summary): New summary.
2556         (grow_edge_clone_vectors): Remove.
2557         (ipcp_edge_duplication_hook): Remove.
2558         (class edge_clone_summary_t): New call_summary class.
2559         (ipcp_edge_removal_hook): Remove.
2560         (edge_clone_summary_t::duplicate): New function.
2561         (get_next_cgraph_edge_clone): Use edge_clone_summaries.
2562         (create_specialized_node): Likewise.
2563         (ipcp_driver): Initialize edge_clone_summaries and do not
2564         register hooks.
2566 2018-06-08  Martin Liska  <mliska@suse.cz>
2568         * symbol-summary.h (get): New function.
2569         (call_summary::m_initialize_when_cloning): New class member.
2571 2018-06-08  Martin Liska  <mliska@suse.cz>
2573         * cgraph.c (cgraph_node::remove): Do not recycle uid.
2574         * cgraph.h (symbol_table::release_symbol): Do not pass uid.
2575         (symbol_table::allocate_cgraph_symbol): Do not set uid.
2576         * passes.c (uid_hash_t): Record removed_nodes by their uids.
2577         (remove_cgraph_node_from_order): Use the removed_nodes set.
2578         (do_per_function_toporder): Likwise.
2579         * symbol-summary.h (symtab_insertion): Use cgraph_node::uid
2580         instead of summary_uid.
2581         (symtab_removal): Likewise.
2582         (symtab_duplication): Likewise.
2584 2018-06-08  Martin Liska  <mliska@suse.cz>
2586         * ipa-cp.c (ipcp_store_bits_results): Use
2587         ipcp_transformation_sum.
2588         (ipcp_store_vr_results): Likewise.
2589         * ipa-prop.c (ipcp_grow_transformations_if_necessary): Renamed
2590         to ...
2591         (ipcp_transformation_initialize): ... this.
2592         (ipa_set_node_agg_value_chain):
2593         (ipa_node_params_t::duplicate): Use ipcp_transformation_sum.
2594         (write_ipcp_transformation_info): Likewise.
2595         (read_ipcp_transformation_info): Likewise.
2596         (ipcp_update_bits): Likewise.
2597         (ipcp_update_vr): Likewise.
2598         (ipcp_transform_function): Likewise.
2599         * ipa-prop.h: Rename ipcp_transformation_summary to
2600         ipcp_transformation.
2601         (class ipcp_transformation_t): New function summary.
2602         (ipcp_get_transformation_summary): Use ipcp_transformation_sum.
2603         (ipa_get_agg_replacements_for_node): Likewise.
2605 2018-06-08  Martin Liska  <mliska@suse.cz>
2607         * ipa-pure-const.c (struct funct_state_d): Do it class instead
2608         of struct.
2609         (class funct_state_summary_t): New function_summary class.
2610         (has_function_state): Remove.
2611         (get_function_state): Likewise.
2612         (set_function_state): Likewise.
2613         (add_new_function): Likewise.
2614         (funct_state_summary_t::insert): New function.
2615         (duplicate_node_data): Remove.
2616         (remove_node_data): Remove.
2617         (funct_state_summary_t::duplicate): New function.
2618         (register_hooks): Create new funct_state_summaries.
2619         (pure_const_generate_summary): Use it.
2620         (pure_const_write_summary): Likewise.
2621         (pure_const_read_summary): Likewise.
2622         (propagate_pure_const): Likewise.
2623         (propagate_nothrow): Likewise.
2624         (dump_malloc_lattice): Likewise.
2625         (propagate_malloc): Likewise.
2626         (execute): Do not register hooks, just remove summary
2627         instead.
2628         (pass_ipa_pure_const::pass_ipa_pure_const): Simplify
2629         constructor.
2631 2018-06-08  Martin Liska  <mliska@suse.cz>
2633         * ipa-reference.c (remove_node_data): Remove.
2634         (duplicate_node_data): Likewise.
2635         (class ipa_ref_var_info_summary_t): New class.
2636         (class ipa_ref_opt_summary_t): Likewise.
2637         (get_reference_vars_info): Use ipa_ref_var_info_summaries.
2638         (get_reference_optimization_summary): Use
2639         ipa_ref_opt_sum_summaries.
2640         (set_reference_vars_info): Remove.
2641         (set_reference_optimization_summary): Likewise.
2642         (ipa_init): Create summaries.
2643         (init_function_info): Use function summary.
2644         (ipa_ref_opt_summary_t::duplicate): New function.
2645         (ipa_ref_opt_summary_t::remove): New function.
2646         (get_read_write_all_from_node): Fix GNU coding style.
2647         (propagate): Use function summary.
2648         (write_node_summary_p): Fix GNU coding style.
2649         (stream_out_bitmap): Likewise.
2650         (ipa_reference_read_optimization_summary): Use function summary.
2651         (ipa_reference_c_finalize): Do not release hooks.
2653 2018-06-08  Martin Liska  <mliska@suse.cz>
2655         * ipa-fnsummary.c (dump_ipa_call_summary): Use ::get method.
2656         (analyze_function_body): Extract multiple calls of get_create.
2657         * ipa-inline-analysis.c (simple_edge_hints): Likewise.
2658         * ipa-inline.c (recursive_inlining): Use ::get method.
2659         * ipa-inline.h (estimate_edge_growth): Likewise.
2661 2018-06-08  Martin Liska  <mliska@suse.cz>
2663         * hsa-common.h (enum hsa_function_kind): Rename HSA_NONE to
2664         HSA_INVALID.
2665         (hsa_function_summary::hsa_function_summary): Use the new enum
2666         value.
2667         (hsa_gpu_implementation_p): Use hsa_summaries::get.
2668         * hsa-gen.c (hsa_get_host_function): Likewise.
2669         (get_brig_function_name): Likewise.
2670         * ipa-hsa.c (process_hsa_functions): Likewise.
2671         (ipa_hsa_write_summary): Likewise.
2672         * symbol-summary.h (symtab_duplication): Use ::get function/
2673         (get): New function.
2675 2018-06-08  Martin Liska  <mliska@suse.cz>
2677         * config/i386/i386.c (ix86_can_inline_p): Use get_create instead
2678         of get.
2679         * hsa-common.c (hsa_summary_t::link_functions): Likewise.
2680         (hsa_register_kernel): Likewise.
2681         * hsa-common.h (hsa_gpu_implementation_p): Likewise.
2682         * hsa-gen.c (hsa_get_host_function): Likewise.
2683         (get_brig_function_name): Likewise.
2684         (generate_hsa): Likewise.
2685         (pass_gen_hsail::execute): Likewise.
2686         * ipa-cp.c (ipcp_cloning_candidate_p): Likewise.
2687         (devirtualization_time_bonus): Likewise.
2688         (ipcp_propagate_stage): Likewise.
2689         * ipa-fnsummary.c (redirect_to_unreachable): Likewise.
2690         (edge_set_predicate): Likewise.
2691         (evaluate_conditions_for_known_args): Likewise.
2692         (evaluate_properties_for_edge): Likewise.
2693         (ipa_fn_summary::reset): Likewise.
2694         (ipa_fn_summary_t::duplicate): Likewise.
2695         (dump_ipa_call_summary): Likewise.
2696         (ipa_dump_fn_summary): Likewise.
2697         (analyze_function_body): Likewise.
2698         (compute_fn_summary): Likewise.
2699         (estimate_edge_devirt_benefit): Likewise.
2700         (estimate_edge_size_and_time): Likewise.
2701         (estimate_calls_size_and_time): Likewise.
2702         (estimate_node_size_and_time): Likewise.
2703         (inline_update_callee_summaries): Likewise.
2704         (remap_edge_change_prob): Likewise.
2705         (remap_edge_summaries): Likewise.
2706         (ipa_merge_fn_summary_after_inlining): Likewise.
2707         (ipa_update_overall_fn_summary): Likewise.
2708         (read_ipa_call_summary): Likewise.
2709         (inline_read_section): Likewise.
2710         (write_ipa_call_summary): Likewise.
2711         (ipa_fn_summary_write): Likewise.
2712         (ipa_free_fn_summary): Likewise.
2713         * ipa-hsa.c (process_hsa_functions): Likewise.
2714         (ipa_hsa_write_summary): Likewise.
2715         (ipa_hsa_read_section): Likewise.
2716         * ipa-icf.c (sem_function::merge): Likewise.
2717         * ipa-inline-analysis.c (simple_edge_hints): Likewise.
2718         (do_estimate_edge_time): Likewise.
2719         (estimate_size_after_inlining): Likewise.
2720         (estimate_growth): Likewise.
2721         (growth_likely_positive): Likewise.
2722         * ipa-inline-transform.c (clone_inlined_nodes): Likewise.
2723         (inline_call): Likewise.
2724         * ipa-inline.c (caller_growth_limits): Likewise.
2725         (can_inline_edge_p): Likewise.
2726         (can_inline_edge_by_limits_p): Likewise.
2727         (compute_uninlined_call_time): Likewise.
2728         (compute_inlined_call_time): Likewise.
2729         (want_inline_small_function_p): Likewise.
2730         (edge_badness): Likewise.
2731         (update_caller_keys): Likewise.
2732         (update_callee_keys): Likewise.
2733         (recursive_inlining): Likewise.
2734         (inline_small_functions): Likewise.
2735         (inline_to_all_callers_1): Likewise.
2736         (dump_overall_stats): Likewise.
2737         (early_inline_small_functions): Likewise.
2738         (early_inliner): Likewise.
2739         * ipa-inline.h (estimate_edge_growth): Likewise.
2740         * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
2741         * ipa-prop.c (ipa_make_edge_direct_to_target): Likewise.
2742         * ipa-prop.h (IPA_NODE_REF): Likewise.
2743         (IPA_EDGE_REF): Likewise.
2744         * ipa-pure-const.c (malloc_candidate_p): Likewise.
2745         (propagate_malloc): Likewise.
2746         * ipa-split.c (execute_split_functions): Likewise.
2747         * symbol-summary.h: Rename get to get_create.
2748         (get): Likewise.
2749         (get_create): Likewise.
2750         * tree-sra.c (ipa_sra_preliminary_function_checks): Likewise.
2752 2018-06-08  Martin Liska  <mliska@suse.cz>
2754         * symbol-summary.h (release): Move definition out of class
2755         declaration.
2756         (symtab_removal): Likewise.
2757         (symtab_duplication): Likewise.
2759 2018-06-08  Martin Liska  <mliska@suse.cz>
2761         * symbol-summary.h (function_summary): Move constructor
2762         implementation out of class declaration.
2763         (release): Likewise.
2764         (symtab_insertion): Likewise.
2765         (symtab_removal): Likewise.
2766         (symtab_duplication): Likewise.
2767         (get): Likewise.
2769 2018-06-08  Martin Liska  <mliska@suse.cz>
2771         * Makefile.in: Remove support for MPX (macros, related functions,
2772         fields in cgraph_node, ...).
2773         * builtin-types.def (BT_BND): Likewise.
2774         (BT_FN_BND_CONST_PTR): Likewise.
2775         (BT_FN_CONST_PTR_BND): Likewise.
2776         (BT_FN_VOID_PTR_BND): Likewise.
2777         (BT_FN_BND_CONST_PTR_SIZE): Likewise.
2778         (BT_FN_VOID_CONST_PTR_BND_CONST_PTR): Likewise.
2779         * builtins.c (expand_builtin_memcpy_with_bounds): Likewise.
2780         (expand_builtin_mempcpy_with_bounds): Likewise.
2781         (expand_builtin_memset_with_bounds): Likewise.
2782         (expand_builtin_memset_args): Likewise.
2783         (std_expand_builtin_va_start): Likewise.
2784         (expand_builtin): Likewise.
2785         (expand_builtin_with_bounds): Likewise.
2786         * builtins.def (DEF_BUILTIN_CHKP): Likewise.
2787         (DEF_LIB_BUILTIN_CHKP): Likewise.
2788         (DEF_EXT_LIB_BUILTIN_CHKP): Likewise.
2789         (DEF_CHKP_BUILTIN): Likewise.
2790         (BUILT_IN_MEMCPY): Likewise.
2791         (BUILT_IN_MEMMOVE): Likewise.
2792         (BUILT_IN_MEMPCPY): Likewise.
2793         (BUILT_IN_MEMSET): Likewise.
2794         (BUILT_IN_STPCPY): Likewise.
2795         (BUILT_IN_STRCAT): Likewise.
2796         (BUILT_IN_STRCHR): Likewise.
2797         (BUILT_IN_STRCPY): Likewise.
2798         (BUILT_IN_STRLEN): Likewise.
2799         (BUILT_IN_MEMCPY_CHK): Likewise.
2800         (BUILT_IN_MEMMOVE_CHK): Likewise.
2801         (BUILT_IN_MEMPCPY_CHK): Likewise.
2802         (BUILT_IN_MEMSET_CHK): Likewise.
2803         (BUILT_IN_STPCPY_CHK): Likewise.
2804         (BUILT_IN_STRCAT_CHK): Likewise.
2805         (BUILT_IN_STRCPY_CHK): Likewise.
2806         * calls.c (store_bounds): Likewise.
2807         (emit_call_1): Likewise.
2808         (special_function_p): Likewise.
2809         (maybe_warn_nonstring_arg): Likewise.
2810         (initialize_argument_information): Likewise.
2811         (finalize_must_preallocate): Likewise.
2812         (compute_argument_addresses): Likewise.
2813         (expand_call): Likewise.
2814         * cfgexpand.c (expand_call_stmt): Likewise.
2815         (expand_return): Likewise.
2816         (expand_gimple_stmt_1): Likewise.
2817         (pass_expand::execute): Likewise.
2818         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
2819         (cgraph_node::remove): Likewise.
2820         (cgraph_node::dump): Likewise.
2821         (cgraph_node::verify_node): Likewise.
2822         * cgraph.h (chkp_function_instrumented_p): Likewise.
2823         (symtab_node::get_alias_target): Likewise.
2824         (cgraph_node::can_remove_if_no_direct_calls_and_refs_p): Likewise.
2825         (cgraph_local_p): Likewise.
2826         * cgraphbuild.c (cgraph_edge::rebuild_edges): Likewise.
2827         (cgraph_edge::rebuild_references): Likewise.
2828         * cgraphunit.c (varpool_node::finalize_decl): Likewise.
2829         (walk_polymorphic_call_targets): Likewise.
2830         (cgraph_node::expand_thunk): Likewise.
2831         (symbol_table::output_weakrefs): Likewise.
2832         * common/config/i386/i386-common.c (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Likewise.
2833         (ix86_handle_option): Likewise.
2834         * config/i386/constraints.md: Likewise.
2835         * config/i386/i386-builtin-types.def (BND): Likewise.
2836         (VOID): Likewise.
2837         (PVOID): Likewise.
2838         (ULONG): Likewise.
2839         * config/i386/i386-builtin.def (BDESC_END): Likewise.
2840         (BDESC_FIRST): Likewise.
2841         (BDESC): Likewise.
2842         * config/i386/i386-c.c (ix86_target_macros_internal): Likewise.
2843         * config/i386/i386-protos.h (ix86_bnd_prefixed_insn_p): Likewise.
2844         * config/i386/i386.c (enum reg_class): Likewise.
2845         (ix86_target_string): Likewise.
2846         (ix86_option_override_internal): Likewise.
2847         (ix86_conditional_register_usage): Likewise.
2848         (ix86_valid_target_attribute_inner_p): Likewise.
2849         (ix86_set_indirect_branch_type): Likewise.
2850         (ix86_set_current_function): Likewise.
2851         (ix86_function_arg_regno_p): Likewise.
2852         (init_cumulative_args): Likewise.
2853         (ix86_function_arg_advance): Likewise.
2854         (ix86_function_arg): Likewise.
2855         (ix86_pass_by_reference): Likewise.
2856         (ix86_function_value_regno_p): Likewise.
2857         (ix86_function_value_1): Likewise.
2858         (ix86_function_value_bounds): Likewise.
2859         (ix86_return_in_memory): Likewise.
2860         (ix86_setup_incoming_vararg_bounds): Likewise.
2861         (ix86_va_start): Likewise.
2862         (indirect_thunk_need_prefix): Likewise.
2863         (print_reg): Likewise.
2864         (ix86_print_operand): Likewise.
2865         (ix86_expand_call): Likewise.
2866         (ix86_output_function_return): Likewise.
2867         (reg_encoded_number): Likewise.
2868         (BDESC_VERIFYS): Likewise.
2869         (ix86_init_mpx_builtins): Likewise.
2870         (ix86_init_builtins): Likewise.
2871         (ix86_emit_cmove): Likewise.
2872         (ix86_emit_move_max): Likewise.
2873         (ix86_expand_builtin): Likewise.
2874         (ix86_builtin_mpx_function): Likewise.
2875         (ix86_get_arg_address_for_bt): Likewise.
2876         (ix86_load_bounds): Likewise.
2877         (ix86_store_bounds): Likewise.
2878         (ix86_load_returned_bounds): Likewise.
2879         (ix86_store_returned_bounds): Likewise.
2880         (ix86_class_likely_spilled_p): Likewise.
2881         (ix86_hard_regno_mode_ok): Likewise.
2882         (x86_order_regs_for_local_alloc): Likewise.
2883         (ix86_mitigate_rop): Likewise.
2884         (ix86_bnd_prefixed_insn_p): Likewise.
2885         (ix86_mpx_bound_mode): Likewise.
2886         (ix86_make_bounds_constant): Likewise.
2887         (ix86_initialize_bounds): Likewise.
2888         (TARGET_LOAD_BOUNDS_FOR_ARG): Likewise.
2889         (TARGET_STORE_BOUNDS_FOR_ARG): Likewise.
2890         (TARGET_LOAD_RETURNED_BOUNDS): Likewise.
2891         (TARGET_STORE_RETURNED_BOUNDS): Likewise.
2892         (TARGET_CHKP_BOUND_MODE): Likewise.
2893         (TARGET_BUILTIN_CHKP_FUNCTION): Likewise.
2894         (TARGET_CHKP_FUNCTION_VALUE_BOUNDS): Likewise.
2895         (TARGET_CHKP_MAKE_BOUNDS_CONSTANT): Likewise.
2896         (TARGET_CHKP_INITIALIZE_BOUNDS): Likewise.
2897         * config/i386/i386.h (TARGET_MPX): Likewise.
2898         (TARGET_MPX_P): Likewise.
2899         (VALID_BND_REG_MODE): Likewise.
2900         (FIRST_BND_REG): Likewise.
2901         (LAST_BND_REG): Likewise.
2902         (enum reg_class): Likewise.
2903         (BND_REG_P): Likewise.
2904         (BND_REGNO_P): Likewise.
2905         (BNDmode): Likewise.
2906         (ADJUST_INSN_LENGTH): Likewise.
2907         * config/i386/i386.md: Likewise.
2908         * config/i386/i386.opt: Likewise.
2909         * config/i386/linux-common.h (LIBMPX_LIBS): Likewise.
2910         (defined): Likewise.
2911         (LINK_MPX): Likewise.
2912         (MPX_SPEC): Likewise.
2913         (LIBMPX_SPEC): Likewise.
2914         (LIBMPXWRAPPERS_SPEC): Likewise.
2915         (CHKP_SPEC): Likewise.
2916         * config/i386/predicates.md: Likewise.
2917         * dbxout.c (dbxout_type): Likewise.
2918         * doc/extend.texi: Likewise.
2919         * doc/invoke.texi: Likewise.
2920         * doc/md.texi: Likewise.
2921         * doc/tm.texi: Likewise.
2922         * doc/tm.texi.in: Likewise.
2923         * dwarf2out.c (is_base_type): Likewise.
2924         (gen_formal_types_die): Likewise.
2925         (gen_subprogram_die): Likewise.
2926         (gen_type_die_with_usage): Likewise.
2927         (gen_decl_die): Likewise.
2928         (dwarf2out_late_global_decl): Likewise.
2929         * expr.c (expand_assignment): Likewise.
2930         (emit_storent_insn): Likewise.
2931         (store_expr_with_bounds): Likewise.
2932         (store_expr): Likewise.
2933         (expand_expr_real_1): Likewise.
2934         * expr.h (store_expr_with_bounds): Likewise.
2935         * function.c (use_register_for_decl): Likewise.
2936         (struct bounds_parm_data): Likewise.
2937         (assign_parms_augmented_arg_list): Likewise.
2938         (assign_parm_find_entry_rtl): Likewise.
2939         (assign_parm_is_stack_parm): Likewise.
2940         (assign_parm_load_bounds): Likewise.
2941         (assign_bounds): Likewise.
2942         (assign_parms): Likewise.
2943         (expand_function_start): Likewise.
2944         * gcc.c (CHKP_SPEC): Likewise.
2945         * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
2946         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Likewise.
2947         (wrestrict_dom_walker::check_call): Likewise.
2948         * gimple.c (gimple_build_call_from_tree): Likewise.
2949         * gimple.h (enum gf_mask): Likewise.
2950         (gimple_call_with_bounds_p): Likewise.
2951         (gimple_call_set_with_bounds): Likewise.
2952         * gimplify.c (gimplify_init_constructor): Likewise.
2953         * ipa-cp.c (initialize_node_lattices): Likewise.
2954         (propagate_constants_across_call): Likewise.
2955         (find_more_scalar_values_for_callers_subset): Likewise.
2956         * ipa-hsa.c (process_hsa_functions): Likewise.
2957         * ipa-icf-gimple.c (func_checker::compare_gimple_call): Likewise.
2958         * ipa-icf.c (sem_function::merge): Likewise.
2959         * ipa-inline.c (early_inliner): Likewise.
2960         * ipa-pure-const.c (warn_function_noreturn): Likewise.
2961         (warn_function_cold): Likewise.
2962         (propagate_pure_const): Likewise.
2963         * ipa-ref.h (enum GTY): Likewise.
2964         * ipa-split.c (find_retbnd): Likewise.
2965         (consider_split): Likewise.
2966         (split_function): Likewise.
2967         * ipa-visibility.c (cgraph_externally_visible_p): Likewise.
2968         * ipa.c (walk_polymorphic_call_targets): Likewise.
2969         (symbol_table::remove_unreachable_nodes): Likewise.
2970         (process_references): Likewise.
2971         (cgraph_build_static_cdtor_1): Likewise.
2972         * lto-cgraph.c (lto_output_node): Likewise.
2973         (output_refs): Likewise.
2974         (compute_ltrans_boundary): Likewise.
2975         (input_overwrite_node): Likewise.
2976         (input_node): Likewise.
2977         (input_cgraph_1): Likewise.
2978         * params.def (PARAM_CHKP_MAX_CTOR_SIZE): Likewise.
2979         * passes.c (pass_manager::execute_early_local_passes): Likewise.
2980         (class pass_chkp_instrumentation_passes): Likewise.
2981         (make_pass_chkp_instrumentation_passes): Likewise.
2982         * passes.def: Likewise.
2983         * rtl.h (struct GTY): Likewise.
2984         (CALL_EXPR_WITH_BOUNDS_P): Likewise.
2985         * stor-layout.c (layout_type): Likewise.
2986         * symtab.c: Likewise.
2987         * target.def: Likewise.
2988         * targhooks.c (default_chkp_bound_type): Likewise.
2989         (default_chkp_bound_mode): Likewise.
2990         (default_builtin_chkp_function): Likewise.
2991         (default_chkp_function_value_bounds): Likewise.
2992         (default_chkp_make_bounds_constant): Likewise.
2993         (default_chkp_initialize_bounds): Likewise.
2994         * targhooks.h (default_chkp_bound_type): Likewise.
2995         (default_chkp_bound_mode): Likewise.
2996         (default_builtin_chkp_function): Likewise.
2997         (default_chkp_function_value_bounds): Likewise.
2998         (default_chkp_make_bounds_constant): Likewise.
2999         (default_chkp_initialize_bounds): Likewise.
3000         * toplev.c (compile_file): Likewise.
3001         (process_options): Likewise.
3002         * tree-core.h (DEF_BUILTIN): Likewise.
3003         (DEF_BUILTIN_CHKP): Likewise.
3004         * tree-inline.c (declare_return_variable): Likewise.
3005         (remap_gimple_stmt): Likewise.
3006         (copy_bb): Likewise.
3007         (initialize_inlined_parameters): Likewise.
3008         (expand_call_inline): Likewise.
3009         * tree-pass.h (make_pass_ipa_chkp_versioning): Likewise.
3010         (make_pass_ipa_chkp_early_produce_thunks): Likewise.
3011         (make_pass_ipa_chkp_produce_thunks): Likewise.
3012         (make_pass_chkp): Likewise.
3013         (make_pass_chkp_opt): Likewise.
3014         (make_pass_chkp_instrumentation_passes): Likewise.
3015         * tree-pretty-print.c (dump_generic_node): Likewise.
3016         * tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
3017         * tree-ssa-dce.c (propagate_necessity): Likewise.
3018         (eliminate_unnecessary_stmts): Likewise.
3019         * tree-ssa-pre.c (create_expression_by_pieces): Likewise.
3020         * tree-ssa-sccvn.c (copy_reference_ops_from_call): Likewise.
3021         * tree-ssa-sccvn.h: Likewise.
3022         * tree-ssa-strlen.c (get_string_length): Likewise.
3023         (valid_builtin_call): Likewise.
3024         (adjust_last_stmt): Likewise.
3025         (handle_builtin_strchr): Likewise.
3026         (handle_builtin_strcpy): Likewise.
3027         (handle_builtin_stxncpy): Likewise.
3028         (handle_builtin_memcpy): Likewise.
3029         (handle_builtin_strcat): Likewise.
3030         (strlen_check_and_optimize_stmt): Likewise.
3031         * tree-stdarg.c (expand_ifn_va_arg_1): Likewise.
3032         * tree-streamer-in.c: Likewise.
3033         * tree-streamer.c (record_common_node): Likewise.
3034         * tree.c (tree_code_size): Likewise.
3035         (wide_int_to_tree_1): Likewise.
3036         (type_contains_placeholder_1): Likewise.
3037         (build_common_tree_nodes): Likewise.
3038         * tree.def (POINTER_BOUNDS_TYPE): Likewise.
3039         * tree.h (POINTER_BOUNDS_TYPE_P): Likewise.
3040         (POINTER_BOUNDS_P): Likewise.
3041         (BOUNDED_TYPE_P): Likewise.
3042         (BOUNDED_P): Likewise.
3043         (CALL_WITH_BOUNDS_P): Likewise.
3044         (pointer_bounds_type_node): Likewise.
3045         * value-prof.c (gimple_ic): Likewise.
3046         * var-tracking.c (vt_add_function_parameters): Likewise.
3047         * varasm.c (make_decl_rtl): Likewise.
3048         (assemble_start_function): Likewise.
3049         (output_constant): Likewise.
3050         (maybe_assemble_visibility): Likewise.
3051         * varpool.c (ctor_for_folding): Likewise.
3052         * chkp-builtins.def: Remove.
3053         * ipa-chkp.c: Remove.
3054         * ipa-chkp.h: Remove.
3055         * rtl-chkp.c: Remove.
3056         * rtl-chkp.h: Remove.
3057         * tree-chkp-opt.c: Remove.
3058         * tree-chkp.c: Remove.
3059         * tree-chkp.h: Remove.
3061 2018-06-07  Carl Love  <cel@us.ibm.com>
3063         * gcc/config/rs6000/vsx.md (vextract_fp_from_shorth,
3064         vextract_fp_from_shortl): Add BE support.
3066 2018-06-07  Paul Koning  <ni1d@arrl.net>
3068         * compare-elim.c (try_merge_compare): Don't merge compare if
3069         address contains a side effect.
3070         (try_eliminate_compare): Likewise.
3072 2018-06-07  Olga Makhotina  <olga.makhotina@intel.com>
3074         * config.gcc: Support "tremont".
3075         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "tremont".
3076         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
3077         PROCESSOR_TREMONT.
3078         * config/i386/i386.c (m_TREMONT): Define.
3079         (processor_target_table): Add "tremont".
3080         (PTA_TREMONT): Define.
3081         (ix86_lea_outperforms): Add TARGET_TREMONT.
3082         (get_builtin_code_for_version): Handle PROCESSOR_TREMONT.
3083         (fold_builtin_cpu): Add M_INTEL_TREMONT, replace M_INTEL_GOLDMONT
3084         and M_INTEL_GOLDMONT_PLUS.
3085         (fold_builtin_cpu): Add "tremont".
3086         (ix86_add_stmt_cost): Add TARGET_TREMONT.
3087         (ix86_option_override_internal): Add "tremont".
3088         * config/i386/i386.h (processor_costs): Define TARGET_TREMONT.
3089         (processor_type): Add PROCESSOR_TREMONT.
3090         * config/i386/x86-tune.def: Add m_TREMONT.
3091         * doc/invoke.texi: Add tremont as x86 -march=/-mtune= CPU type.
3093 2018-06-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
3095         * gcc/config/msp430/msp430.c (msp430_mcu_name): Set the "i" in the
3096         symbol defined for msp430i* devices to be lower case.
3098         gcc/testsuite/gcc.target/msp430/
3099         * msp430i-device-symbol.c: New test.
3100         * msp430f-device-symbol.c: New test.
3101         * msp430.h: New test header file.
3103 2018-06-07  Richard Biener  <rguenther@suse.de>
3105         * graphite-sese-to-poly.c (extract_affine): Avoid unneded
3106         wrapping.  Properly wrap the result of a BIT_NOT_EXPR.
3107         Properly wrap signed arithmetic if overflow wraps.
3109 2018-06-07  Jakub Jelinek  <jakub@redhat.com>
3111         PR tree-optimization/69615
3112         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If rhs2 is lhs
3113         of a cast from a same precision integral SSA_NAME in a bb dominated
3114         by first_bb, retry with rhs2 set to the rhs1 of the cast.  Don't emit
3115         cast to utype if rhs2 has already a compatible type.
3117 2018-06-07  Richard Biener  <rguenther@suse.de>
3119         PR tree-optimization/85935
3120         * graphite-scop-detection.c (find_params_in_bb): Analyze
3121         condition operands with respect to the correct loop.  Assert
3122         the analysis doesn't fail.
3124 2018-06-04  Carl Love  <cel@us.ibm.com>
3126         * gcc/config/rs6000/vsx.md (first_match_index_<mode>): Calculate index
3127         using natural element order.  Use gen_lshrsi3 instead of gen_ashrsi3
3128         as it is slightly cheaper.
3129         (first_match_or_eos_index_<mode>):
3130         Calculate index using natural element order.
3131         (first_match_index_<mode>):
3132         Calculate index using natural element order.
3133         (first_match_or_eos_index_<mode>):
3134         Calculate index using natural order.
3135         (define_insn vclzlsbb): Change to define_insn vclzlsbb_<mode>.
3136         for BE and LE modes.
3137         * gcc/config/rs6000/rs6000-c.c: Rename P9V_BUILTIN_VCLZLSBB,
3138         P9V_BUILTIN_VCLZLSBB_V16QI.
3139         * gcc/config/rs6000/rs6000-builtin.def: Make VCLZLSBB mode
3140         specific.
3142 2018-06-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3144         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
3145         indentation and line wrap for many prototypes.  Add missing
3146         @smallexample directives around block of prototypes for vec_xl and
3147         vec_xst.
3149 2018-06-05  Michael Meissner  <meissner@linux.ibm.com>
3151         * config/rs6000/rs6000.c (rs6000_passes_ieee128): New boolean to
3152         track if we pass or return IEEE 128-bit floating point.
3153         (ieee128_mangling_gcc_8_1): New boolean to say whether to generate
3154         C++ mangling that is compatible with GCC 8.1.
3155         (TARGET_ASM_GLOBALIZE_DECL_NAME): Override target hook.
3156         (init_cumulative_args): Note if we pass or return IEEE 128-bit
3157         floating point types.
3158         (rs6000_function_arg_advance_1): Likewise.
3159         (rs6000_mangle_type): Optionally generate mangled names that match
3160         what GCC 8.1 generated for IEEE 128-bit floating point types.
3161         (rs6000_globalize_decl_name): If we have an external function that
3162         passes or returns IEEE 128-bit types, generate a weak reference
3163         from the mangled name used in GCC 8.1 to the current mangled
3164         name.
3165         (rs6000_init_builtins): Make __ibm128 use the long double type if
3166         long double is IBM extended double.  Make __float128 use the long
3167         double type if long double is IEEE 128-bit.
3169         PR target/85657
3170         * config/rs6000/rs6000-builtin.def (BU_IBM128_2): New helper
3171         macro for __ibm128 built-in functions.
3172         (PACK_IF): Add __ibm128 pack/unpack functions.
3173         (UNPACK_IF): Likewise.
3174         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Do not
3175         enable long double built-in functions if long double is IEEE
3176         128-bit floating point.
3177         (rs6000_invalid_builtin): Update long double built-in function
3178         error message.
3179         (rs6000_expand_builtin): For PACK_IF and UNPACK_IF built-in
3180         functions, adjust the built-in function to use the long double
3181         built-in function if __ibm128 and long double are the same type.
3182         * doc/extend.texi (PowerPC builtins): Update documention for
3183         __builtin_{,un}pack_longdouble.  Add documentation for
3184         __builtin_{,un}pack_ibm128.
3186 2018-06-06  Jim Wilson  <jimw@sifive.com>
3188         * config/riscv/riscv.c (enum riscv_privilege_levels): New.
3189         (struct machine_function): New field interrupt_mode.
3190         (riscv_handle_type_attribute): New function.  Add forward declaration.
3191         (riscv_attribute_table) <interrupt>: Use riscv_handle_type_attribute.
3192         (riscv_expand_epilogue): Check interrupt_mode field.
3193         (riscv_set_current_function): Check interrupt attribute args and
3194         set interrupt_mode field.
3195         * config/riscv/riscv.md (UNSPECV_SRET, UNSPECV_URET): New.
3196         (riscv_sret, riscv_uret): New.
3197         * doc/extend.texi (RISC-V Function Attributes) <interrupt>: Document
3198         new arguments to interrupt attribute.
3200 2018-06-06  Peter Bergner  <bergner@vnet.ibm.com>
3202         PR target/63177
3203         * /config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mpower9.
3204         Don't handle -mcpu=power8 if -mpower9-vector is also used.
3206 2018-06-06  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3208         * config/rs6000/rs6000-builtin.def (VSX_BUILTIN_VEC_LD,
3209         VSX_BUILTIN_VEC_ST): Add comment to explain non-traditional uses.
3210         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
3211         several redundant entries.
3213 2018-06-06  David Malcolm  <dmalcolm@redhat.com>
3215         * config/i386/i386-protos.h (ix86_expand_call): Strengthen return
3216         type from "rtx" to "rtx_insn *".
3217         * config/i386/i386.c (ix86_expand_split_stack_prologue): Likewise
3218         for local "call_insn", removing cast.
3219         (ix86_expand_call): Likewise, introducing a "call_insn" local.
3221 2018-06-06  Eric Botcazou  <ebotcazou@adacore.com>
3223         PR tree-optimization/86066
3224         * gimple-ssa-store-merging.c (process_store): Do not bypass BIT_NOT_EXPR
3225         for BIT_INSERT_EXPR stores.
3227 2018-06-06  Richard Biener  <rguenther@suse.de>
3229         PR tree-optimization/86062
3230         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
3231         component refs ontop
3232         of to be offsetted base.
3234 2018-06-06  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
3236         * gcc/config/msp430/msp430.c (msp430_attr): Allow interrupt handlers
3237         to be static and remove check on interrupt attribute name.
3239         gcc/testsuite/gcc.target/msp430/
3240         * function-attributes-4.c: New test.
3241         * static-interrupts.c: New test.
3243 2018-06-05  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3245         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
3246         volatile qualifier from vec_lvsl and vec_lvsr argument prototypes.
3248 2018-06-05  Steve Ellcey  <sellcey@cavium.com>
3250         PR target/79924
3251         * config/aarch64/aarch64-protos.h (aarch64_err_no_fpadvsimd): Remove
3252         second argument.
3253         * config/aarch64/aarch64-protos..c (aarch64_err_no_fpadvsimd):
3254         Remove second argument, change how error is called.
3255         (aarch64_layout_arg): Remove second argument from
3256         aarch64_err_no_fpadvsimd call.
3257         (aarch64_init_cumulative_args): Ditto.
3258         (aarch64_gimplify_va_arg_expr): Ditto.
3259         * config/aarch64/aarch64.md (mov<mode>): Ditto.
3261 2018-06-05  Uros Bizjak  <ubizjak@gmail.com>
3263         * config/i386/i386.md (simple_return_indirect_internal): New expander.
3264         (*simple_return_indirect_internal<mode>): Rename from
3265         simple_return_indirect_internal.  Use W mode iterator.
3266         (rstorssp): New expander.
3267         (*rstorssp<mode>): Rename from rstorssp.  Use P mode iterator.
3268         (clrssbsy): New expander.
3269         (*clrssbsy<mode>): Rename from clrssbsy.  Use P mode iterator.
3271 2018-06-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
3273         * config/arm/arm_cmse.h (cmse_nsfptr_create): Change typeof to
3274         __typeof__.
3275         (cmse_check_pointed_object): Likewise.
3277 2018-06-05  Martin Liska  <mliska@suse.cz>
3279         PR gcov-profile/47618
3280         * doc/invoke.texi: Document how -fprofile-dir format
3281         is extended.
3283 2018-06-05  Richard Biener  <rguenther@suse.de>
3285         * tree-cfgcleanup.c (cleanup_control_flow_pre): For edge
3286         removal pretend DOM info isn't available so we do not update
3287         it and only remove edges, not dominated blocks.  Actually free
3288         DOM info in case we removed something.  Remove unreachable blocks.
3289         (mfb_keep_latches): Work with either DOM info or marked backedges.
3290         (cleanup_tree_cfg_noloop): Do not remove unreachable blocks
3291         first.  Mark backedges if DOM info isn't available.
3292         (Re-)compute DOM info after cleanup_control_flow_pre.
3294 2018-06-05  Richard Biener  <rguenther@suse.de>
3296         * tree-cfg.c (struct locus_discrim_map): Store line, not location.
3297         (locus_discrim_hasher::hash): Adjust.
3298         (locus_discrim_hasher::equal): Likewise.
3299         (next_discriminator_for_locus): Work on line directly.
3300         (same_line_p): Pass in expanded locus1 as well.
3301         (assign_discriminators): Avoid redundant location expansions.
3303 2018-06-05  Richard Biener  <rguenther@suse.de>
3305         PR tree-optimization/86046
3306         * tree-ssa.c (maybe_optimize_var): Clear DECL_GIMPLE_REG_P
3307         if required after clearing TREE_ADDRESSABLE.
3309 2018-06-05  Richard Biener  <rguenther@suse.de>
3311         PR tree-optimization/86047
3312         * tree-ssa-loop.c (for_each_index): Glob handling of all
3313         decls and constants and really handle all of them.
3315 2018-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3317         PR target/81497
3318         * config/arm/arm-builtins.c (arm_type_qualifiers): Add
3319         qualifier_void_pointer and qualifier_const_void_pointer.
3320         (arm_ldc_qualifiers, arm_stc_qualifiers): Use the above.
3321         (arm_init_builtins): Handle the above.
3322         * config/arm/arm_acle.h (__arm_cdp, __arm_ldc, __arm_ldcl, __arm_stc,
3323         __arm_stcl, __arm_mcr, __arm_cdp2, __arm_ldc2, __arm_ldcl2, __arm_stc2,
3324         __arm_stcl2,__arm_mcr2, __arm_mcrr, __arm_mcrr2): Remove return for
3325         void intrinsics.
3327 2018-06-05  Martin Liska  <mliska@suse.cz>
3329         * auto-profile.c (read_autofdo_file): Do not use
3330         gcov_ctr_summary struct.
3331         (afdo_callsite_hot_enough_for_early_inline): Likewise.
3332         * coverage.c (struct counts_entry): Likewise.
3333         (read_counts_file): Read just single summary entry.
3334         (get_coverage_counts): Use gcov_summary struct.
3335         * coverage.h (get_coverage_counts): Likewise.
3336         * gcov-dump.c (dump_working_sets): Likewise.
3337         (tag_summary): Dump just single summary.
3338         * gcov-io.c (gcov_write_summary): Write just histogram
3339         summary.
3340         (gcov_read_summary): Read just single summary.
3341         (compute_working_sets): Use gcov_summary struct.
3342         * gcov-io.h (GCOV_TAG_SUMMARY_LENGTH): Remove usage
3343         of GCOV_COUNTERS_SUMMABLE.
3344         (GCOV_COUNTERS_SUMMABLE): Remove.
3345         (GCOV_FIRST_VALUE_COUNTER): Replace with
3346         GCOV_COUNTER_V_INTERVAL.
3347         (struct gcov_ctr_summary): Remove.
3348         (struct gcov_summary): Directly use fields of former
3349         gcov_ctr_summary.
3350         (compute_working_sets): Use gcov_summary struct.
3351         * gcov.c (read_count_file): Do not use ctrs fields.
3352         * lto-cgraph.c (merge_profile_summaries): Use gcov_summary
3353         struct.
3354         * lto-streamer.h (struct GTY): Make profile_info gcov_summary
3355         struct.
3356         * profile.c: Likewise.
3357         * profile.h: Likewise.
3359 2018-06-05  Martin Liska  <mliska@suse.cz>
3361         PR gcov-profile/84846
3362         * gcov.c (output_lines): Print working directory only
3363         in intermediate format.
3365 2018-06-05  Andreas Krebbel  <krebbel@linux.ibm.com>
3367         * config/s390/s390-builtin-types.def: Add void function type.
3368         * config/s390/s390-builtins.def: Use the function type for the
3369         tbeginc builtin.
3371 2018-06-04  Jim Wilson  <jimw@sifive.com>
3373         * config/riscv/riscv-protos.h (riscv_expand_epilogue): Change bool arg
3374         to int.
3375         * config/riscv/riscv.c (riscv_for_each_saved_reg): New args epilogue
3376         and maybe_eh_return.  Change regno to unsigned int.  Use new args to
3377         handle EH_RETURN_DATA_REGNO registers properly.
3378         (riscv_expand_prologue): Pass new args to riscv_for_each_saved_reg.
3379         (riscv_expand_epilogue): Update comment.  Change argument name and
3380         type.  Update code to use new name and type.  Pass new args to
3381         riscv_for_each_saved_reg.  Only use EH_RETURN_STACKADJ_RTX when
3382         EXCEPTION_RETURN.
3383         * config/riscv/riscv.md (NORMAL_RETURN): New.
3384         (SIBCALL_RETURN, EXCEPTION_RETURN): New.
3385         (epilogue, sibcall_epilogue): Update riscv_expand_epilogue arg.
3386         (eh_return): Call gen_eh_return_internal and emit barrier.
3387         (eh_return_internal): Call riscv_expand_epilogue.
3389 2018-06-04  Eric Botcazou  <ebotcazou@adacore.com>
3391         * gimple-ssa-store-merging.c (struct merged_store_group): Move up
3392         bit_insertion field and declare can_be_merged_into method.
3393         (merged_store_group::can_be_merged_into): New method.
3394         (imm_store_chain_info::coalesce_immediate): Call it to decide whether
3395         consecutive non-overlapping stores can be merged.  Turn MEM_REF stores
3396         into BIT_INSERT_EXPR stores if the group contains a non-MEM_REF store.
3398 2018-06-04  Richard Biener  <rguenther@suse.de>
3400         PR tree-optimization/85955
3401         * builtins.c (fold_builtin_sincos): Convert pointers to
3402         destination to appropriate type before dereferencing.
3404 2018-06-04  Segher Boessenkool  <segher@kernel.crashing.org>
3406         * config/rs6000/rs6000.md (abs<mode>2 for FLOAT128): Handle IFmode.
3408 2018-06-04  Richard Sandiford  <richard.sandiford@linaro.org>
3410         * expr.c (expand_expr_real_1): Force the operand into memory if
3411         its TYPE_MODE is BLKmode and if there is no integer mode for
3412         the number of bits being extracted.
3414 2018-06-04  Jakub Jelinek  <jakub@redhat.com>
3416         PR target/85832
3417         PR target/86036
3418         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
3419         Use vptestnm rather than vptestm in (=Yc,v,C) variant.
3421 2018-06-04  Richard Biener  <rguenther@suse.de>
3423         * tree-cfgcleanup.c (cleanup_tree_cfg_1): Fold into...
3424         (cleanup_tree_cfg_noloop): ... single caller.  Do
3425         start_recording_case_labels later.
3427 2018-06-04  Sebastian Peryt  <sebastian.peryt@intel.com>
3429         * config/i386/cldemoteintrin.h: Change define from _X86INTRIN_H_INCLUDED
3430         to _IMMINTRIN_H_INCLUDED.
3431         * config/i386/pconfigintrin.h: Ditto.
3432         * config/i386/waitpkgintrin.h: Ditto.
3433         * config/i386/immintrin.h: Add includes for sgxintrin.h,
3434         pconfigintrin.h, waitpkgintrin.h and cldemoteintrin.h.
3435         * config/i386/x86intrin.h: Remove includes for mintrin.h, xmmintrin.h,
3436         emmintrin.h, pmmintrin.h, tmmintrin.h, smmintrin.h, wmmintrin.h,
3437         bmiintrin.h, bmi2intrin.h, lzcntintrin.h, sgxintrin.h, pconfigintrin.h,
3438         waitpkgintrin.h and cldemoteintrin.h.
3440 2018-06-04  Richard Biener  <rguenther@suse.de>
3442         PR tree-optimization/86038
3443         * tracer.c (find_best_successor): Check probability for
3444         being initialized, bail out if not.
3446 2018-06-04  Richard Earnshaw  <rearnsha@arm.com>
3448         PR target/86003
3449         * config/arm/arm-cpus.in (ALL_QUIRKS): Add xscale feature to the list
3450         of bits to ignore when comparing architectures.
3452 2018-06-04  Jakub Jelinek  <jakub@redhat.com>
3454         PR tree-optimization/69615
3455         * fold-const.c (merge_ranges): If range1 is - [x, x] and x is the
3456         maximum or minimum of the type, try to merge it also as if
3457         range1 is + [-, x - 1] or + [x + 1, -].
3459         PR c++/86025
3460         * tree.c (inchash::add_expr): Handle IDENTIFIER_NODE.
3462 2018-06-03  Eric Botcazou  <ebotcazou@adacore.com>
3464         PR tree-optimization/86034
3465         * gimple-ssa-store-merging.c (output_merged_store): Convert the RHS to
3466         the unsigned bitfield type in a bit insertion sequence if it does not
3467         have a larger precision than the bitfield size.
3468         (process_store): Also bypass widening conversions for BIT_INSERT_EXPR.
3470 2018-06-03  Kito Cheng  <kito.cheng@gmail.com>
3472         * config/nds32/nds32-peephole2.md: Add new patterns for code size.
3474 2018-06-03  Chung-Ju Wu  <jasonwucj@gmail.com>
3476         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3J.
3477         * config/nds32/nds32.c (nds32_option_override): Consider ARCH_V3J.
3478         * config/nds32/nds32.h (TARGET_ISA_V3): Add ARCH_V3J checking.
3479         * config/nds32/nds32.opt (march): Add enum value Value(ARCH_V3J).
3481 2018-06-03  Chung-Ju Wu  <jasonwucj@gmail.com>
3483         * common/config/nds32/nds32-common.c (nds32_option_optimization_table):
3484         Disable -fdelete-null-pointer-checks for ELF toolchain.
3486 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
3487             Kito Cheng  <kito.cheng@gmail.com>
3489         * config.gcc (nds32*): Use nds32-linux.opt and nds32-elf.opt.
3490         (nds32le-*-*, nds32be-*-*): Integrate checking process.
3491         (nds32*-*-*): Add glibc and uclibc conditions.
3492         * common/config/nds32/nds32-common.c (nds32_except_unwind_info): New.
3493         (TARGET_EXCEPT_UNWIND_INFO): Define.
3494         * config/nds32/elf.h: New file.
3495         * config/nds32/linux.h: New file.
3496         * config/nds32/nds32-elf.opt: New file.
3497         * config/nds32/nds32-linux.opt: New file.
3498         * config/nds32/nds32-fp-as-gp.c
3499         (pass_nds32_fp_as_gp::gate): Consider TARGET_LINUX_ABI.
3500         * config/nds32/nds32.c (nds32_conditional_register_usage): Consider
3501         TARGET_LINUX_ABI.
3502         (nds32_asm_file_end): Ditto.
3503         (nds32_print_operand): Ditto.
3504         (nds32_insert_attributes): Ditto.
3505         (nds32_init_libfuncs): New function.
3506         (TARGET_HAVE_TLS): Define.
3507         (TARGET_INIT_LIBFUNCS): Define.
3508         * config/nds32/nds32.h (TARGET_DEFAULT_RELAX): Apply different relax
3509         spec content.
3510         (TARGET_ELF): Apply different mcmodel setting.
3511         (LINK_SPEC, LIB_SPEC, STARTFILE_SPEC, ENDFILE_SPEC): The content has
3512         been migrated into elf.h and linux.h files.
3513         * config/nds32/nds32.md (add_pc): Consider TARGET_LINUX_ABI.
3514         * config/nds32/nds32.opt (mvh): Consider TARGET_LINUX_ABI.
3515         (mcmodel): The content has been migrated into nds32-elf.opt and
3516         nds32-linux.opt files.
3517         * config/nds32/t-elf: New file.
3518         * config/nds32/t-linux: New file.
3520 2018-06-02  Chung-Ju Wu  <jasonwucj@gmail.com>
3521             Shiva Chen  <shiva0217@gmail.com>
3523         * config/nds32/constants.md (unspec_volatile_element): Add
3524         UNSPEC_VOLATILE_OMIT_FP_BEGIN and UNSPEC_VOLATILE_OMIT_FP_END.
3525         * config/nds32/nds32-fp-as-gp.c: New implementation of fp_as_gp
3526         optimization.
3527         * config/nds32/nds32-protos.h (nds32_naked_function_p): Declare.
3528         (make_pass_nds32_fp_as_gp): Declare.
3529         * config/nds32/nds32.c (nds32_register_passes): Add fp_as_gp as one
3530         optmization pass.
3531         (nds32_asm_function_end_prologue): Remove unused asm output.
3532         (nds32_asm_function_begin_epilogue): Remove unused asm output.
3533         (nds32_asm_file_start): Output necessary fp_as_gp information.
3534         (nds32_option_override): Adjust register usage.
3535         (nds32_expand_prologue): Consider fp_as_gp situation.
3536         (nds32_expand_prologue_v3push): Consider fp_as_gp situation.
3537         * config/nds32/nds32.md (prologue): Check fp_as_gp_p and naked_p.
3538         (epilogue): Ditto.
3539         (return): Ditto.
3540         (simple_return): Ditto.
3541         (omit_fp_begin): Output special directive for fp_as_gp.
3542         (omit_fp_end): Output special directive for fp_as_gp.
3543         * config/nds32/nds32.opt (mfp-as-gp, mno-fp-as-gp, mforce-fp-as-gp,
3544         mforbid-fp-as-gp): New options.
3546 2018-06-01  Mark Wielaard  <mark@klomp.org>
3548         * dwarf2out.c (dwarf2out_finish): Remove generation of
3549         DW_AT_loclists_base.
3551 2018-06-01  Eric Botcazou  <ebotcazou@adacore.com>
3553         * gimple-ssa-store-merging.c: Include gimple-fold.h.
3554         (struct store_immediate_info): Document BIT_INSERT_EXPR stores.
3555         (struct merged_store_group): Add bit_insertion field.
3556         (dump_char_array): Use standard hexadecimal format.
3557         (merged_store_group::merged_store_group): Set bit_insertion to false.
3558         (merged_store_group::apply_stores): Use optimal buffer size.  Deal
3559         with BIT_INSERT_EXPR stores.  Move up code updating the mask and
3560         also print the mask in the dump file.
3561         (pass_store_merging::gate): Minor tweak.
3562         (imm_store_chain_info::coalesce_immediate): Fix wrong association
3563         of stores with groups in dump.  Allow coalescing of BIT_INSERT_EXPR
3564         stores with INTEGER_CST stores.
3565         (count_multiple_uses) <BIT_INSERT_EXPR>: New case.
3566         (imm_store_chain_info::output_merged_store): Add try_bitpos variable
3567         and use it throughout.  Generate bit insertion sequences if need be.
3568         (pass_store_merging::process_store): Remove redundant condition.
3569         Record stores from a SSA name to a bit-field with BIT_INSERT_EXPR.
3571 2018-06-01  Segher Boessenkool  <segher@kernel.crashing.org>
3573         * config/rs6000/rs6000.c (rs6000_mangle_type): Change the mangling of
3574         the 128-bit floating point types.  Fix function comment.
3576 2018-06-01  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
3578         * config/aarch64/aarch64-simd.md
3579         (aarch64_simd_vec_unpack<su>_lo_<mode>): Use UXTL and SXTL assembler
3580         mnemonics.
3581         (aarch64_simd_vec_unpack<su>_hi_<mode>): Use UXTL2 and SXTL2 assembler
3582         mnemonics.
3584 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
3586         PR tree-optimization/85989
3587         * gimple-ssa-backprop.c (backprop::m_visited_phis): New member
3588         variable.
3589         (backprop::intersect_uses): Check it when deciding whether this
3590         is a backedge reference.
3591         (backprop::process_block): Add each phi to m_visited_phis
3592         after visiting it, then clear it at the end.
3594 2018-06-01  Richard Biener  <rguenther@suse.de>
3596         * tree-vectorizer.h (vect_dr_stmt): New function.
3597         (vect_get_load_cost): Adjust.
3598         (vect_get_store_cost): Likewise.
3599         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence):
3600         Use vect_dr_stmt instead of DR_SMTT.
3601         (vect_record_base_alignments): Likewise.
3602         (vect_calculate_target_alignment): Likewise.
3603         (vect_compute_data_ref_alignment): Likewise and make static.
3604         (vect_update_misalignment_for_peel): Likewise.
3605         (vect_verify_datarefs_alignment): Likewise.
3606         (vector_alignment_reachable_p): Likewise.
3607         (vect_get_data_access_cost): Likewise.  Pass down
3608         vinfo to vect_get_load_cost/vect_get_store_cost instead of DR.
3609         (vect_get_peeling_costs_all_drs): Likewise.
3610         (vect_peeling_hash_get_lowest_cost): Likewise.
3611         (vect_enhance_data_refs_alignment): Likewise.
3612         (vect_find_same_alignment_drs): Likewise.
3613         (vect_analyze_data_refs_alignment): Likewise.
3614         (vect_analyze_group_access_1): Likewise.
3615         (vect_analyze_group_access): Likewise.
3616         (vect_analyze_data_ref_access): Likewise.
3617         (vect_analyze_data_ref_accesses): Likewise.
3618         (vect_vfa_segment_size): Likewise.
3619         (vect_small_gap_p): Likewise.
3620         (vectorizable_with_step_bound_p): Likewise.
3621         (vect_prune_runtime_alias_test_list): Likewise.
3622         (vect_analyze_data_refs): Likewise.
3623         (vect_supportable_dr_alignment): Likewise.
3624         * tree-vect-loop-manip.c (get_misalign_in_elems): Likewise.
3625         (vect_gen_prolog_loop_niters): Likewise.
3626         * tree-vect-loop.c (vect_analyze_loop_2): Likewise.
3627         * tree-vect-patterns.c (vect_recog_bool_pattern): Do not
3628         modify DR_STMT.
3629         (vect_recog_mask_conversion_pattern): Likewise.
3630         (vect_try_gather_scatter_pattern): Likewise.
3631         * tree-vect-stmts.c (vect_model_store_cost): Pass stmt_info
3632         to vect_get_store_cost.
3633         (vect_get_store_cost): Get stmt_info instead of DR.
3634         (vect_model_load_cost): Pass stmt_info to vect_get_load_cost.
3635         (vect_get_load_cost): Get stmt_info instead of DR.
3637 2018-06-01  Richard Biener  <rguenther@suse.de>
3639         PR middle-end/86017
3640         * gimple-fold.c (var_decl_component_p): Also allow offsetted
3641         vars wrapped in MEM_REFs.
3643 2018-06-01  Richard Sandiford  <richard.sandiford@linaro.org>
3645         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
3646         Fix subreg tests so that we only return a choice between
3647         GENERAL_REGS and FP_REGS if the original classes included both.
3649 2018-06-01  Richard Biener  <rguenther@suse.de>
3651         PR ipa/85960
3652         * tree-ssa-structalias.c (get_function_part_constraint):
3653         Handle NULL fi->decl.
3654         (find_func_aliases_for_call): Properly handle indirect
3655         fi from direct call.
3656         (find_func_clobbers): Likewise.
3657         (ipa_pta_execute): Likewise.
3658         (create_variable_info_for): For functions that are ifunc_resolver
3659         resolve to a varinfo that contains the result of the resolver call.
3660         (associate_varinfo_to_alias): Do not treat ifunc resolvers as
3661         aliases.
3663 2018-05-31  Michael Collison  <michael.collison@arm.com>
3665         * config/aarch64/aarch64.md:
3666         (*fix_to_zero_extenddfdi2): New pattern.
3667         * gcc.target/aarch64/fix_extend1.c: New testcase.
3669 2018-05-31  Qing Zhao <qing.zhao@oracle.com>
3671         PR middle-end/78809
3672         PR middle-end/83026
3673         * builtins.c (expand_builtin): Add the handling of BUILT_IN_STRCMP_EQ
3674         and BUILT_IN_STRNCMP_EQ.
3675         * builtins.def: Add new builtins BUILT_IN_STRCMP_EQ and
3676         BUILT_IN_STRNCMP_EQ.
3677         * gimple-fold.c (gimple_fold_builtin_string_compare): Add the
3678         handling of BUILTIN_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
3679         (gimple_fold_builtin): Likewise.
3680         * tree-ssa-strlen.c (compute_string_length): New function.
3681         (determine_min_obsize): New function.
3682         (handle_builtin_string_cmp): New function to handle calls to
3683         string compare functions.
3684         (strlen_optimize_stmt): Add handling to builtin string compare
3685         calls.
3686         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
3687         Add the handling of BUILT_IN_STRCMP_EQ and BUILT_IN_STRNCMP_EQ.
3688         * tree.c (build_common_builtin_nodes): Add new defines of
3689         BUILT_IN_STRNCMP_EQ and BUILT_IN_STRCMP_EQ.
3691 2018-05-31  Jakub Jelinek  <jakub@redhat.com>
3693         PR target/85984
3694         * bb-reorder.c (pass_partition_blocks::gate): Return false for
3695         functions with naked attribute.
3697 2018-05-31  Uros Bizjak  <ubizjak@gmail.com>
3699         * config/i386/sse.md (avx_vec_concat<mode>):
3700         Substitute concat_tg_mode mode attribute with xtg_mode.
3701         (<mask_codefor>avx512dq_broadcast<mode><mask_name>_1): Ditto.
3702         (concat_tg_mode): Remove mode attribute.
3704 2018-05-31  Martin Sebor  <msebor@redhat.com>
3706         PR c/82063
3707         * calls.c (alloc_max_size): Correct a logic error/typo.
3708         Treat excessive arguments as infinite.  Warn for invalid arguments.
3709         * doc/invoke.texi (-Walloc-size-larger-than): Update.
3711 2018-05-31  H.J. Lu  <hongjiu.lu@intel.com>
3713         PR target/85829
3714         * config/i386/x86-tune.def: Re-enable partial_reg_dependency
3715         and movx for Haswell.
3717 2018-05-31  Chung-Lin Tang  <cltang@codesourcery.com>
3718             Cesar Philippidis  <cesar@codesourcery.com>
3720         PR middle-end/85879
3721         * gimplify.c (gimplify_adjust_omp_clauses): Add 'remove = true'
3722         when emitting error on private/firstprivate reductions.
3723         * omp-low.c (lower_omp_target): Avoid reference-type processing
3724         on pointers for firstprivate clause.
3726 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
3728         * config/aarch64/aarch64-simd-builtins.def (ld1x3): New.
3729         (st1x2): Likewise.
3730         (st1x3): Likewise.
3731         * config/aarch64/aarch64-simd.md
3732         (aarch64_ld1x3<VALLDIF:mode>): New pattern.
3733         (aarch64_ld1_x3_<mode>): Likewise
3734         (aarch64_st1x2<VALLDIF:mode>): Likewise
3735         (aarch64_st1_x2_<mode>): Likewise
3736         (aarch64_st1x3<VALLDIF:mode>): Likewise
3737         (aarch64_st1_x3_<mode>): Likewise
3738         * config/aarch64/arm_neon.h (vld1_u8_x3): New function.
3739         (vld1_s8_x3): Likewise.
3740         (vld1_u16_x3): Likewise.
3741         (vld1_s16_x3): Likewise.
3742         (vld1_u32_x3): Likewise.
3743         (vld1_s32_x3): Likewise.
3744         (vld1_u64_x3): Likewise.
3745         (vld1_s64_x3): Likewise.
3746         (vld1_f16_x3): Likewise.
3747         (vld1_f32_x3): Likewise.
3748         (vld1_f64_x3): Likewise.
3749         (vld1_p8_x3): Likewise.
3750         (vld1_p16_x3): Likewise.
3751         (vld1_p64_x3): Likewise.
3752         (vld1q_u8_x3): Likewise.
3753         (vld1q_s8_x3): Likewise.
3754         (vld1q_u16_x3): Likewise.
3755         (vld1q_s16_x3): Likewise.
3756         (vld1q_u32_x3): Likewise.
3757         (vld1q_s32_x3): Likewise.
3758         (vld1q_u64_x3): Likewise.
3759         (vld1q_s64_x3): Likewise.
3760         (vld1q_f16_x3): Likewise.
3761         (vld1q_f32_x3): Likewise.
3762         (vld1q_f64_x3): Likewise.
3763         (vld1q_p8_x3): Likewise.
3764         (vld1q_p16_x3): Likewise.
3765         (vld1q_p64_x3): Likewise.
3766         (vst1_s64_x2): Likewise.
3767         (vst1_u64_x2): Likewise.
3768         (vst1_f64_x2): Likewise.
3769         (vst1_s8_x2): Likewise.
3770         (vst1_p8_x2): Likewise.
3771         (vst1_s16_x2): Likewise.
3772         (vst1_p16_x2): Likewise.
3773         (vst1_s32_x2): Likewise.
3774         (vst1_u8_x2): Likewise.
3775         (vst1_u16_x2): Likewise.
3776         (vst1_u32_x2): Likewise.
3777         (vst1_f16_x2): Likewise.
3778         (vst1_f32_x2): Likewise.
3779         (vst1_p64_x2): Likewise.
3780         (vst1q_s8_x2): Likewise.
3781         (vst1q_p8_x2): Likewise.
3782         (vst1q_s16_x2): Likewise.
3783         (vst1q_p16_x2): Likewise.
3784         (vst1q_s32_x2): Likewise.
3785         (vst1q_s64_x2): Likewise.
3786         (vst1q_u8_x2): Likewise.
3787         (vst1q_u16_x2): Likewise.
3788         (vst1q_u32_x2): Likewise.
3789         (vst1q_u64_x2): Likewise.
3790         (vst1q_f16_x2): Likewise.
3791         (vst1q_f32_x2): Likewise.
3792         (vst1q_f64_x2): Likewise.
3793         (vst1q_p64_x2): Likewise.
3794         (vst1_s64_x3): Likewise.
3795         (vst1_u64_x3): Likewise.
3796         (vst1_f64_x3): Likewise.
3797         (vst1_s8_x3): Likewise.
3798         (vst1_p8_x3): Likewise.
3799         (vst1_s16_x3): Likewise.
3800         (vst1_p16_x3): Likewise.
3801         (vst1_s32_x3): Likewise.
3802         (vst1_u8_x3): Likewise.
3803         (vst1_u16_x3): Likewise.
3804         (vst1_u32_x3): Likewise.
3805         (vst1_f16_x3): Likewise.
3806         (vst1_f32_x3): Likewise.
3807         (vst1_p64_x3): Likewise.
3808         (vst1q_s8_x3): Likewise.
3809         (vst1q_p8_x3): Likewise.
3810         (vst1q_s16_x3): Likewise.
3811         (vst1q_p16_x3): Likewise.
3812         (vst1q_s32_x3): Likewise.
3813         (vst1q_s64_x3): Likewise.
3814         (vst1q_u8_x3): Likewise.
3815         (vst1q_u16_x3): Likewise.
3816         (vst1q_u32_x3): Likewise.
3817         (vst1q_u64_x3): Likewise.
3818         (vst1q_f16_x3): Likewise.
3819         (vst1q_f32_x3): Likewise.
3820         (vst1q_f64_x3): Likewise.
3821         (vst1q_p64_x3): Likewise.
3823 2018-05-30  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
3825         * config/msp430/msp430.c (msp430_output_labelref): Prepend
3826         user_label_prefix to name.
3828         * tree-core.h: Update comment about the format of NAME string
3829         passed to handler in attribute_spec.
3831         * config/msp430/msp430.md: Remove erroneous subreg expression from
3832         zero_extendqisi2 insn pattern. Remove msp430x ISA restriction on
3833         zero_extend{q,h}isi2.
3835 2018-05-30  Borislav Petkov  <bp@suse.de>
3837         * doc/extend.texi: Document some architecture specific
3838         constraints and sort entries.
3840 2018-05-30  Martin Sebor  <msebor@redhat.com>
3842         PR middle-end/85369
3843         * builtins.c (expand_builtin_stpcpy_1): New function.
3844         (expand_builtin_stpcpy): Call it, and call maybe_warn_nonstring_arg
3845         only if the former succeeds.
3847 2018-05-31 Sameera Deshpande <sameera.deshpande@linaro.org>
3849         * config/aarch64/aarch64-cores.def (saphira) : Add support for ARMv8.4
3850         in saphira.
3852 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
3854         * doc/invoke.texi (-flinker-output): Document
3856 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
3858         * passes.c (ipa_write_summaries): Only modify statements if body
3859         is in memory.
3860         * cgraphunit.c (ipa_passes): Also produce intermeidate code when
3861         incrementally linking.
3862         (ipa_passes): Likewise.
3863         * lto-cgraph.c (lto_output_node): When incrementally linking do not
3864         pass down resolution info.
3865         * common.opt (flag_incremental_link): Update info.
3866         * gcc.c (plugin specs): Turn flinker-output=* to
3867         -plugin-opt=-linker-output-known
3868         * toplev.c (compile_file): Also cut compilation when doing incremental
3869         link.
3870         * flag-types. (enum lto_partition_model): Add
3871         LTO_LINKER_OUTPUT_NOLTOREL.
3872         (invoke.texi): Add -flinker-output docs.
3873         * ipa.c (symbol_table::remove_unreachable_nodes): Handle LTO incremental
3874         link same way as WPA; do not stream in dead initializers.
3876         * dwarf2out.c (dwarf2out_die_ref_for_decl,
3877         darf2out_register_external_decl): Support incremental link.
3879 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
3881         * lto-opts.c (lto_write_options): Skip OPT_dumpdir, OPT_fresolution_.
3883 2018-05-30  Jan Hubicka  <hubicka@ucw.cz>
3885         * lto-wrapper.c (debug_objcopy): Add rename parameter; pass
3886         it down to simple_object_copy_lto_debug_sections.
3887         (run_gcc): Determine incremental LTO link time and configure
3888         lto1 into non-wpa mode, disable renaming of debug sections.
3890 2018-05-30  Kelvin Nilsen  <kelvin@gcc.gnu.org>
3892         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Remove
3893         descriptions of various incorrectly documented functions.
3895 2018-05-30  Andre Vieira  <andre.simoesdiasvieira@arm.com>
3897         Revert:
3898         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
3899         address check not strict.
3901 2018-05-30  Richard Biener  <rguenther@suse.de>
3903         PR tree-optimization/85964
3904         * tracer.c (better_p): Drop initialized count check, we only
3905         call the function with initialized counts now.
3906         (find_best_successor): Do find a best edge if one
3907         has uninitialized count.
3908         (find_best_predecessor): Likewise.  Do BB frequency check only
3909         if count is initialized.
3911 2017-05-30  Jackson Woodruff  <jackson.woodruff@arm.com>
3913         * config/aarch64/aarch64.c (aarch64_host_wide_int_compare): New.
3914         (aarch64_ldrstr_offset_compare): New.
3915         (aarch64_operands_adjust_ok_for_ldpstp): Update to consider all
3916         load/store orderings.
3917         (aarch64_gen_adjusted_ldpstp): Likewise.
3919 2018-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
3921         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
3922         Check for subset of GENERAL_REGS and FP_REGS.
3923         * config/aarch64/aarch64-simd.md (aarch64_get_lane): Increase cost of
3924         r=w alternative.
3926 2018-05-30  Richard Sandiford  <richard.sandiford@linaro.org>
3928         * alias.c (adjust_offset_for_component_ref): Use poly_int_tree_p
3929         and wi::to_poly_offset.  Add the current offset and then check
3930         whether the sum fits, rather than using an unchecked addition of
3931         a checked term.  Check for a shwi rather than a uhwi.
3932         * expr.c (get_bit_range): Use tree_to_poly_uint64.
3933         (store_constructor): Use poly_int_tree_p.
3934         (expand_expr_real_1): Likewise.
3935         * function.c (assign_temp): Likewise.
3936         * fold-const.c (const_binop): Use poly_int_tree_p and
3937         wi::to_poly_offset.
3938         (fold_indirect_ref_1): Likewise.  Use multiple_p to attempt an exact
3939         division.
3940         * ipa-icf-gimple.c (func_checker::compare_operand): Use
3941         to_poly_offset for MEM offsets.
3942         * ipa-icf.c (sem_variable::equals): Likewise.
3943         * stor-layout.c (compute_record_mode): Use poly_int_tree_p.
3944         * tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Use
3945         wi::to_poly_offset for BIT_FIELD_REF offsets.
3946         (vn_reference_maybe_forwprop_address): Use poly_int_tree_p and
3947         wi::to_poly_offset.
3948         * var-tracking.c (emit_note_insn_var_location): Use
3949         tree_to_poly_uint64.
3951 2018-05-29  Jim Wilson  <jimw@sifive.com>
3953         * config/riscv/riscv.c (riscv_interrupt_type): Fix comment typo.
3955 2018-05-29  Uros Bizjak  <ubizjak@gmail.com>
3957         PR target/85950
3958         * config/i386/i386.md (l<rounding_insn><MODEF:mode><SWI48:mode>2):
3959         Enable for TARGET_SSE4_1 and generate rounds{s,d} and cvtts{s,d}2si{,q}
3960         sequence.
3961         (sse4_1_round<mode>2): Use nonimmediate_operand
3962         for operand 1 predicate.
3964 2018-05-29  Martin Sebor  <msebor@redhat.com>
3965             Richard Biener  <rguenther@suse.de>
3967         PR testsuite/85888
3968         * calls.c (get_size_range): Call determine_value_range instead
3969         of get_value_range..
3970         * tree-vrp.h (determine_value_range): Declared new function.
3971         * tree-vrp.c (determine_value_range_1, determine_value_range): New.
3973 2018-05-29  Richard Biener  <rguenther@suse.de>
3975         * tree-vect-data-refs.c (vect_preserves_scalar_order_p): Make
3976         sure to use non-pattern stmts for get_earlier_stmt arguments.
3977         * tree-vectorizer.h (get_earlier_stmt): Assert we do not get
3978         called on pattern stmts.
3979         (get_later_stmt): Likewise.
3981 2018-05-29  Martin Liska  <mliska@suse.cz>
3983         PR gcov-profile/85759
3984         * doc/gcov.texi: Document GCOV_ERROR_FILE and GCOV_EXIT_AT_ERROR
3985         env variables.
3987 2018-05-29  Jakub Jelinek  <jakub@redhat.com>
3989         * tree-cfg.c (verify_gimple_assign_unary): Add checking for
3990         VEC_UNPACK_*_EXPR.
3991         (verify_gimple_assign_binary): Check TYPE_VECTOR_SUBPARTS for
3992         VEC_PACK_*_EXPR.
3994         PR target/85918
3995         * tree.def (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
3996         VEC_PACK_FLOAT_EXPR): New tree codes.
3997         * tree-pretty-print.c (op_code_prio): Handle
3998         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR.
3999         (dump_generic_node): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
4000         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
4001         * tree-inline.c (estimate_operator_cost): Likewise.
4002         * gimple-pretty-print.c (dump_binary_rhs): Handle VEC_PACK_FLOAT_EXPR.
4003         * fold-const.c (const_binop): Likewise.
4004         (const_unop): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR and
4005         VEC_UNPACK_FIX_TRUNC_LO_EXPR.
4006         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
4007         (verify_gimple_assign_binary): Handle VEC_PACK_FLOAT_EXPR.
4008         * cfgexpand.c (expand_debug_expr): Handle VEC_UNPACK_FIX_TRUNC_HI_EXPR,
4009         VEC_UNPACK_FIX_TRUNC_LO_EXPR and VEC_PACK_FLOAT_EXPR.
4010         * expr.c (expand_expr_real_2): Likewise.
4011         * optabs.def (vec_packs_float_optab, vec_packu_float_optab,
4012         vec_unpack_sfix_trunc_hi_optab, vec_unpack_sfix_trunc_lo_optab,
4013         vec_unpack_ufix_trunc_hi_optab, vec_unpack_ufix_trunc_lo_optab): New
4014         optabs.
4015         * optabs.c (expand_widen_pattern_expr): For
4016         VEC_UNPACK_FIX_TRUNC_HI_EXPR and VEC_UNPACK_FIX_TRUNC_LO_EXPR use
4017         sign from result type rather than operand's type.
4018         (expand_binop_directly): For vec_packu_float_optab and
4019         vec_packs_float_optab allow result type to be different from operand's
4020         type.
4021         * optabs-tree.c (optab_for_tree_code): Handle
4022         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
4023         VEC_PACK_FLOAT_EXPR.  Formatting fixes.
4024         * tree-vect-generic.c (expand_vector_operations_1):  Handle
4025         VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR and
4026         VEC_PACK_FLOAT_EXPR.
4027         * tree-vect-stmts.c (supportable_widening_operation): Handle
4028         FIX_TRUNC_EXPR.
4029         (supportable_narrowing_operation): Handle FLOAT_EXPR.
4030         * config/i386/i386.md (fixprefix, floatprefix): New code attributes.
4031         * config/i386/sse.md (*float<floatunssuffix>v2div2sf2): Rename to ...
4032         (float<floatunssuffix>v2div2sf2): ... this.  Formatting fix.
4033         (vpckfloat_concat_mode, vpckfloat_temp_mode, vpckfloat_op_mode): New
4034         mode attributes.
4035         (vec_pack<floatprefix>_float_<mode>): New expander.
4036         (vunpckfixt_mode, vunpckfixt_model, vunpckfixt_extract_mode): New mode
4037         attributes.
4038         (vec_unpack_<fixprefix>fix_trunc_lo_<mode>,
4039         vec_unpack_<fixprefix>fix_trunc_hi_<mode>): New expanders.
4040         * doc/md.texi (vec_packs_float_@var{m}, vec_packu_float_@var{m},
4041         vec_unpack_sfix_trunc_hi_@var{m}, vec_unpack_sfix_trunc_lo_@var{m},
4042         vec_unpack_ufix_trunc_hi_@var{m}, vec_unpack_ufix_trunc_lo_@var{m}):
4043         Document.
4044         * doc/generic.texi (VEC_UNPACK_FLOAT_HI_EXPR,
4045         VEC_UNPACK_FLOAT_LO_EXPR): Fix pasto in description.
4046         (VEC_UNPACK_FIX_TRUNC_HI_EXPR, VEC_UNPACK_FIX_TRUNC_LO_EXPR,
4047         VEC_PACK_FLOAT_EXPR): Document.
4049 2018-05-29  Richard Biener  <rguenther@suse.de>
4051         * tree-vectorizer.h (struct vec_info): Add stmt_vec_infos
4052         member.
4053         (stmt_vec_info_vec): Make pointer.
4054         (init_stmt_vec_info_vec): Remove.
4055         (free_stmt_vec_info_vec): Likewise.
4056         (set_stmt_vec_info_vec): New function.
4057         (free_stmt_vec_infos): Likewise.
4058         (vinfo_for_stmt): Adjust for stmt_vec_info_vec indirection.
4059         (set_vinfo_for_stmt): Likewise.
4060         (get_earlier_stmt): Likewise.
4061         (get_later_stmt): Likewise.
4062         * tree-vectorizer.c (stmt_vec_info_vec): Make pointer.
4063         (vec_info::vec_info): Allocate stmt_vec_infos and set the global.
4064         (vec_info::~vec_info): Free stmt_vec_infos.
4065         (vectorize_loops): Set the global stmt_vec_info_vec to NULL.
4066         Remove old init_stmt_vec_info_vec/free_stmt_vec_info_vec calls.
4067         (pass_slp_vectorize::execute): Likewise.
4068         * tree-vect-stmts.c (init_stmt_vec_info_vec): Remove.
4069         (free_stmt_vec_info_vec): Likewise.
4070         (set_stmt_vec_info_vec): New function.
4071         (free_stmt_vec_infos): Likewise.
4072         * tree-vect-loop.c (_loop_vec_info::~_loop_vec_info): Set
4073         the global stmt_vec_info_vec.
4074         * tree-parloops.c (gather_scalar_reductions): Use
4075         set_stmt_vec_info_vec/free_stmt_vec_infos and maintain a local
4076         vector.
4078 2018-05-29  Richard Biener  <rguenther@suse.de>
4080         * dominance.c (iterate_fix_dominators): Push/pop TV_DOMINANCE.
4082 2018-05-29  Martin Liska  <mliska@suse.cz>
4083             David Malcolm  <dmalcolm@redhat.com>
4085         * vec.c (test_reverse): New.
4086         (vec_c_tests): Add new test.
4087         * vec.h (vl_ptr>::reverse): New function.
4089 2018-05-29  Gerald Pfeifer  <gerald@pfeifer.com>
4091         * config.gcc: Identify FreeBSD 3.x and 4.x as unsupported.
4093         * config/freebsd-spec.h (FBSD_LIB_SPEC): Only consider FreeBSD 5
4094         and later.
4096 2018-05-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
4098         * tree-dump.c (dump_node): Use splay_tree_delete_pointers.
4100 2018-05-28  Richard Biener  <rguenther@suse.de>
4102         PR tree-optimization/85933
4103         * tree-vect-data-refs.c (vect_record_base_alignments): Only
4104         look at stmts marked as vectorizable.
4106 2018-05-28  Richard Biener  <rguenther@suse.de>
4108         PR tree-optimization/85934
4109         * tree-vect-generic.c (expand_vector_operations_1): Hoist
4110         vector boolean check before scalar optimization.
4112 2018-05-28  Jakub Jelinek  <jakub@redhat.com>
4114         * doc/invoke.texi (ARM Options): Use @item instead of @itemx
4115         for armv5te.
4117 2018-05-28  Mark Wielaard  <mark@klomp.org>
4119         * dwarf2asm.c (dw2_asm_output_delta_uleb128): Add brackets around lab2
4120         if it is an expression containing a minus sign.
4122 2018-05-27  John David Anglin  <danglin@gcc.gnu.org>
4124         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Define to 0.
4126 2018-05-27  Paul Koning  <ni1d@arrl.net>
4128         * config/pdp11/pdp11.md (truncsihi2): Remove.
4130 2018-05-27  Monk Chiang  <sh.chiang04@gmail.com>
4131             Chung-Ju Wu  <jasonwucj@gmail.com>
4133         * config/nds32/nds32-intrinsic.md (unaligned_storedi): Modify patterns
4134         implementation.
4135         (unaligned_store_dw): Ditto.
4136         * config/nds32/nds32-memory-manipulation.c
4137         (nds32_expand_movmemsi_loop_known_size): Refactoring implementation.
4138         (nds32_gen_dup_4_byte_to_word_value): Rename to ...
4139         (nds32_gen_dup_4_byte_to_word_value_aux): ... this.
4140         (emit_setmem_word_loop): Rename to ...
4141         (emit_setmem_doubleword_loop): ... this.
4142         (nds32_gen_dup_4_byte_to_word_value): New function.
4143         (nds32_gen_dup_8_byte_to_double_word_value): New function.
4144         (nds32_expand_setmem_loop): Refine implementation.
4145         (nds32_expand_setmem_loop_v3m): Ditto.
4146         * config/nds32/nds32-multiple.md (unaligned_store_update_base_dw): New
4147         pattern.
4149 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
4151         * config/nds32/nds32.md (bswapsi2, bswaphi2): New patterns.
4153 2018-05-27  Chung-Ju Wu  <jasonwucj@gmail.com>
4155         * config/nds32/nds32.c (nds32_attribute_table): Add "no_prologue".
4156         (nds32_init_machine_status): Initialize machine->attr_naked_p and
4157         machine->attr_no_prologue_p.
4158         (nds32_compute_stack_frame): Check "naked" and "no_prologue" attributes.
4159         (nds32_naked_function_p): Handle "naked" and "no_prologue" attributes.
4160         (nds32_expand_epilogue): Consider attr_naked_p.
4161         (nds32_expand_epilogue_v3pop): Likewise.
4162         (nds32_can_use_return_insn): Likewise.
4163         * config/nds32/nds32.h (machine_function): Add attr_naked_p and
4164         attr_no_prologue_p fields.
4165         * config/nds32/nds32.opt (mret-in-naked-func): New option.
4167 2018-05-27  Jakub Jelinek  <jakub@redhat.com>
4169         PR target/85918
4170         * config/i386/i386.md (fixunssuffix, floatunssuffix): New code
4171         attributes.
4172         * config/i386/sse.md
4173         (<floatsuffix>float<sseintvecmodelower><mode>2<mask_name><round_name>):
4174         Rename to ...
4175         (float<floatunssuffix><sseintvecmodelower><mode>2<mask_name><round_name>):
4176         ... this.
4177         (<floatsuffix>float<sselongvecmodelower><mode>2<mask_name><round_name>):
4178         Rename to ...
4179         (float<floatunssuffix><sselongvecmodelower><mode>2<mask_name><round_name>):
4180         ... this.
4181         (*<floatsuffix>floatv2div2sf2): Rename to ...
4182         (*float<floatunssuffix>v2div2sf2): ... this.
4183         (<floatsuffix>floatv2div2sf2_mask): Rename to ...
4184         (float<floatunssuffix>v2div2sf2_mask): ... this.
4185         (*<floatsuffix>floatv2div2sf2_mask_1): Rename to ...
4186         (*float<floatunssuffix>v2div2sf2_mask_1): ... this.
4187         (<fixsuffix>fix_truncv8dfv8si2<mask_name><round_saeonly_name>): Rename
4188         to ...
4189         (fix<fixunssuffix>_truncv8dfv8si2<mask_name><round_saeonly_name>):
4190         ... this.
4191         (<fixsuffix>fix_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
4192         Rename to ...
4193         (fix<fixunssuffix>_trunc<mode><sseintvecmodelower>2<mask_name><round_saeonly_name>):
4194         ... this.
4195         (<fixsuffix>fix_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
4196         Rename to ...
4197         (fix<fixunssuffix>_trunc<mode><sselongvecmodelower>2<mask_name><round_saeonly_name>):
4198         ... this.
4199         (<fixsuffix>fix_truncv2sfv2di2<mask_name>): Rename to ...
4200         (fix<fixunssuffix>_truncv2sfv2di2<mask_name>): ... this.
4201         (vec_pack_ufix_trunc_<mode>): Use gen_fixuns_truncv8dfv8si2 instead of
4202         gen_ufix_truncv8dfv8si2.
4203         * config/i386/i386-builtin.def (__builtin_ia32_cvttpd2uqq256_mask,
4204         __builtin_ia32_cvttpd2uqq128_mask, __builtin_ia32_cvttps2uqq256_mask,
4205         __builtin_ia32_cvttps2uqq128_mask, __builtin_ia32_cvtuqq2ps256_mask,
4206         __builtin_ia32_cvtuqq2ps128_mask, __builtin_ia32_cvtuqq2pd256_mask,
4207         __builtin_ia32_cvtuqq2pd128_mask, __builtin_ia32_cvttpd2udq512_mask,
4208         __builtin_ia32_cvtuqq2ps512_mask, __builtin_ia32_cvtuqq2pd512_mask,
4209         __builtin_ia32_cvttps2uqq512_mask, __builtin_ia32_cvttpd2uqq512_mask):
4210         Use fixuns instead ufix or floatuns instead ufloat in CODE_FOR_ names.
4212 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
4214         PR target/85900
4215         PR target/85345
4216         * varasm.c (assemble_alias): Lookup ifunc attribute on error.
4218 2018-05-25  Jim Wilson  <jimw@sifive.com>
4220         * config/riscv/riscv-protos.h (riscv_epilogue_uses): New.
4221         * config/riscv/riscv.c (struct machine_function): Add
4222         interrupt_handler_p and attribute_checked_p fields.
4223         (riscv_attribute_table): Add interrupt.
4224         (riscv_interrupt_type_p): New.
4225         (riscv_save_reg_p): Save extra regs for interrupt handler.
4226         (riscv_use_save_libcall): Return false  for interrupt handler.
4227         (riscv_first_stack_step): Add forward declaration.
4228         (riscv_compute_frame_info): New local interrupt_save_t1.  Set it
4229         for interrupt handler with large frame.  Use it for saved reg list.
4230         (riscv_expand_prologue): Move flag_stack_usage_info support to
4231         eliminate duplication.
4232         (riscv_expand_epilogue): Generate mret for interrupt handler.
4233         (riscv_epilogue_uses): New.
4234         (riscv_can_use_return_insn): Return false for interrupt handler.
4235         (riscv_function_ok_for_sibcall): Likewise.
4236         (riscv_set_current_function): Add interrupt handler support.
4237         * config/riscv/riscv.h (EPILOGUE_USES): Call riscv_epilogue_uses.
4238         * config/riscv/riscv.md (UNSPECV_MRET): New.
4239         (GP_REGNUM): New.
4240         (riscv_frflags, riscv_fsflags): Use tab after opcode.
4241         (riscv_mret): New.
4242         * doc/extend.texi (RISC-V Function Attributes) <interrupt>: New.
4244 2018-05-25  Bill Schmidt  <wschmidt@linux.ibm.com>
4246         PR tree-optimization/85712
4247         * gimple-ssa-strength-reduction.c (replace_one_candidate): Skip if
4248         this candidate has already been replaced in-situ by a copy.
4250 2018-05-25  Jason Merrill  <jason@redhat.com>
4252         PR c++/80485 - inline function non-zero address.
4253         * symtab.c (nonzero_address): Check DECL_COMDAT.
4255 2018-05-25  Uros Bizjak  <ubizjak@gmail.com>
4257         PR target/83628
4258         * config/alpha/alpha.md (ashlsi3): New insn pattern.
4259         (*ashlsi_se): Rename from *ashldi_se.  Define as sign
4260         extension of SImode operation.  Use const123_operand predicate.
4261         (*saddsi_1): Remove.
4262         (*saddl_se_1): Ditto.
4263         (*ssubsi_1): Ditto.
4264         (*ssubl_se_1): Ditto.
4265         * config/alpha/predicates.md (const123_operand): New predicate.
4266         * config/alpha/constraints.md (P): Use IN_RANGE.
4268 2018-05-25  Richard Biener  <rguenther@suse.de>
4270         * tree-ssa-alias.h (refs_may_alias_p): Add tbaa_p bool parameter,
4271         defaulted to true.
4272         (ref_maybe_used_by_stmt_p): Likewise.
4273         (stmt_may_clobber_ref_p): Likewise.
4274         (stmt_may_clobber_ref_p_1): Likewise.
4275         * tree-ssa-alias.c (refs_may_alias_p): Add tbaa_p bool parameter
4276         and pass it along.
4277         (ref_maybe_used_by_stmt_p): Likewise.
4278         (stmt_may_clobber_ref_p): Likewise.
4279         (stmt_may_clobber_ref_p_1): Likewise.
4280         * tree-vect-data-refs.c (vect_slp_analyze_node_dependences): Use
4281         the alias oracle to disambiguate DRs with stmts DR analysis
4282         couldn't handle.
4283         (vect_analyze_data_refs): Do not give up on not analyzable
4284         DRs for BB vectorization.  Remove code truncating the dataref
4285         vector.
4287 2018-05-25  Jakub Jelinek  <jakub@redhat.com>
4289         PR target/85832
4290         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>_1):
4291         Add (=Yk,v,C) variant using vptestm insn.  Use TARGET_AVX512BW
4292         in test instead of TARGET_AVX512F for VI12_AVX512VL iterator.
4294 2018-05-25  Richard Biener  <rguenther@suse.de>
4296         * tree-vect-data-refs.c (vect_find_stmt_data_reference): New
4297         function, combining stmt data ref gathering and fatal analysis
4298         parts.
4299         (vect_analyze_data_refs): Remove now redudnant code and simplify.
4300         * tree-vect-loop.c (vect_get_datarefs_in_loop): Factor out from
4301         vect_analyze_loop_2 and use vect_find_stmt_data_reference.
4302         * tree-vect-slp.c (vect_slp_bb): Use vect_find_stmt_data_reference.
4303         * tree-vectorizer.h (vect_find_stmt_data_reference): Declare.
4305 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
4307         PR tree-optimization/85720
4308         * tree-loop-distribution.c (break_alias_scc_partitions): Don't merge
4309         SCC if all partitions are builtins.
4310         (version_loop_by_alias_check): New parameter.  Generate cancelable
4311         runtime alias check if all partitions are builtins.
4312         (distribute_loop): Update call to above function.
4314 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
4316         * tree-outof-ssa.c (tree-ssa.h, tree-dfa.h): Include header files.
4317         (create_default_def, for_all_parms): Moved from tree-ssa-coalesce.c.
4318         (parm_default_def_partition_arg): Ditto.
4319         (set_parm_default_def_partition): Ditto.
4320         (get_parm_default_def_partitions): Ditto and make it static.
4321         (get_undefined_value_partitions): Ditto and make it static.
4322         (remove_ssa_form): Refactor call to init_var_map here.
4323         * tree-ssa-coalesce.c (build_ssa_conflict_graph): Support live range
4324         computation for loop region.
4325         (coalesce_partitions, compute_optimized_partition_bases): Ditto.
4326         (register_default_def): Delete.
4327         (for_all_parms, create_default_def): Move to tree-outof-ssa.c.
4328         (parm_default_def_partition_arg): Ditto.
4329         (set_parm_default_def_partition): Ditto.
4330         (get_parm_default_def_partitions): Ditto and make it static.
4331         (get_undefined_value_partitions): Ditto and make it static.
4332         (coalesce_with_default, coalesce_with_default): Update comment.
4333         (create_coalesce_list_for_region): New func factored out from
4334         create_outofssa_var_map.
4335         (populate_coalesce_list_for_outofssa): New func factored out from
4336         create_outofssa_var_map and coalesce_ssa_name.
4337         (create_outofssa_var_map): Delete.
4338         (coalesce_ssa_name): Refactor to support live range computation.
4339         * tree-ssa-coalesce.h (coalesce_ssa_name): Change decl.
4340         (get_parm_default_def_partitions): Delete.
4341         (get_undefined_value_partitions): Ditto.
4342         * tree-ssa-live.c (init_var_map, delete_var_map): Support live range
4343         computation for loop region.
4344         (new_tree_live_info, loe_visit_block): Ditto.
4345         (live_worklist, set_var_live_on_entry): Ditto.
4346         (calculate_live_on_exit, verify_live_on_entry): Ditto.
4347         * tree-ssa-live.h (struct _var_map): New fields.
4348         (init_var_map): Change decl.
4349         (region_contains_p): New.
4351 2018-05-25  Bin Cheng  <bin.cheng@arm.com>
4353         * tree-ssa-live.h (live_merge_and_clear): Delete.
4355 2018-05-25  Richard Biener  <rguenther@suse.de>
4357         PR c++/85912
4358         * tree-dump.c (dequeue_and_dump): Remove access to removed
4359         operand 2 of a SWITCH_EXPR.
4361 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
4363         * doc/sourcebuild.texi (vect_double_cond_arith): Include
4364         multiplication and division.
4365         * doc/md.texi (cond_mul@var{m}, cond_div@var{m}, cond_mod@var{m})
4366         (cond_udiv@var{m}, cond_umod@var{m}): Document.
4367         * optabs.def (cond_smul_optab, cond_sdiv_optab, cond_smod_optab)
4368         (cond_udiv_optab, cond_umod_optab): New optabs.
4369         * internal-fn.def (IFN_COND_MUL, IFN_COND_DIV, IFN_COND_MOD)
4370         (IFN_COND_RDIV): New internal functions.
4371         * internal-fn.c (get_conditional_internal_fn): Handle TRUNC_DIV_EXPR,
4372         TRUNC_MOD_EXPR and RDIV_EXPR.
4373         * match.pd (UNCOND_BINARY, COND_BINARY): Handle them.
4374         * config/aarch64/iterators.md (UNSPEC_COND_MUL, UNSPEC_COND_DIV):
4375         New unspecs.
4376         (SVE_INT_BINARY): Include mult.
4377         (SVE_COND_FP_BINARY): Include UNSPEC_MUL and UNSPEC_DIV.
4378         (optab, sve_int_op): Handle mult.
4379         (optab, sve_fp_op, commutative): Handle UNSPEC_COND_MUL and
4380         UNSPEC_COND_DIV.
4381         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New pattern
4382         for SVE_INT_BINARY_SD.
4384 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
4386         * config/aarch64/iterators.md (SVE_INT_BINARY_SD): New code iterator.
4387         (optab, sve_int_op): Handle div and udiv.
4388         * config/aarch64/aarch64-sve.md (<optab><mode>3): New expander
4389         for SVE_INT_BINARY_SD.
4390         (*<optab><mode>3): New insn for the same.
4392 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
4394         * tree-vect-patterns.c: Include predict.h.
4395         (vect_recog_divmod_pattern): Restrict check for division support
4396         to when optimizing for size.
4398 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
4400         * doc/sourcebuild.texi (vect_double_cond_arith: Document.
4401         * gimple-match.h (gimple_match_op::MAX_NUM_OPS): Bump to 4.
4402         (gimple_match_op::gimple_match_op): Add an overload for 4 operands.
4403         (gimple_match_op::set_op): Likewise.
4404         (gimple_resimplify4): Declare.
4405         * genmatch.c (get_operand_type): Handle CFN_COND_* functions.
4406         (expr::gen_transform): Likewise.
4407         (decision_tree::gen): Generate a simplification routine for 4 operands.
4408         * gimple-match-head.c (gimple_simplify): Add an overload for
4409         4 operands.  In the top-level function, handle up to 4 call
4410         arguments and call gimple_resimplify4.
4411         (gimple_resimplify4): New function.
4412         (build_call_internal): Pass a fourth operand.
4413         (maybe_push_to_seq): Likewise.
4414         * match.pd (UNCOND_BINARY, COND_BINARY): New operator lists.
4415         Fold VEC_COND_EXPRs of an operation and a default value into
4416         an IFN_COND_* function if possible.
4417         * config/aarch64/iterators.md (UNSPEC_COND_MAX, UNSPEC_COND_MIN):
4418         New unspecs.
4419         (SVE_COND_FP_BINARY): Include them.
4420         (optab, sve_fp_op): Handle them.
4421         (SVE_INT_BINARY_REV): New code iterator.
4422         (SVE_COND_FP_BINARY_REV): New int iterator.
4423         (commutative): New int attribute.
4424         * config/aarch64/aarch64-protos.h (aarch64_sve_prepare_conditional_op):
4425         Declare.
4426         * config/aarch64/aarch64.c (aarch64_sve_prepare_conditional_op): New
4427         function.
4428         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Use it.
4429         (*cond_<optab><mode>): New patterns for reversed operands.
4431 2018-05-25  Richard Biener  <rguenther@suse.de>
4433         * tree-vectorizer.h (STMT_VINFO_GROUP_*, GROUP_*): Remove.
4434         (DR_GROUP_*): New, assert we have non-NULL ->data_ref_info.
4435         (REDUC_GROUP_*): New, assert we have NULL ->data_ref_info.
4436         (STMT_VINFO_GROUPED_ACCESS): Adjust.
4437         * tree-vect-data-refs.c (everywhere): Adjust users.
4438         * tree-vect-loop.c (everywhere): Likewise.
4439         * tree-vect-slp.c (everywhere): Likewise.
4440         * tree-vect-stmts.c (everywhere): Likewise.
4441         * tree-vect-patterns.c (vect_reassociating_reduction_p): Likewise.
4443 2018-05-25  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4445         * configure.ac (gcc_cv_as_section_has_e): Move to common section.
4446         Rename to...
4447         (gcc_cv_as_section_exclude): ... this.
4448         Try Solaris as #exclude syntax.
4449         * configure: Regenerate.
4450         * config.in: Regenerate.
4451         * config/i386/i386.c (i386_solaris_elf_named_section): Handle
4452         SECTION_EXCLUDE.
4453         * config/sparc/sparc.c (sparc_solaris_elf_asm_named_section)
4454         [HAVE_GAS_SECTION_EXCLUDE]: Handle SECTION_EXCLUDE.
4456         * varasm.c (default_elf_asm_named_section): Don't check if
4457         HAVE_GAS_SECTION_EXCLUDE is defined.
4459 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
4461         * doc/md.texi: Update the documentation of the cond_* optabs
4462         to mention the new final operand.  Fix GET_MODE_NUNITS call.
4463         Describe the scalar case too.
4464         * internal-fn.def (IFN_EXTRACT_LAST): Change type to fold_left.
4465         * internal-fn.c (expand_cond_unary_optab_fn): Expect 3 operands
4466         instead of 2.
4467         (expand_cond_binary_optab_fn): Expect 4 operands instead of 3.
4468         (get_conditional_internal_fn): Update comment.
4469         * tree-vect-loop.c (vectorizable_reduction): Pass the original
4470         accumulator value as a final argument to conditional functions.
4471         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): Turn into
4472         a define_expand and add an "else" operand.  Assert for now that
4473         the else operand is equal to operand 2.  Use SVE_INT_BINARY and
4474         SVE_COND_FP_BINARY instead of SVE_COND_INT_OP and SVE_COND_FP_OP.
4475         (*cond_<optab><mode>): New patterns.
4476         * config/aarch64/iterators.md (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX)
4477         (UNSPEC_COND_SMIN, UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
4478         (UNSPEC_COND_EOR): Delete.
4479         (optab): Remove associated mappings.
4480         (SVE_INT_BINARY): New code iterator.
4481         (sve_int_op): Remove int attribute and add "minus" to the code
4482         attribute.
4483         (SVE_COND_INT_OP): Delete.
4484         (SVE_COND_FP_OP): Rename to...
4485         (SVE_COND_FP_BINARY): ...this.
4487 2018-05-25  Richard Sandiford  <richard.sandiford@linaro.org>
4489         * optabs.c (can_reuse_operands_p): New function.
4490         (maybe_legitimize_operands): Try to reuse the results for
4491         earlier operands.
4493 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
4495         * config/i386/sse.md (cvtusi2<ssescalarmodesuffix>64<round_name>):
4496         Add {q} suffix to insn mnemonic.
4498 2018-05-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
4500         * config/msp430/msp430.c (TARGET_WARN_FUNC_RETURN): Define.
4501         (msp430_warn_func_return): New.
4503 2018-05-24  Roger Sayle  <roger@nextmovesoftware.com>
4505         * fold-const.c (tree_nonzero_bits): New function.
4506         * fold-const.h (tree_nonzero_bits): Likewise.
4507         * match.pd (POPCOUNT): New patterns to fold BUILTIN_POPCOUNT and
4508         friends.  POPCOUNT(x&1) => x&1, POPCOUNT(x)==0 => x==0, etc.
4510 2018-05-24  H.J. Lu  <hongjiu.lu@intel.com>
4512         PR target/85900
4513         PR target/85345
4514         * varasm.c (assemble_alias): Check ifunc_resolver only on
4515         FUNCTION_DECL.
4517 2018-05-24  Uros Bizjak  <ubizjak@gmail.com>
4519         PR target/85903
4520         * config/i386/sse.md (movdi_to_sse): Do not generate pseudo
4521         when memory input operand is handled.
4523 2018-05-24  Luis Machado  <luis.machado@linaro.org>
4525         * config/aarch64/aarch64.c (qdf24xx_addrcost_table): New static
4526         global.
4527         (qdf24xx_tunings) <addr_costs>: Set to qdf24xx_addrcost_table.
4529 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
4531         * match.pd: Delay FMA folds until after vectorization.
4533 2018-05-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
4535         PR target/83009
4536         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): Make
4537         address check not strict.
4539 2018-05-24  Richard Sandiford  <richard.sandiford@linaro.org>
4541         * gimple-match.h (gimple_match_op): New class.
4542         (mprts_hook): Replace parameters with a gimple_match_op *.
4543         (maybe_build_generic_op): Likewise.
4544         (gimple_simplified_result_is_gimple_val): Replace parameters with
4545         a const gimple_match_op *.
4546         (gimple_simplify): Replace code_helper * and tree * parameters with
4547         a gimple_match_op * parameter.
4548         (gimple_resimplify1): Replace code_helper *, tree and tree *
4549         parameters with a gimple_match_op * parameter.
4550         (gimple_resimplify2): Likewise.
4551         (gimple_resimplify3): Likewise.
4552         (maybe_push_res_to_seq): Replace code_helper, tree and tree *
4553         parameters with a gimple_match_op * parameter.
4554         * gimple-match-head.c (gimple_simplify): Change prototypes of
4555         auto-generated functions to take a gimple_match_op * instead of
4556         separate code_helper * and tree * parameters.  Make the same
4557         change in the top-level overload and update calls to the
4558         gimple_resimplify routines.  Update calls to the auto-generated
4559         functions and to maybe_push_res_to_seq in the publicly-facing
4560         operation-specific gimple_simplify overloads.
4561         (gimple_match_op::MAX_NUM_OPS): Define.
4562         (gimple_resimplify1): Replace rcode and ops with a single res_op
4563         parameter.  Update call to gimple_simplify.
4564         (gimple_resimplify2): Likewise.
4565         (gimple_resimplify3): Likewise.
4566         (mprts_hook): Replace parameters with a gimple_match_op *.
4567         (maybe_build_generic_op): Likewise.
4568         (build_call_internal): Replace type, nargs and ops with
4569         a gimple_match_op *.
4570         (maybe_push_res_to_seq): Replace res_code, type and ops parameters
4571         with a single gimple_match_op *.  Update calls to mprts_hook,
4572         build_call_internal and gimple_simplified_result_is_gimple_val.
4573         Factor out code that is common to the tree_code and combined_fn cases.
4574         * genmatch.c (expr::gen_transform): Replace tem_code and
4575         tem_ops with a gimple_match_op called tem_op.  Update calls
4576         to the gimple_resimplify functions and maybe_push_res_to_seq.
4577         (dt_simplify::gen_1): Manipulate res_op instead of res_code and
4578         res_ops.  Update call to the gimple_resimplify functions.
4579         (dt_simplify::gen): Pass res_op instead of res_code and res_ops.
4580         (decision_tree::gen): Make the functions take a gimple_match_op *
4581         called res_op instead of separate res_code and res_ops parameters.
4582         Update call accordingly.
4583         * gimple-fold.c (replace_stmt_with_simplification): Replace rcode
4584         and ops with a single res_op parameter.  Update calls to
4585         maybe_build_generic_op and maybe_push_res_to_seq.
4586         (fold_stmt_1): Update calls to gimple_simplify and
4587         replace_stmt_with_simplification.
4588         (gimple_fold_stmt_to_constant_1): Update calls to gimple_simplify
4589         and gimple_simplified_result_is_gimple_val.
4590         * tree-cfgcleanup.c (cleanup_control_expr_graph): Update call to
4591         gimple_simplify.
4592         * tree-ssa-sccvn.c (vn_lookup_simplify_result): Replace parameters
4593         with a gimple_match_op *.
4594         (vn_nary_build_or_lookup): Likewise.  Update call to
4595         vn_nary_build_or_lookup_1.
4596         (vn_nary_build_or_lookup_1): Replace rcode, type and ops with a
4597         gimple_match_op *.  Update calls to the gimple_resimplify routines
4598         and to gimple_simplified_result_is_gimple_val.
4599         (vn_nary_simplify): Update call to vn_nary_build_or_lookup_1.
4600         Use gimple_match_op::MAX_NUM_OPS instead of a hard-coded 3.
4601         (vn_reference_lookup_3): Update call to vn_nary_build_or_lookup.
4602         (visit_nary_op): Likewise.
4603         (visit_reference_op_load): Likewise.
4605 2018-05-23  Luis Machado  <luis.machado@linaro.org>
4607         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Use correct type
4608         modifier for printing the step amount.
4610 2018-05-23  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
4612         PR target/78849
4613         * gcc/tree.c (build_common_tree_nodes): Dont set TYPE_SIZE for __intN
4614         types.
4616 2018-05-23  Segher Boessenkool  <segher@kernel.crashing.org>
4618         * doc/sourcebuild.texi (Endianness): New subsubsection.
4620 2018-05-23  Luis Machado  <luis.machado@linaro.org>
4622         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
4623         <prefetch_dynamic_strides>: New const bool field.
4624         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
4625         prefetch_dynamic_strides.
4626         (exynosm1_prefetch_tune): Likewise.
4627         (thunderxt88_prefetch_tune): Likewise.
4628         (thunderx_prefetch_tune): Likewise.
4629         (thunderx2t99_prefetch_tune): Likewise.
4630         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides to
4631         false.
4632         (aarch64_override_options_internal): Update to set
4633         PARAM_PREFETCH_DYNAMIC_STRIDES.
4634         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
4635         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
4636         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
4637         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
4638         prefetch-dynamic-strides setting.
4640 2018-05-23  Luis Machado  <luis.machado@linaro.org>
4642         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
4643         <minimum_stride>: New const int field.
4644         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
4645         minimum_stride field defaulting to -1.
4646         (exynosm1_prefetch_tune): Likewise.
4647         (thunderxt88_prefetch_tune): Likewise.
4648         (thunderx_prefetch_tune): Likewise.
4649         (thunderx2t99_prefetch_tune): Likewise.
4650         (qdf24xx_prefetch_tune) <minimum_stride>: Set to 2048.
4651         <default_opt_level>: Set to 3.
4652         (aarch64_override_options_internal): Update to set
4653         PARAM_PREFETCH_MINIMUM_STRIDE.
4654         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
4655         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
4656         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
4657         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
4658         stride is constant and is below the minimum stride threshold.
4660 2018-05-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4662         * config/arm/arm-cpus.in (mode26): Delete.
4663         (armv4): Delete mode26 reference.
4664         * config/arm/arm.c (arm_configure_build_target): Delete use of
4665         isa_bit_mode26.
4667 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
4669         * config/i386/i386.md (*floatuns<SWI48:mode><MODEF:mode>2_avx512):
4670         New insn pattern.
4671         (floatunssi<mode>2): Also enable for AVX512F and TARGET_SSE_MATH.
4672         Rewrite expander pattern.  Emit gen_floatunssi<mode>2_i387_with_xmm
4673         for non-SSE modes.
4674         (floatunsdisf2): Rewrite expander pattern.  Hanlde TARGET_AVX512F.
4675         (floatunsdidf2): Ditto.
4677 2018-05-23  Uros Bizjak  <ubizjak@gmail.com>
4679         * config/i386/i386.md (fixuns_trunc<mode>di2): New insn pattern.
4680         (fixuns_trunc<mode>si2_avx512f): Ditto.
4681         (*fixuns_trunc<mode>si2_avx512f_zext): Ditto.
4682         (fixuns_trunc<mode>si2): Also enable for AVX512F and TARGET_SSE_MATH.
4683         Emit fixuns_trunc<mode>si2_avx512f for AVX512F targets.
4685 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
4687         PR rtl-optimization/79985
4688         * df-scan.c (df_insn_refs_collect): Remove special case for
4689         global registers and asm statements.
4691 2018-05-23  Alexander Monakov  <amonakov@ispras.ru>
4693         * extend.texi (Global Register Variables): Rewrite the bullet list.
4694         Note that the register is available for allocation. Note that access
4695         via inline asm must use constraints. Add note about async-signal
4696         handlers. Remove paragraph about automagic register selection.
4698 2018-05-23  Richard Biener  <rguenther@suse.de>
4700         * tree-ssa-sccvn.c (vn_reference_lookup_3): Remove restriction
4701         of fixed offset from memset VN.
4703 2018-05-23  Bill Schmidt  <wschmidt@linux.ibm.com>
4705         * gimple-ssa-strength-reduction.c (struct slsr_cand_d): Add
4706         first_interp field.
4707         (alloc_cand_and_find_basis): Initialize first_interp field.
4708         (slsr_process_mul): Modify first_interp field.
4709         (slsr_process_add): Likewise.
4710         (slsr_process_cast): Modify first_interp field for each new
4711         interpretation.
4712         (slsr_process_copy): Likewise.
4713         (dump_candidate): Dump first_interp field.
4714         (replace_mult_candidate): Process all interpretations, not just
4715         subsequent ones.
4716         (replace_rhs_if_not_dup): Likewise.
4717         (replace_one_candidate): Likewise.
4719 2018-05-23  Wilco Dijkstra  <wdijkstr@arm.com>
4721         * config/aarch64/aarch64.c (aarch64_use_frame_pointer):
4722         Add new boolean.
4723         (aarch64_needs_frame_chain): New function.
4724         (aarch64_parse_override_string): Set aarch64_use_frame_pointer.
4726 2018-05-23  Sudakshina Das  <sudi.das@arm.com>
4728         PR target/84882
4729         * common/config/aarch64/aarch64-common.c (aarch64_handle_option):
4730         Check val before adding MASK_STRICT_ALIGN to opts->x_target_flags.
4731         * config/aarch64/aarch64.opt (mstrict-align): Remove RejectNegative.
4732         * config/aarch64/aarch64.c (aarch64_attributes): Mark allow_neg
4733         as true for strict-align.
4734         (aarch64_can_inline_p): Perform checks even when callee has no
4735         attributes to check for strict alignment.
4736         * doc/extend.texi (AArch64 Function Attributes): Document
4737         no-strict-align.
4738         * doc/invoke.texi: (AArch64 Options): Likewise.
4740 2018-05-23  Richard Sandiford  <richard.sandiford@linaro.org>
4742         PR tree-optimization/85853
4743         * tree-vect-slp.c (vect_slp_analyze_node_operations): Split out
4744         the handling of the root of the node to...
4745         (vect_slp_analyze_node_operations_1): ...this new function,
4746         and run the whole thing with the child nodes' def types
4747         set according to their SLP node's def type.
4749 2018-05-23  Richard Biener  <rguenther@suse.de>
4751         PR middle-end/85874
4752         * tree-data-ref.c (create_runtime_alias_checks): Defer
4753         and ignore overflow warnings.
4755 2018-05-23  Yury Gribov  <tetra2005@gmail.com>
4757         PR tree-optimization/85822
4758         * tree-vrp.c (is_masked_range_test): Fix handling of negative
4759         constants.
4761 2018-05-23  Richard Biener  <rguenther@suse.de>
4763         * tree-ssa-sccvn.c (vn_reference_lookup_3): Handle arbitrary
4764         memset constants via native_interpret_expr.
4766 2018-05-22  H.J. Lu  <hongjiu.lu@intel.com>
4768         PR target/85345
4769         * cgraph.h (cgraph_node::create): Set ifunc_resolver for ifunc
4770         attribute.
4771         (cgraph_node::create_alias): Likewise.
4772         (cgraph_node::get_availability): Check ifunc_resolver instead
4773         of looking up ifunc attribute.
4774         * cgraphunit.c (maybe_diag_incompatible_alias): Likewise.
4775         * varasm.c (do_assemble_alias): Likewise.
4776         (assemble_alias): Likewise.
4777         (default_binds_local_p_3): Likewise.
4778         * cgraph.h (cgraph_node): Add ifunc_resolver.
4779         (cgraph_node::only_called_directly_or_aliased_p): Return false
4780         for IFUNC resolver.
4781         * lto-cgraph.c (input_node): Set ifunc_resolver for ifunc
4782         attribute.
4783         * symtab.c (symtab_node::verify_base): Verify that ifunc_resolver
4784         is equivalent to lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)).
4785         (symtab_node::binds_to_current_def_p): Check ifunc_resolver
4786         instead of looking up ifunc attribute.
4788 2018-05-22  Luis Machado  <luis.machado@linaro.org>
4790         * config/aarch64/aarch64.md (*ashift<mode>_extv_bfiz): New pattern.
4792 2018-05-22  Martin Sebor  <msebor@redhat.com>
4794         PR middle-end/85359
4795         * builtins.c (expand_builtin_strcpy): Call maybe_warn_nonstring_arg
4796         only when expasion succeeds.
4797         (expand_builtin_strcmp): Same.
4798         (expand_builtin_strncmp): Same.
4800 2018-05-22  Martin Sebor  <msebor@redhat.com>
4802         * calls.c (maybe_warn_nonstring_arg): Fix a typo in a comment.
4804 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
4805             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4807         * config/aarch64/aarch64-ldpstp.md: Replace uses of
4808         aarch64_mem_pair_operand with memory_operand and delete operand swapping
4809         code.
4810         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
4811         Add check for legitimate_address.
4812         (aarch64_gen_adjusted_ldpstp): Swap operands where appropriate.
4813         (aarch64_swap_ldrstr_operands): New.
4814         * config/aarch64/aarch64-protos.h (aarch64_swap_ldrstr_operands):
4815         Define prototype.
4817 2018-05-22  Jackson Woodruff  <jackson.woodruff@arm.com>
4818             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4820         * config/aarch64/aarch64.md: New patterns to generate stp
4821         and ldp.
4822         (store_pair_sw, store_pair_dw): New patterns to generate stp for
4823         single words and double words.
4824         (load_pair_sw, load_pair_dw): Likewise.
4825         (store_pair_sf, store_pair_df, store_pair_si, store_pair_di):
4826         Delete.
4827         (load_pair_sf, load_pair_df, load_pair_si, load_pair_di):
4828         Delete.
4829         * config/aarch64/aarch64-ldpstp.md: Modify peephole
4830         for different mode ldpstp and add peephole for merged zero stores.
4831         Likewise for loads.
4832         * config/aarch64/aarch64.c (aarch64_operands_ok_for_ldpstp):
4833         Add size check.
4834         (aarch64_gen_store_pair): Rename calls to match new patterns.
4835         (aarch64_gen_load_pair): Rename calls to match new patterns.
4836         * config/aarch64/aarch64-simd.md (load_pair<mode>): Rename to...
4837         (load_pair<DREG:mode><DREG2:mode>): ... This.
4838         (store_pair<mode>): Rename to...
4839         (vec_store_pair<DREG:mode><DREG2:mode>): ... This.
4840         * config/aarch64/iterators.md (DREG, DREG2, DX2, SX, SX2, DSX):
4841         New mode iterators.
4842         (V_INT_EQUIV): Handle SImode.
4843         * config/aarch64/predicates.md (aarch64_reg_zero_or_fp_zero):
4844         New predicate.
4846 2018-05-22  Martin Sebor  <msebor@redhat.com>
4848         PR c/85623
4849         * calls.c (maybe_warn_nonstring_arg): Use string length to set
4850         or ajust the presumed bound on an operation to avoid unnecessary
4851         warnings.
4853 2018-05-22  Martin Sebor  <msebor@redhat.com>
4855         PR tree-optimization/85826
4856         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Avoid
4857         assuming that a DECL necesarily has a constant size.
4859 2018-05-22  Richard Sandiford  <richard.sandiford@linaro.org>
4861         PR middle-end/85862
4862         * internal-fn.c (expand_direct_optab_fn): Cope with a null lhs.
4864 2018-05-22  Richard Biener  <rguenther@suse.de>
4866         PR tree-optimization/85834
4867         * tree-ssa-sccvn.c (vn_reference_lookup_3): Properly handle
4868         non-constant and non-zero memset arguments.
4870 2018-05-22  Martin Liska  <mliska@suse.cz>
4872         PR ipa/85607
4873         * ipa-icf.c (sem_item::add_type): Do not ICE for incomplete types.
4875 2018-05-22  Richard Biener  <rguenther@suse.de>
4877         PR tree-optimization/85863
4878         * tree-vect-stmts.c (vect_is_simple_cond): Only widen invariant
4879         comparisons when vectype is specified.
4880         (vectorizable_condition): Do not specify vectype for
4881         vect_is_simple_cond when SLP vectorizing.
4883 2018-05-21  Michael Meissner  <meissner@linux.ibm.com>
4885         PR target/85657
4886         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Do not
4887         define __ibm128 as long double.
4888         * config/rs6000/rs6000.c (rs6000_init_builtins): Create __ibm128
4889         as a distinct type when IEEE 128-bit support is enabled.
4890         (init_float128_ieee): Fix up conversions between IFmode and IEEE
4891         128-bit types to use the correct functions.
4892         (rs6000_expand_float128_convert): Use explicit FLOAT_EXTEND to
4893         convert between 128-bit floating point types that have different
4894         modes but the same representation, instead of using gen_lowpart to
4895         makean alias.
4896         * config/rs6000/rs6000.md (IFKF): New iterator for IFmode and
4897         KFmode.
4898         (IFKF_reg): New attributes to give the register constraints for
4899         IFmode and KFmode.
4900         (extend<mode>tf2_internal): New insns to mark an explicit
4901         conversion between 128-bit floating point types that have a
4902         different mode but share the same representation.
4904 2018-05-21  Richard Sandiford  <richard.sandiford@linaro.org>
4906         PR tree-optimization/85814
4907         * tree-ssa-strlen.c (get_stridx_plus_constant): Cope with
4908         a null return from get_strinfo when unsharing the next
4909         strinfo in the chain.
4911 2018-05-21  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
4913         PR gcc/84923
4914         * varasm.c (weak_finish): Clean up weak_decls.
4916 2018-05-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
4918         * config/aarch64/aarch64.md ("unspec"): Define UNSPEC_SABAL,
4919         UNSPEC_SABDL2, UNSPEC_SADALP, UNSPEC_UABAL, UNSPEC_UABDL2,
4920         UNSPEC_UADALP values.
4921         * config/aarch64/iterators.md (ABAL): New int iterator.
4922         (ABDL2): Likewise.
4923         (ADALP): Likewise.
4924         (sur): Add mappings for the above.
4925         * config/aarch64/aarch64-simd.md (aarch64_<sur>abdl2<mode>_3):
4926         New define_insn.
4927         (aarch64_<sur>abal<mode>_4): Likewise.
4928         (aarch64_<sur>adalp<mode>_3): Likewise.
4929         (<sur>sadv16qi): New define_expand.
4931 2018-05-21  Alexander Nesterovskiy  <alexander.nesterovskiy@intel.com>
4933         * config/i386/i386.md (*movsf_internal): AVX falsedep fix.
4934         (*movdf_internal): Ditto.
4935         (*rcpsf2_sse): Ditto.
4936         (*rsqrtsf2_sse): Ditto.
4937         (*sqrt<mode>2_sse): Ditto.
4939 2018-05-21  Tamar Christina  <tamar.christina@arm.com>
4941         * config/aarch64/aarch64-simd.md (aarch64_eor3qv8hi): Change to
4942         eor3q<mode>4.
4943         (aarch64_bcaxqv8hi): Change to bcaxq<mode>4.
4944         * config/aarch64/aarch64-simd-builtins.def (veor3q_u8, veor3q_u32,
4945         veor3q_u64, veor3q_s8, veor3q_s16, veor3q_s32, veor3q_s64, vbcaxq_u8,
4946         vbcaxq_u32, vbcaxq_u64, vbcaxq_s8, vbcaxq_s16, vbcaxq_s32,
4947         vbcaxq_s64): New.
4948         * config/aarch64/arm_neon.h: Likewise.
4949         * config/aarch64/iterators.md (VQ_I): New.
4951 2018-05-21  Alexey Brodkin <abrodkin@synopsys.com>
4953         * config.gcc: Add arc/t-multilib-linux to tmake_file for
4954         arc*-*-linux*.
4955         * config/arc/t-multilib-linux: Specify MULTILIB_OPTIONS and
4956         MULTILIB_DIRNAMES
4958 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
4960         * config/nds32/constraints.md (S): New constraint.
4961         * config/nds32/nds32.md (call_internal): Use constraint S.
4962         (call_value_internal): Likewise.
4963         (sibcall_internal): Likewise.
4964         (sibcall_value_internal): Likewise.
4966 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
4967             Chung-Ju Wu  <jasonwucj@gmail.com>
4969         * config/nds32/nds32.c (nds32_register_move_cost): Take garywolf cpu
4970         into consideration.
4972 2018-05-20  Kito Cheng  <kito.cheng@gmail.com>
4973             Chung-Ju Wu  <jasonwucj@gmail.com>
4975         * config/nds32/nds32-cost.c (rtx_cost_model_t): New structure.
4976         (insn_size_16bit, insn_size_32bit): New variables for cost evaluation.
4977         (nds32_rtx_costs_impl): Simplify.
4978         (nds32_address_cost_impl): Simplify.
4979         (nds32_init_rtx_costs): New function.
4980         (nds32_rtx_costs_speed_prefer): Likewise.
4981         (nds32_rtx_costs_size_prefer): Likewise.
4982         (nds32_address_cost_speed_prefer): Likewise.
4983         (nds32_address_cost_speed_fwprop): Likewise.
4984         (nds32_address_cost_size_prefer): Likewise.
4985         * config/nds32/nds32-protos.h (nds32_init_rtx_costs): Declare.
4986         * config/nds32/nds32.c (nds32_option_override): Use
4987         nds32_init_rtx_costs function.
4989 2018-05-20  Chung-Ju Wu  <jasonwucj@gmail.com>
4991         * config/nds32/nds32.c (nds32_asm_file_start): Output pipeline model.
4992         * config/nds32/nds32.h (TARGET_PIPELINE_N7): Define.
4993         (TARGET_PIPELINE_N8): Likewise.
4994         (TARGET_PIPELINE_N10): Likewise.
4995         (TARGET_PIPELINE_N13): Likewise.
4996         (TARGET_PIPELINE_GRAYWOLF): Likewise.
4998 2018-05-19  Monk Chiang  <sh.chiang04@gmail.com>
5000         * config/nds32/nds32-fpu.md: Update copyright year.
5002 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5004         * config/nds32/nds32.h (ASM_SPEC): Adjust spec rule.
5006 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5008         * config/nds32/nds32.c
5009         (nds32_md_asm_adjust): Consider flag_inline_asm_r15 variable.
5010         * config/nds32/nds32.opt (minline-asm-r15): New option.
5012 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5014         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS): Add
5015         MASK_HW_ABS.
5016         * config/nds32/nds32.md (abssi2): New pattern.
5018 2018-05-19  Uros Bizjak  <ubizjak@gmail.com>
5020         * config/i386/i386.md (rex64namesuffix): New mode attribute.
5021         * config/i386/sse.md (sse_cvtsi2ss<rex64namesuffix><round_name>):
5022         Merge insn pattern from sse_cvtsi2ss<round_name> and
5023         sse_cvtsi2ssq<round_name> using SWI48 mode iterator.
5024         (sse_cvtss2si<rex64namesuffix><round_name>): Merge insn pattern
5025         from sse_cvtss2si<round_name> and sse_cvtss2siq<round_name>
5026         using SWI48 mode iterator.
5027         (sse_cvtss2si<rex64namesuffix>_2): Merge insn pattern from
5028         sse_cvtss2si_2 and sse_cvtss2siq_2 using SWI48 mode iterator.
5029         (sse_cvttss2si<rex64namesuffix><round_saeonly_name>): Merge insn
5030         pattern from sse_cvttss2si<round_saeonly_name>
5031         and sse_cvttss2siq<round_saeonly_name> using SWI48 mode iterator.
5032         (avx512f_vcvtss2usi<rex64namesuffix><round_name>): Merge insn pattern
5033         from avx512f_vcvtss2usi<round_name> and avx512f_vcvtss2usiq<round_name>
5034         using SWI48 mode iterator.
5035         (avx512f_vcvttss2usi<rex64namesuffix><round_saeonly_name>): Merge
5036         insn pattern from avx512f_vcvttss2usi<round_saeonly_name> and
5037         avx512f_vcvttss2usiq<round_saeonly_name> using SWI48 mode iterator.
5038         (avx512f_vcvtsd2usi<rex64namesuffix><round_name>): Merge insn pattern
5039         from avx512f_vcvtsd2usi<round_name> and avx512f_vcvtsd2usiq<round_name>
5040         using SWI48 mode iterator.
5041         (avx512f_vcvttsd2usi<rex64namesuffix><round_saeonly_name>): Merge
5042         insn pattern from avx512f_vcvttsd2usi<round_saeonly_name> and
5043         avx512f_vcvttsd2usiq<round_saeonly_name> using SWI48 mode iterator.
5044         (sse2_cvtsd2si<rex64namesuffix><round_name>): Merge insn pattern from
5045         sse2_cvtsd2si<round_name> and sse2_cvtsd2siq<round_name> using
5046         SWI48 mode iterator.
5047         (sse2_cvtsd2si<rex64namesuffix>_2): Merge insn pattern from
5048         sse2_cvtsd2si_2 and sse2_cvtsd2siq_2 using SWI48 mode iterator.
5049         (sse_cvttsd2si<rex64namesuffix><round_saeonly_name>): Merge insn
5050         pattern from sse_cvttsd2si<round_saeonly_name>
5051         and sse_cvttsd2siq<round_saeonly_name> using SWI48 mode iterator.
5053 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5055         * config/nds32/nds32-md-auxiliary.c
5056         (nds32_valid_smw_lwm_base_p): Refine.
5057         (nds32_output_smw_single_word): Refine.
5058         (nds32_output_smw_double_word): New.
5059         * config/nds32/nds32-protos.h (nds32_output_smw_double_word): New.
5061 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5063         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push): Refine.
5064         (nds32_output_stack_pop): Refine.
5065         (nds32_expand_unaligned_load): Refine.
5066         (nds32_expand_unaligned_store): Refine.
5068 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
5069             Chung-Ju Wu  <jasonwucj@gmail.com>
5071         * config/nds32/constants.md: Add TP_REGNUM constant.
5072         (unspec_element): Add UNSPEC_GOTINIT, UNSPEC_GOT, UNSPEC_GOTOFF,
5073         UNSPEC_PLT, UNSPEC_TLSGD, UNSPEC_TLSLD, UNSPEC_TLSIE, UNSPEC_TLSLE and
5074         UNSPEC_ADD32.
5075         * config/nds32/nds32-doubleword.md: Consider flag_pic.
5076         * config/nds32/nds32-dspext.md (mov<mode>): Expand TLS and PIC cases.
5077         * config/nds32/nds32-predicates.c (nds32_const_unspec_p): New.
5078         * config/nds32/nds32-md-auxiliary.c: Implementation that support TLS
5079         and PIC code generation.
5080         * config/nds32/nds32-protos.h: Declarations that support TLS and PIC
5081         code generation.
5082         * config/nds32/nds32-relax-opt.c: Consider TLS and PIC for relax
5083         optimization.
5084         * config/nds32/nds32.md: Support TLS and PIC.
5085         * config/nds32/nds32.c: Support TLS and PIC.
5086         * config/nds32/nds32.h (nds32_relax_insn_type): New enum type.
5087         * config/nds32/predicates.md (nds32_nonunspec_symbolic_operand): New
5088         predicate.
5090 2018-05-19  Chung-Ju Wu  <jasonwucj@gmail.com>
5092         * config/nds32/nds32-predicates.c (const_vector_to_hwint): Use machine
5093         mode with E_ prefix.
5095 2018-05-19  Kuan-Lin Chen <kuanlinchentw@gmail.com>
5096             Chung-Ju Wu  <jasonwucj@gmail.com>
5098         * config/nds32/constants.md (unspec_element): Add UNSPEC_ICT.
5099         * config/nds32/nds32-md-auxiliary.c
5100         (symbolic_reference_mentioned_p): New.
5101         (nds32_legitimize_ict_address): New.
5102         (nds32_expand_ict_move): New.
5103         (nds32_indirect_call_referenced_p): New.
5104         (nds32_symbol_binds_local_p): Delete.
5105         (nds32_long_call_p): Modify.
5106         * config/nds32/nds32-opts.h (nds32_ict_model_type): New enum type.
5107         * config/nds32/nds32-protos.h
5108         (symbolic_reference_mentioned_p): Declare.
5109         (nds32_legitimize_ict_address): Declare.
5110         (nds32_expand_ict_move): Declare.
5111         (nds32_indirect_call_referenced_p): Declare.
5112         * config/nds32/nds32-relax-opt.c (nds32_ict_const_p): New.
5113         (nds32_relax_group): Use nds32_ict_const_p as condition.
5114         * config/nds32/nds32.c (nds32_attribute_table): Add "indirect_call".
5115         (nds32_asm_file_start): Output ict_model directive in asm code.
5116         (nds32_legitimate_address_p): Consider indirect call.
5117         (nds32_print_operand): Consider indirect call.
5118         (nds32_print_operand_address): Consider indirect call.
5119         (nds32_insert_attributes): Handle "indirect_call" attribute.
5120         (TARGET_LEGITIMATE_ADDRESS_P): Define.
5121         (TARGET_LEGITIMATE_CONSTANT_P): Define.
5122         (TARGET_CANNOT_FORCE_CONST_MEM): Define.
5123         (TARGET_DELEGITIMIZE_ADDRESS): Define.
5124         (TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA): Define.
5125         * config/nds32/nds32.h (SYMBOLIC_CONST_P): Define.
5126         (TARGET_ICT_MODEL_SMALL): Define.
5127         (TARGET_ICT_MODEL_LARGE): Define.
5128         * config/nds32/nds32.md (movsi): Consider ict model.
5129         (call, call_value): Consider ict model.
5130         (sibcall, sibcall_value): Consider ict model.
5131         * config/nds32/nds32.opt (mict-model): New option.
5132         * config/nds32/predicates.md (nds32_symbolic_operand): Consider ict
5133         model.
5135 2018-05-18  Kito Cheng  <kito.cheng@gmail.com>
5136             Monk Chiang  <sh.chiang04@gmail.com>
5137             Jim Wilson <jimw@sifive.com>
5139         * common/config/riscv/riscv-common.c (riscv_parse_arch_string):
5140         Add support to parse rv32e*.  Clear MASK_RVE for rv32i and rv64i.
5141         * config.gcc (riscv*-*-*): Add support for rv32e* and ilp32e.
5142         * config/riscv/riscv-c.c (riscv_cpu_cpp_builtins): Define
5143         __riscv_32e when TARGET_RVE.  Handle ABI_ILP32E as soft-float ABI.
5144         * config/riscv/riscv-opts.h (riscv_abi_type): Add ABI_ILP32E.
5145         * config/riscv/riscv.c (riscv_compute_frame_info): When TARGET_RVE,
5146         compute save_libcall_adjustment properly.
5147         (riscv_option_override): Call error if TARGET_RVE and not ABI_ILP32E.
5148         (riscv_conditional_register_usage): Handle TARGET_RVE and ABI_ILP32E.
5149         * config/riscv/riscv.h (UNITS_PER_FP_ARG): Handle ABI_ILP32E.
5150         (STACK_BOUNDARY, ABI_STACK_BOUNDARY): Handle TARGET_RVE.
5151         (GP_REG_LAST, MAX_ARGS_IN_REGISTERS): Likewise.
5152         (ABI_SPEC): Handle mabi=ilp32e.
5153         * config/riscv/riscv.opt (abi_type): Add ABI_ILP32E.
5154         (RVE): Add RVE mask.
5155         * doc/invoke.texi (RISC-V options) <-mabi>: Add ilp32e info.
5156         <-march>: Add rv32e as an example.
5158 2018-05-18  Marc Glisse  <marc.glisse@inria.fr>
5160         PR c++/82899
5161         * tree-ssa-structalias.c (create_variable_info_for_1): Extra argument.
5162         (intra_create_variable_infos): Handle C++ constructors.
5164 2018-05-18  Martin Liska  <mliska@suse.cz>
5166         * passes.def: Remove a redundant pass.
5168 2018-05-18  Eric Botcazou  <ebotcazou@adacore.com>
5170         PR bootstrap/85838
5171         * config/sparc/sparc.c (sparc_expand_builtin): Always initialize op[0].
5173 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5175         * config/arm/arm-cpus.in (armv3m, mode32): Delete features.
5176         (ARMv4): Update.
5177         (ARMv2, ARMv3, ARMv3m): Delete fgroups.
5178         (ARMv6m): Update.
5179         (armv2, armv2a, armv3, armv3m): Delete architectures.
5180         (arm2, arm250, arm3, arm6, arm60, arm600, arm610, arm620,
5181         arm7, arm7d, arm7di, arm70, arm700, arm700i, arm710, arm720,
5182         arm710c, arm7100, arm7500, arm7500fe, arm7m, arm7dm, arm7dmi):
5183         Delete cpus.
5184         * config/arm/arm.md (maddsidi4): Remove check for arm_arch3m.
5185         (*mulsidi3adddi): Likewise.
5186         (mulsidi3): Likewise.
5187         (*mulsidi3_nov6): Likewise.
5188         (umulsidi3): Likewise.
5189         (umulsidi3_nov6): Likewise.
5190         (umaddsidi4): Likewise.
5191         (*umulsidi3adddi): Likewise.
5192         (smulsi3_highpart): Likewise.
5193         (*smulsi3_highpart_nov6): Likewise.
5194         (umulsi3_highpart): Likewise.
5195         (*umulsi3_highpart_nov6): Likewise.
5196         * config/arm/arm.h (arm_arch3m): Delete.
5197         * config/arm/arm.c (arm_arch3m): Delete.
5198         (arm_option_override_internal): Update armv3-related comment.
5199         (arm_configure_build_target): Delete use of isa_bit_mode32.
5200         (arm_option_reconfigure_globals): Delete set of arm_ach3m.
5201         (arm_rtx_costs_internal): Delete check of arm_arch3m.
5202         * config/arm/arm-fixed.md (mulsq3): Delete check for arm_arch3m.
5203         (mulsa3): Likewise.
5204         (mulusa3): Likewise.
5205         * config/arm/arm-protos.h (arm_arch3m): Delete.
5206         * config/arm/arm-tables.opt: Regenerate.
5207         * config/arm/arm-tune.md: Likewise.
5208         * config/arm/t-arm-elf (all_early_nofp): Delete mentions of
5209         deleted architectures.
5211 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5213         * config/arm/arm-cpus.in (armv5, armv5e): Delete features.
5214         (armv5t, armv5te): New features.
5215         (ARMv5, ARMv5e): Delete fgroups.
5216         (ARMv5t, ARMv5te): Adjust for above changes.
5217         (ARMv6m): Likewise.
5218         (armv5, armv5e): Delete arches.
5219         * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of
5220         arm_arch5.
5221         (*call_reg_arm): Likewise.
5222         (*call_value_reg_armv5): Likewise.
5223         (*call_value_reg_arm): Likewise.
5224         (*call_symbol): Likewise.
5225         (*call_value_symbol): Likewise.
5226         (*sibcall_insn): Likewise.
5227         (*sibcall_value_insn): Likewise.
5228         (clzsi2): Likewise.
5229         (prefetch): Likewise.
5230         (define_split and define_peephole2 dependent on arm_arch5):
5231         Likewise.
5232         * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of
5233         arm_arch5e.
5234         (TARGET_ARM_QBIT): Likewise.
5235         (TARGET_DSP_MULTIPLY): Likewise.
5236         (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E.
5237         (arm_arch5, arm_arch5e): Delete.
5238         (arm_arch5t, arm_arch5te): Declare.
5239         * config/arm/arm.c (arm_arch5, arm_arch5e): Delete.
5240         (arm_arch5t): Declare.
5241         (arm_option_reconfigure_globals): Update for the above.
5242         (arm_options_perform_arch_sanity_checks): Update comment, replace
5243         use of arm_arch5 with arm_arch5t.
5244         (use_return_insn): Likewise.
5245         (arm_emit_call_insn): Likewise.
5246         (output_return_instruction): Likewise.
5247         (arm_final_prescan_insn): Likewise.
5248         (arm_coproc_builtin_available): Likewise.
5249         * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and
5250         arm_arch5e with arm_arch5t and arm_arch5te.
5251         * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete.
5252         (arm_arch5t, arm_arch5te): Declare.
5253         * config/arm/arm-tables.opt: Regenerate.
5254         * config/arm/t-arm-elf: Remove references to armv5, armv5e.
5255         * config/arm/t-multilib: Likewise.
5256         * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t
5257         instead of arm_arch5.
5258         (*call_reg_thumb1): Likewise.
5259         (*call_value_reg_thumb1_v5): Likewise.
5260         (*call_value_reg_thumb1): Likewise.
5261         * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now
5262         unreachable path.
5263         * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e.
5265 2018-05-18  Martin Liska  <mliska@suse.cz>
5267         PR gcov-profile/84846
5268         * doc/gcov.texi: Document -t option of gcov tool.
5270 2018-05-18  Martin Liska  <mliska@suse.cz>
5272         PR gcov-profile/84846
5273         * gcov.c (print_usage): Add new -t option.
5274         (process_args): Handle the option.
5275         (generate_results): Use stdout as output when requested by
5276         the option.
5278 2018-05-18  Martin Liska  <mliska@suse.cz>
5280         PR gcov-profile/84846
5281         * coverage.c (coverage_init): Write PWD to .gcno file.
5282         * doc/gcov.texi: Document how working directory is printed.
5283         * gcov-dump.c (dump_gcov_file): Print PWD.
5284         * gcov.c (output_intermediate_file): Likewise.
5285         (read_graph_file): Read PWD string.
5286         (output_lines): Print PWD.
5288 2018-05-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
5290         PR middle-end/85817
5291         * ipa-pure-const.c (malloc_candidate_p): Remove the check integer_zerop
5292         for retval and return false if all args to phi are zero.
5294 2018-05-18  Richard Biener  <rguenther@suse.de>
5296         * gimple-ssa-evrp.c (class evrp_folder): Add simplify_stmt_using_ranges
5297         method.
5298         (evrp_dom_walker::before_dom_children): Call it.
5300 2018-05-18  Richard Biener  <rguenther@suse.de>
5302         * tree-dfa.c (get_ref_base_and_extent): Use range-info to refine
5303         results when processing array refs with variable index.
5305 2018-05-18  Toon Moene  <toon@moene.org>
5307         * doc/invoke.texi: Move -floop-unroll-and-jam documentation
5308         directly after that of -floop-interchange. Indicate that both
5309         options are enabled by default when specifying -O3.
5311 2018-05-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5313         * config/aarch64/aarch64-simd.md (vec_set<mode>): Use VALL_F16 mode
5314         iterator.  Delete separate integer-mode vec_set<mode> expander.
5315         (aarch64_simd_vec_setv2di): Delete.
5316         (vec_setv2di): Delete.
5317         (aarch64_simd_vec_set<mode>): Delete all other patterns with that name.
5318         Use VALL_F16 mode iterator.  Add LD1 alternative and use vwcore for
5319         the "w, r" alternative.
5321 2018-05-18  Martin Liska  <mliska@suse.cz>
5323         * passes.def: Add pass_lower_switch and pass_lower_switch_O0.
5324         * tree-pass.h (make_pass_lower_switch_O0): New function.
5325         * tree-switch-conversion.c (node_has_low_bound): Remove.
5326         (node_has_high_bound): Likewise.
5327         (node_is_bounded): Likewise.
5328         (class pass_lower_switch): Make it a template type and create
5329         two instances.
5330         (pass_lower_switch::execute): Add template argument.
5331         (make_pass_lower_switch): New function.
5332         (make_pass_lower_switch_O0): New function.
5333         (do_jump_if_equal): Remove.
5334         (emit_case_nodes): Simplify to just handle all 3 cases and leave
5335         all the hard work to tree optimization passes.
5337 2018-05-18  Martin Liska  <mliska@suse.cz>
5339         * dbgcnt.c (limit_low): Renamed from limit.
5340         (limit_high): New variable.
5341         (dbg_cnt_is_enabled): Check for upper limit.
5342         (dbg_cnt): Adjust dumping.
5343         (dbg_cnt_set_limit_by_index): Add new argument for high
5344         value.
5345         (dbg_cnt_set_limit_by_name): Likewise.
5346         (dbg_cnt_process_single_pair): Parse new format.
5347         (dbg_cnt_process_opt): Use strtok.
5348         (dbg_cnt_list_all_counters): Remove 'value' and add
5349         'limit_high'.
5350         * doc/invoke.texi: Document changes.
5352 2018-05-18  Richard Sandiford  <richard.sandiford@linaro.org>
5354         * doc/sourcebuild.texi (scalar_all_fma): Document.
5355         * tree.def (FMA_EXPR): Delete.
5356         * internal-fn.def (FMA, FMS, FNMA, FNMS): New internal functions.
5357         * internal-fn.c (ternary_direct): New macro.
5358         (expand_ternary_optab_fn): Likewise.
5359         (direct_ternary_optab_supported_p): Likewise.
5360         * Makefile.in (build/genmatch.o): Depend on case-fn-macros.h.
5361         * builtins.c (fold_builtin_fma): Delete.
5362         (fold_builtin_3): Don't call it.
5363         * cfgexpand.c (expand_debug_expr): Remove FMA_EXPR handling.
5364         * expr.c (expand_expr_real_2): Likewise.
5365         * fold-const.c (operand_equal_p): Likewise.
5366         (fold_ternary_loc): Likewise.
5367         * gimple-pretty-print.c (dump_ternary_rhs): Likewise.
5368         * gimple.c (DEFTREECODE): Likewise.
5369         * gimplify.c (gimplify_expr): Likewise.
5370         * optabs-tree.c (optab_for_tree_code): Likewise.
5371         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
5372         * tree-eh.c (operation_could_trap_p): Likewise.
5373         (stmt_could_throw_1_p): Likewise.
5374         * tree-inline.c (estimate_operator_cost): Likewise.
5375         * tree-pretty-print.c (dump_generic_node): Likewise.
5376         (op_code_prio): Likewise.
5377         * tree-ssa-loop-im.c (stmt_cost): Likewise.
5378         * tree-ssa-operands.c (get_expr_operands): Likewise.
5379         * tree.c (commutative_ternary_tree_code, add_expr): Likewise.
5380         * fold-const-call.h (fold_fma): Delete.
5381         * fold-const-call.c (fold_const_call_ssss): Handle CFN_FMS,
5382         CFN_FNMA and CFN_FNMS.
5383         (fold_fma): Delete.
5384         * genmatch.c (combined_fn): New enum.
5385         (commutative_ternary_tree_code): Remove FMA_EXPR handling.
5386         (commutative_op): New function.
5387         (commutate): Use it.  Handle more than 2 operands.
5388         (dt_operand::gen_gimple_expr): Use commutative_op.
5389         (parser::parse_expr): Allow :c to be used with non-binary
5390         operators if the commutative operand is known.
5391         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Handle
5392         CFN_FMS, CFN_FNMA and CFN_FNMS.
5393         (backprop::process_assign_use): Remove FMA_EXPR handling.
5394         * hsa-gen.c (gen_hsa_insns_for_operation_assignment): Likewise.
5395         (gen_hsa_fma): New function.
5396         (gen_hsa_insn_for_internal_fn_call): Use it for IFN_FMA, IFN_FMS,
5397         IFN_FNMA and IFN_FNMS.
5398         * match.pd: Add folds for IFN_FMS, IFN_FNMA and IFN_FNMS.
5399         * gimple-fold.h (follow_all_ssa_edges): Declare.
5400         * gimple-fold.c (follow_all_ssa_edges): New function.
5401         * tree-ssa-math-opts.c (convert_mult_to_fma_1): Use the
5402         gimple_build interface and use follow_all_ssa_edges to fold the result.
5403         (convert_mult_to_fma): Use direct_internal_fn_suppoerted_p
5404         instead of checking for optabs directly.
5405         * config/i386/i386.c (ix86_add_stmt_cost): Recognize FMAs as calls
5406         rather than FMA_EXPRs.
5407         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Create a
5408         call to IFN_FMA instead of an FMA_EXPR.
5410 2018-05-17  Jim Wilson  <jimw@sifive.com>
5412         * expr.c (do_tablejump): When converting index to Pmode, if we have a
5413         sign extended promoted subreg, and the range does not have the sign bit
5414         set, then do a sign extend.
5416         * config/riscv/riscv.c (riscv_extend_comparands): In unsigned QImode
5417         test, check for sign extended subreg and/or constant operands, and
5418         do a sign extend in that case.
5420 2018-05-17  Steve Ellcey  <sellcey@cavium.com>
5422         * config/aarch64/thunderx2t99.md (thunderx2t99_ls_both): Delete.
5423         (thunderx2t99_multiple): Delete psuedo-units from used cpus.
5424         Add untyped.
5425         (thunderx2t99_alu_shift): Remove alu_shift_reg, alus_shift_reg.
5426         Change logics_shift_reg to logics_shift_imm.
5427         (thunderx2t99_fp_loadpair_basic): Delete.
5428         (thunderx2t99_fp_storepair_basic): Delete.
5429         (thunderx2t99_asimd_int): Add neon_sub and neon_sub_q types.
5430         (thunderx2t99_asimd_polynomial): Delete.
5431         (thunderx2t99_asimd_fp_simple): Add neon_fp_mul_s_scalar_q
5432         and neon_fp_mul_d_scalar_q.
5433         (thunderx2t99_asimd_fp_conv): Add *int_to_fp* types.
5434         (thunderx2t99_asimd_misc): Delete neon_dup and neon_dup_q.
5435         (thunderx2t99_asimd_recip_step): Add missing *sqrt* types.
5436         (thunderx2t99_asimd_lut): Add missing tbl types.
5437         (thunderx2t99_asimd_ext): Delete.
5438         (thunderx2t99_asimd_load1_1_mult): Delete.
5439         (thunderx2t99_asimd_load1_2_mult): Delete.
5440         (thunderx2t99_asimd_load1_ldp): New.
5441         (thunderx2t99_asimd_load1): New.
5442         (thunderx2t99_asimd_load2): Add missing *load2* types.
5443         (thunderx2t99_asimd_load3): New.
5444         (thunderx2t99_asimd_load4): New.
5445         (thunderx2t99_asimd_store1_1_mult): Delete.
5446         (thunderx2t99_asimd_store1_2_mult): Delete.
5447         (thunderx2t99_asimd_store2_mult): Delete.
5448         (thunderx2t99_asimd_store2_onelane): Delete.
5449         (thunderx2t99_asimd_store_stp): New.
5450         (thunderx2t99_asimd_store1): New.
5451         (thunderx2t99_asimd_store2): New.
5452         (thunderx2t99_asimd_store3): New.
5453         (thunderx2t99_asimd_store4): New.
5455 2018-05-17  Jerome Lambourg  <lambourg@adacore.com>
5457         * config/arm/arm_cmse.h (cmse_nsfptr_create, cmse_is_nsfptr): Remove
5458         #include <stdint.h>.  Replace intptr_t with __INTPTR_TYPE__.
5460 2018-05-17  Pat Haugen  <pthaugen@us.ibm.com>
5461             Segher Boessenkool  <segher@kernel.crashing.org>
5463         PR target/85698
5464         * config/rs6000/rs6000.c (rs6000_output_move_128bit): Check dest
5465         operand.
5467 2018-05-17  Richard Biener  <rguenther@suse.de>
5469         * tree-ssa-dse.c (dse_classify_store): Fix iterator increment
5470         for pruning loop and prune defs feeding only already visited PHIs.
5472 2018-05-17  Richard Biener  <rguenther@suse.de>
5474         * tree-ssa-sccvn.c (vn_reference_lookup_3): Improve memset handling.
5476 2018-05-17  Bin Cheng  <bin.cheng@arm.com>
5477             Richard Biener  <rguenther@suse.de>
5479         PR tree-optimization/85793
5480         * tree-vect-stmts.c (vectorizable_load): Handle 1 element-wise load
5481         for VMAT_ELEMENTWISE.
5483 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
5485         * internal-fn.h (lookup_internal_fn): Declare
5486         * internal-fn.c (lookup_internal_fn): New function.
5487         * gimple.c (gimple_build_call_from_tree): Handle calls to
5488         internal functions.
5489         * gimple-pretty-print.c (dump_gimple_call): Print "." before
5490         internal function names.
5491         * tree-pretty-print.c (dump_generic_node): Likewise.
5492         * tree-ssa-scopedtables.c (expr_hash_elt::print): Likewise.
5494 2018-05-17  Richard Sandiford  <richard.sandiford@linaro.org>
5496         * gimple-fold.h (gimple_build): Make the function forms take
5497         combined_fn rather than built_in_function.
5498         (gimple_simplify): Likewise.
5499         * gimple-match-head.c (gimple_simplify): Likewise.
5500         * gimple-fold.c (gimple_build): Likewise.
5501         * tree-vect-loop.c (get_initial_def_for_reduction): Use gimple_build
5502         rather than gimple_build_call_internal.
5503         (get_initial_defs_for_reduction): Likewise.
5504         (vect_create_epilog_for_reduction): Likewise.
5505         (vectorizable_live_operation): Likewise.
5507 2018-05-17  Martin Liska  <mliska@suse.cz>
5509         * gimple-ssa-sprintf.c (format_directive): Do not use
5510         space in between 'G_' and '('.
5512 2018-05-17  Jakub Jelinek  <jakub@redhat.com>
5514         PR target/85323
5515         * config/i386/i386.c (ix86_fold_builtin): Handle masked shifts
5516         even if the mask is not all ones.
5518         PR target/85323
5519         * config/i386/i386.c (ix86_fold_builtin): Fold shift builtins by
5520         vector.
5521         (ix86_gimple_fold_builtin): Likewise.
5523         PR target/85323
5524         * config/i386/i386.c: Include tree-vector-builder.h.
5525         (ix86_vector_shift_count): New function.
5526         (ix86_fold_builtin): Fold shift builtins by scalar count.
5527         (ix86_gimple_fold_builtin): Likewise.
5529         * config/i386/avx512fintrin.h (_mm512_set_epi16, _mm512_set_epi8,
5530         _mm512_setzero): New intrinsics.
5532 2018-05-17  James Greenhalgh  <james.greenhalgh@arm.com>
5533             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5535         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify
5536         code generation for cases where splatting a value is not useful.
5537         * simplify-rtx.c (simplify_ternary_operation): Simplify
5538         vec_merge across a vec_duplicate and a paradoxical subreg forming
5539         a vector mode to a vec_concat.
5541 2018-05-17  Olga Makhotina  <olga.makhotina@intel.com>
5543         * config.gcc: Support "goldmont-plus".
5544         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
5545         "goldmont-plus".
5546         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
5547         PROCESSOR_GOLDMONT_PLUS.
5548         * config/i386/i386.c (m_GOLDMONT_PLUS): Define.
5549         (processor_target_table): Add "goldmont-plus".
5550         (PTA_GOLDMONT_PLUS): Define.
5551         (ix86_lea_outperforms): Add TARGET_GOLDMONT_PLUS.
5552         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT_PLUS.
5553         (fold_builtin_cpu): Add M_INTEL_GOLDMONT_PLUS.
5554         (fold_builtin_cpu): Add "goldmont-plus".
5555         (ix86_add_stmt_cost): Add TARGET_GOLDMONT_PLUS.
5556         (ix86_option_override_internal): Add "goldmont-plus".
5557         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT_PLUS.
5558         (processor_type): Add PROCESSOR_GOLDMONT_PLUS.
5559         * config/i386/x86-tune.def: Add m_GOLDMONT_PLUS.
5560         * doc/invoke.texi: Add goldmont-plus as x86 -march=/-mtune= CPU type.
5562 2018-05-17  Richard Biener  <rguenther@suse.de>
5564         PR tree-optimization/85757
5565         * tree-ssa-dse.c (dse_classify_store): Record a PHI def and
5566         remove defs that only feed that PHI from further processing.
5568 2018-05-16  Jim Wilson  <jimw@sifive.com>
5570         * config/riscv/riscv.md (<optab>si3_mask, <optab>si3_mask_1): Prepend
5571         asterisk to name.
5572         (<optab>di3_mask, <optab>di3_mask_1): Likewise.
5574 2018-05-16  Mark Wielaard  <mark@klomp.org>
5576         * dwarf2out.c (count_index_strings): New function.
5577         (output_indirect_strings): Call count_index_strings and generate
5578         header for dwarf_version >= 5.
5580 2018-05-16  Mark Wielaard  <mark@klomp.org>
5582         * dwarf2out.c (dwarf_FORM): New function.
5583         (set_indirect_string): Use dwarf_FORM.
5584         (reset_indirect_string): Likewise.
5585         (size_of_die): Likewise.
5586         (value_format): Likewise.
5587         (output_die): Likewise.
5588         (add_skeleton_AT_string): Likewise.
5589         (output_macinfo_op): Likewise.
5590         (index_string): Likewise.
5591         (output_index_string_offset): Likewise.
5592         (output_index_string): Likewise.
5593         (count_index_strings): Likewise.
5595 2018-05-16  Carl Love  <cel@us.ibm.com>
5597         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
5598         dcbt and dcbtstt with TH=16 if operands[2] is 0 and Power 8 or newer.
5600 2018-05-16  Martin Jambor  <mjambor@suse.cz>
5602         * ipa-prop.c (ipa_free_all_edge_args): Remove.
5603         * ipa-prop.h (ipa_free_all_edge_args): Likewise.
5605 2018-05-16  Wilco Dijkstra  <wdijkstr@arm.com>
5607         * config/aarch64/aarch64.md (fma<mode>4): Change into expand pattern.
5608         (fnma<mode>4): Likewise.
5609         (fms<mode>4): Likewise.
5610         (fnms<mode>4): Likewise.
5611         (aarch64_fma<mode>4): Rename insn, reorder accumulator operand.
5612         (aarch64_fnma<mode>4): Likewise.
5613         (aarch64_fms<mode>4): Likewise.
5614         (aarch64_fnms<mode>4): Likewise.
5615         (aarch64_fnmadd<mode>4): Likewise.
5617 2018-05-16  Jason Merrill  <jason@redhat.com>
5619         * tree.c (warn_deprecated_use): Return bool.  Simplify logic.
5621 2018-05-16  Richard Biener  <rguenther@suse.de>
5623         * tree-vectorizer.h (struct stmt_info_for_cost): Add where member.
5624         (dump_stmt_cost): Declare.
5625         (add_stmt_cost): Dump cost we add.
5626         (add_stmt_costs): New function.
5627         (vect_model_simple_cost, vect_model_store_cost, vect_model_load_cost):
5628         No longer exported.
5629         (vect_analyze_stmt): Adjust prototype.
5630         (vectorizable_condition): Likewise.
5631         (vectorizable_live_operation): Likewise.
5632         (vectorizable_reduction): Likewise.
5633         (vectorizable_induction): Likewise.
5634         * tree-vect-loop.c (vect_analyze_loop_operations): Create local
5635         cost vector to pass to vectorizable_ and record afterwards.
5636         (vect_model_reduction_cost): Take cost vector argument and adjust.
5637         (vect_model_induction_cost): Likewise.
5638         (vectorizable_reduction): Likewise.
5639         (vectorizable_induction): Likewise.
5640         (vectorizable_live_operation): Likewise.
5641         * tree-vect-slp.c (vect_create_new_slp_node): Initialize
5642         SLP_TREE_NUMBER_OF_VEC_STMTS.
5643         (vect_analyze_slp_cost_1): Remove.
5644         (vect_analyze_slp_cost): Likewise.
5645         (vect_slp_analyze_node_operations): Take visited args and
5646         a target cost vector.  Avoid processing already visited stmt sets.
5647         (vect_slp_analyze_operations): Use a local cost vector to gather
5648         costs and register those of non-discarded instances.
5649         (vect_bb_vectorization_profitable_p): Use add_stmt_costs.
5650         (vect_schedule_slp_instance): Remove copying of
5651         SLP_TREE_NUMBER_OF_VEC_STMTS.  Instead assert that it is not
5652         zero.
5653         * tree-vect-stmts.c (record_stmt_cost): Remove path directly
5654         adding cost.  Record cost entry location.
5655         (vect_prologue_cost_for_slp_op): Function to compute cost of
5656         a constant or invariant generated for SLP vect in the prologue,
5657         split out from vect_analyze_slp_cost_1.
5658         (vect_model_simple_cost): Make static.  Adjust for SLP costing.
5659         (vect_model_promotion_demotion_cost): Likewise.
5660         (vect_model_store_cost): Likewise, make static.
5661         (vect_model_load_cost): Likewise.
5662         (vectorizable_bswap): Add cost vector arg and adjust.
5663         (vectorizable_call): Likewise.
5664         (vectorizable_simd_clone_call): Likewise.
5665         (vectorizable_conversion): Likewise.
5666         (vectorizable_assignment): Likewise.
5667         (vectorizable_shift): Likewise.
5668         (vectorizable_operation): Likewise.
5669         (vectorizable_store): Likewise.
5670         (vectorizable_load): Likewise.
5671         (vectorizable_condition): Likewise.
5672         (vectorizable_comparison): Likewise.
5673         (can_vectorize_live_stmts): Likewise.
5674         (vect_analyze_stmt): Likewise.
5675         (vect_transform_stmt): Adjust calls to vectorizable_*.
5676         * tree-vectorizer.c: Include gimple-pretty-print.h.
5677         (dump_stmt_cost): New function.
5679 2018-05-16  Richard Biener  <rguenther@suse.de>
5681         * params.def (PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE): New param.
5682         * doc/invoke.texi (dse-max-alias-queries-per-store): Document.
5683         * tree-ssa-dse.c: Include tree-ssa-loop.h.
5684         (check_name): New callback.
5685         (dse_classify_store): Track cycles via a visited bitmap of PHI
5686         defs and simplify handling of in-loop and across loop dead stores
5687         and properly fail for loop-variant refs.  Handle byte-tracking with
5688         multiple defs.  Use PARAM_DSE_MAX_ALIAS_QUERIES_PER_STORE for
5689         limiting the walk.
5691 2018-05-16  Richard Sandiford  <richard.sandiford@linaro.org>
5693         * tree-vectorizer.h (vect_get_vector_types_for_stmt): Declare.
5694         (vect_get_mask_type_for_stmt): Likewise.
5695         * tree-vect-slp.c (vect_two_operations_perm_ok_p): New function,
5696         split out from...
5697         (vect_build_slp_tree_1): ...here.  Use vect_get_vector_types_for_stmt
5698         to determine the statement's vector type and the vector type that
5699         should be used for calculating nunits.  Deal with cases in which
5700         the type has to be deferred.
5701         (vect_slp_analyze_node_operations): Use vect_get_vector_types_for_stmt
5702         and vect_get_mask_type_for_stmt to calculate STMT_VINFO_VECTYPE.
5703         * tree-vect-loop.c (vect_determine_vf_for_stmt_1)
5704         (vect_determine_vf_for_stmt): New functions, split out from...
5705         (vect_determine_vectorization_factor): ...here.
5706         * tree-vect-stmts.c (vect_get_vector_types_for_stmt)
5707         (vect_get_mask_type_for_stmt): New functions, split out from
5708         vect_determine_vectorization_factor.
5710 2018-05-16  Richard Biener  <rguenther@suse.de>
5712         * tree-cfg.c (verify_gimple_assign_ternary): Properly
5713         verify the [VEC_]COND_EXPR embedded comparison.
5715 2018-05-15  Martin Sebor  <msebor@redhat.com>
5717         PR tree-optimization/85753
5718         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Handle
5719         RECORD_TYPE in addition to ARRAY_TYPE.
5721 2018-05-15  Martin Sebor  <msebor@redhat.com>
5723         PR middle-end/85643
5724         * calls.c (get_attr_nonstring_decl): Handle MEM_REF.
5726 2018-05-15  Richard Biener  <rguenther@suse.de>
5728         * tree-ssa-dse.c (dse_classify_store): Remove use_stmt parameter,
5729         add by_clobber_p one.  Change algorithm to collect all defs
5730         representing uses we need to walk and try reducing them to
5731         a single one before failing.
5732         (dse_dom_walker::dse_optimize_stmt): Adjust.
5734 2018-05-13  Mark Wielaard  <mark@klomp.org>
5736         * dwarf2out.c (dwarf_OP): Handle DW_OP_addrx and DW_OP_constx.
5737         (size_of_loc_descr): Likewise.
5738         (output_loc_operands): Likewise.
5739         (output_loc_operands_raw): Likewise.
5740         (dw_addr_op): Use dwarf_OP () for DW_OP_constx and DW_OP_addrx.
5741         (resolve_addr_in_expr): Handle DW_OP_addrx and DW_OP_constx.
5742         (hash_loc_operands): Likewise.
5743         (compare_loc_operands): Likewise.
5745 2018-05-14  Mark Wielaard  <mark@klomp.org>
5747         * dwarf2out.c (count_index_addrs): New function.
5748         (dwarf2out_finish): Use count_index_addrs to calculate addrs_length.
5750 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
5752         PR tree-optimization/83648
5753         * ipa-pure-const.c (malloc_candidate_p): Allow function with NULL
5754         return value as malloc candidate.
5756 2018-05-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
5758         PR ipa/85734
5759         * ipa-pure-const.c (warn_function_malloc): Pass value of known_finite
5760         param as true in call to suggest_attribute.
5762 2018-05-14  Segher Boessenkool  <segher@kernel.crashing.org>
5764         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete @itemx for
5765         -mreadonly-in-sdata.
5767 2018-05-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
5769         * config/aarch64/aarch64-simd.md (*aarch64_crypto_aese_fused):
5770         New pattern.
5771         (aarch64_crypto_aesd_fused): Likewise.
5773 2018-05-14  Wilco Dijkstra  <wdijkstr@arm.com>
5775         * config/aarch64/aarch64.md (mov<mode>): Remove '*' in alternatives.
5776         (movsi_aarch64): Likewise.
5777         (load_pairsi): Likewise.
5778         (load_pairdi): Likewise.
5779         (store_pairsi): Likewise.
5780         (store_pairdi): Likewise.
5781         (load_pairsf): Likewise.
5782         (load_pairdf): Likewise.
5783         (store_pairsf): Likewise.
5784         (store_pairdf): Likewise.
5785         (zero_extend): Likewise.
5786         (trunc): Swap alternatives.
5787         (fcvt_target): Add '?' to prefer w over r.
5789 2018-05-14  Jakub Jelinek  <jakub@redhat.com>
5791         PR target/85756
5792         * config/i386/i386.md: Disallow non-commutative arithmetics in
5793         last twpeephole for mem {+,-,&,|,^}= x; mem != 0 after cmpelim
5794         optimization.  Use COMMUTATIVE_ARITH_P test rather than != MINUS
5795         in the peephole2 before it.
5797 2018-05-14  Sebastian Peryt  <sebastian.peryt@intel.com>
5799         * common/config/i386/i386-common.c (OPTION_MASK_ISA_CLDEMOTE_SET,
5800         OPTION_MASK_ISA_CLDEMOTE_UNSET): New defines.
5801         (ix86_handle_option): Handle -mcldemote.
5802         * config.gcc: New header.
5803         * config/i386/cldemoteintrin.h: New file.
5804         * config/i386/cpuid.h (bit_CLDEMOTE): New bit.
5805         * config/i386/driver-i386.c (host_detect_local_cpu): Detect
5806         -mcldemote.
5807         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
5808         OPTION_MASK_ISA_CLDEMOTE.
5809         * config/i386/i386.c (ix86_target_string): Add -mcldemote.
5810         (ix86_valid_target_attribute_inner_p): Ditto.
5811         (enum ix86_builtins): Add IX86_BUILTIN_CLDEMOTE.
5812         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_cldemote.
5813         (ix86_expand_builtin): Expand IX86_BUILTIN_CLDEMOTE.
5814         * config/i386/i386.h (TARGET_CLDEMOTE, TARGET_CLDEMOTE_P): New.
5815         * config/i386/i386.md (UNSPECV_CLDEMOTE): New.
5816         (cldemote): New.
5817         * config/i386/i386.opt: Add -mcldemote.
5818         * config/i386/x86intrin.h: New header.
5819         * doc/invoke.texi: Add -mcldemote.
5821 2018-05-14  Richard Biener  <rguenther@suse.de>
5823         * doc/match-and-simplify.texi: Adjust :s documentation.
5825 2018-05-14  Alexander Monakov  <amonakov@ispras.ru>
5827         * sort.cc (REORDER_23): Pass the type for the temporaries instead of
5828         intended memcpy size.
5829         (REORDER_45): Likewise.
5831 2018-05-13  Alexander Monakov  <amonakov@ispras.ru>
5833         * sort.cc: New file.
5834         * system.h [!CHECKING_P] (qsort): Redirect to gcc_qsort.
5835         * vec.c (qsort_chk): Use gcc_qsort.
5836         * Makefile.in (OBJS-libcommon): Add sort.o.
5837         (build/sort.o): New target.  Use it...
5838         (BUILD_RTL): ... here, and...
5839         (build/gencfn-macros): ... here, and...
5840         (build/genmatch): ... here.
5842 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
5843             Chung-Ju Wu  <jasonwucj@gmail.com>
5845         * config.gcc (nds32*-*-*): Check that n15 is valid to --with-cpu.
5846         * config/nds32/nds32-graywolf.md: New file.
5847         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_GRAYWOLF.
5848         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n15
5849         pipeline.
5850         * config/nds32/nds32-protos.h: More declarations for n15 pipeline.
5851         * config/nds32/nds32-utils.c: More implementations for n15 pipeline.
5852         * config/nds32/nds32.md (pipeline_model): Add graywolf.
5853         * config/nds32/nds32.opt (mcpu): Support n15 pipeline cpus.
5854         * config/nds32/pipelines.md: Include n15 settings.
5856 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
5857             Chung-Ju Wu  <jasonwucj@gmail.com>
5859         * config.gcc (nds32*-*-*): Check that n12/n13 are valid to --with-cpu.
5860         * config/nds32/nds32-n13.md: New file.
5861         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N12 and CPU_N13.
5862         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n12/n13
5863         pipeline.
5864         * config/nds32/nds32-protos.h: More declarations for n12/n13 pipeline.
5865         * config/nds32/nds32.md (pipeline_model): Add n13.
5866         * config/nds32/nds32.opt (mcpu): Support n12/n13 pipeline cpus.
5867         * config/nds32/pipelines.md: Include n13 settings.
5869 2018-05-13  Kito Cheng  <kito.cheng@gmail.com>
5870             Chung-Ju Wu  <jasonwucj@gmail.com>
5872         * config.gcc (nds32*-*-*): Check that n10/d10 are valid to --with-cpu.
5873         * config/nds32/nds32-n10.md: New file.
5874         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N10.
5875         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n10
5876         pipeline.
5877         * config/nds32/nds32-protos.h: More declarations for n10 pipeline.
5878         * config/nds32/nds32-utils.c: More implementations for n10 pipeline.
5879         * config/nds32/nds32.md (pipeline_model): Add n10.
5880         * config/nds32/nds32.opt (mcpu): Support n10 pipeline cpus.
5881         * config/nds32/pipelines.md: Include n10 settings.
5883 2018-05-13  Monk Chiang  <sh.chiang04@gmail.com>
5884             Kito Cheng  <kito.cheng@gmail.com>
5885             Chung-Ju Wu  <jasonwucj@gmail.com>
5887         * config.gcc (nds32be-*-*): Handle --with-ext-dsp.
5888         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
5889         Add enum values for DSP extension instructions.
5890         * config/nds32/constraints.md (Iu06, IU06, CVp5, CVs5, CVs2, CVhi):
5891         New constraints.
5892         * config/nds32/iterators.md (shifts, shiftrt, sat_plus, all_plus,
5893         sat_minus, all_minus, plus_minus, extend, sumax, sumin, sumin_max):
5894         New code iterators.
5895         (su, zs, uk, opcode, add_rsub, add_sub): New code attributes.
5896         * config/nds32/nds32-dspext.md: New file for DSP implementation.
5897         * config/nds32/nds32-intrinsic.c: Implementation of DSP extension.
5898         * config/nds32/nds32-intrinsic.md: Likewise.
5899         * config/nds32/nds32_intrinsic.h: Likewise.
5900         * config/nds32/nds32-md-auxiliary.c: Likewise.
5901         * config/nds32/nds32-memory-manipulation.c: Consider DSP extension.
5902         * config/nds32/nds32-predicates.c (const_vector_to_hwint): New.
5903         (nds32_valid_CVp5_p, nds32_valid_CVs5_p): New.
5904         (nds32_valid_CVs2_p, nds32_valid_CVhi_p): New.
5905         * config/nds32/nds32-protos.h: New declarations for DSP extension.
5906         * config/nds32/nds32-utils.c (extract_mac_non_acc_rtx): New case
5907         TYPE_DMAC in switch statement.
5908         * config/nds32/nds32.c: New checking and implementation for DSP
5909         extension instructions.
5910         * config/nds32/nds32.h: Likewise.
5911         * config/nds32/nds32.md: Likewise.
5912         * config/nds32/nds32.opt (mhw-abs, mext-dsp): New options.
5913         * config/nds32/predicates.md: Implement new predicates for DSP
5914         extension.
5916 2018-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
5918         * config/rs6000/rs6000.md (mov<mode>_softfloat, FMOVE32):
5919         Reformat alternatives and attributes so it is easier to identify
5920         which constraints/attributes go with which instruction.
5921         (mov<mode>_hardfloat32, FMOVE64): Likewise.
5922         (mov<mode>_softfloat32, FMOVE64): Likewise.
5923         (mov<mode>_hardfloat64, FMOVE64): Likewise.
5924         (mov<mode>_softfloat64, FMOVE64): Likewise.
5926 2018-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
5928         * doc/extend.texi (PowerPC Built-in Functions): Rename this
5929         subsection.
5930         (Basic PowerPC Built-in Functions): The new name of the
5931         subsection previously known as "PowerPC Built-in Functions".
5932         (Basic PowerPC Built-in Functions Available on all Configurations):
5933         New subsubsection.
5934         (Basic PowerPC Built-in Functions Available on ISA 2.05): Likewise.
5935         (Basic PowerPC Built-in Functions Available on ISA 2.06): Likewise.
5936         (Basic PowerPC Built-in Functions Available on ISA 2.07): Likewise.
5937         (Basic PowerPC Built-in Functions Available on ISA 3.0): Likewise.
5939 2018-05-11  Martin Jambor  <mjambor@suse.cz>
5941         PR ipa/85655
5942         * ipa-cp.c (intersect_with_plats): Check that the lattice contains
5943         single const.
5945 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
5947         PR target/85733
5948         * config/arm/arm-cpus.in (fgroup ARMv6m): Add be8 feature.
5950 2018-05-11  Sebastian Peryt  <sebastian.peryt@intel.com>
5952         * common/config/i386/i386-common.c (OPTION_MASK_ISA_WAITPKG_SET,
5953         OPTION_MASK_ISA_WAITPKG_UNSET): New defines.
5954         (ix86_handle_option): Handle -mwaitpkg.
5955         * config.gcc: New header.
5956         * config/i386/cpuid.h (bit_WAITPKG): New bit.
5957         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mwaitpkg.
5958         * config/i386/i386-builtin-types.def ((UINT8, UNSIGNED, UINT64)): New
5959         function type.
5960         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
5961         OPTION_MASK_ISA_WAITPKG.
5962         * config/i386/i386.c (ix86_target_string): Add -mwaitpkg.
5963         (ix86_option_override_internal): Add PTA_WAITPKG.
5964         (ix86_valid_target_attribute_inner_p): Add -mwaitpkg.
5965         (enum ix86_builtins): Add IX86_BUILTIN_UMONITOR, IX86_BUILTIN_UMWAIT,
5966         IX86_BUILTIN_TPAUSE.
5967         (ix86_init_mmx_sse_builtins): Define __builtin_ia32_umonitor,
5968         __builtin_ia32_umwait and __builtin_ia32_tpause.
5969         (ix86_expand_builtin): Expand IX86_BUILTIN_UMONITOR,
5970         IX86_BUILTIN_UMWAIT, IX86_BUILTIN_TPAUSE.
5971         * config/i386/i386.h (TARGET_WAITPKG, TARGET_WAITPKG_P): New.
5972         * config/i386/i386.md (UNSPECV_UMWAIT, UNSPECV_UMONITOR,
5973         UNSPECV_TPAUSE): New.
5974         (umwait, umwait_rex64, umonitor_<mode>, tpause, tpause_rex64): New.
5975         * config/i386/i386.opt: Add -mwaitpkg.
5976         * config/i386/waitpkgintrin.h: New file.
5977         * config/i386/x86intrin.h: New header.
5978         * doc/invoke.texi: Add -mwaitpkg.
5980 2018-05-11  Richard Earnshaw  <rearnsha@arm.com>
5982         PR target/85606
5983         * config/arm/arm-cpus.in: Add comment that ARMv6-m and ARMv6S-m are now
5984         equivalent.
5985         (cortex-m0): Use armv6s-m isa.
5986         (cortex-m0plus): Likewise.
5987         (cortex-m1): Likewise.
5988         (cortex-m0.small-multiply): Likewise.
5989         (cortex-m0plus.small-multiply): Likewise.
5990         (cortex-m1.small-multiply): Likewise.
5992 2018-05-11  Allan Sandfeld Jensen  <allan.jensen@qt.io>
5993             Jakub Jelinek  <jakub@redhat.com>
5995         PR tree-optimization/85692
5996         * tree-ssa-forwprop.c (simplify_vector_constructor): Try two
5997         source permute as well.
5999 2018-05-11  Martin Liska  <mliska@suse.cz>
6001         PR sanitizer/85556
6002         * doc/extend.texi: Document LLVM style format for no_sanitize
6003         attribute.
6005 2018-05-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
6007         * config/rs6000/rs6000.c (mode_supports_dq_form): Rename
6008         mode_supports_vsx_dform_quad to mode_supports_dq_form.
6009         (mode_supports_vsx_dform_quad): Likewise.
6010         (mode_supports_vmx_dform): Move these functions to be next to the
6011         other mode_supports functions.
6012         (mode_supports_dq_form): Likewise.
6013         (quad_address_p): Change calls of mode_supports_vsx_dform_quad to
6014         mode_supports_dq_form.
6015         (reg_offset_addressing_ok_p): Likewise.
6016         (offsettable_ok_by_alignment): Likewise.
6017         (rs6000_legitimate_offset_address_p): Likewise.
6018         (legitimate_lo_sum_address_p): Likewise.
6019         (rs6000_legitimize_address): Likewise.
6020         (rs6000_legitimize_reload_address): Likewise.
6021         (rs6000_secondary_reload_inner): Likewise.
6022         (rs6000_preferred_reload_class): Likewise.
6023         (rs6000_output_move_128bit): Likewise.
6025 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
6027         * config/i386/i386.c (ix86_expand_builtin) <case IX86_BUILTIN_RDPID>:
6028         Generate SImode target register for null target.
6029         <case IX86_BUILTIN_XGETBV>: Ditto.
6030         <case IX86_BUILTIN_XSETBV>: Optimize LSHIFTRT generation.
6031         * config/i386/xsaveintrin.h (_xgetbv): Add missing return.
6033 2018-05-10  Carl Love  <cel@us.ibm.com>
6035         * config/rs6000/rs6000.md (prefetch): Generate ISA 2.06 instructions
6036         dcbtt and dcbtstt if operands[2] is 0.
6038 2018-05-10  Uros Bizjak  <ubizjak@gmail.com>
6040         PR target/85693
6041         * config/i386/sse.md (usadv64qi): New expander.
6043 2018-05-10  Segher Boessenkool  <segher@kernel.crashing.org>
6045         * config/rs6000/altivec.md (altivec_vmrghb, altivec_vmrghh,
6046         altivec_vmrghw, altivec_vmrglb, altivec_vmrglh, altivec_vmrglw): Remove
6047         -maltivec=be support.
6048         (vec_widen_umult_even_v16qi, vec_widen_smult_even_v16qi,
6049         vec_widen_umult_even_v8hi, vec_widen_smult_even_v8hi,
6050         vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
6051         vec_widen_umult_odd_v16qi, vec_widen_smult_odd_v16qi,
6052         vec_widen_umult_odd_v8hi, vec_widen_smult_odd_v8hi,
6053         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si, altivec_vpkpx,
6054         altivec_vpks<VI_char>ss, altivec_vpks<VI_char>us,
6055         altivec_vpku<VI_char>us, altivec_vpku<VI_char>um, altivec_vsum2sws,
6056         altivec_vsumsws): Adjust.
6057         (altivec_vspltb *altivec_vspltb_internal, altivec_vsplth,
6058         *altivec_vsplth_internal, altivec_vspltw, *altivec_vspltw_internal,
6059         altivec_vspltsf, *altivec_vspltsf_internal): Remove -maltivec=be
6060         support.
6061         (altivec_vperm_<mode>, altivec_vperm_<mode>_uns,
6062         altivec_vupkhs<VU_char>, altivec_vupkls<VU_char>, altivec_vupkhpx,
6063         altivec_vupklpx, altivec_lvsl, altivec_lvsr): Adjust.
6064         (altivec_lve<VI_char>x): Delete expand.
6065         (*altivec_lve<VI_char>x_internal): Rename to...
6066         (altivec_lve<VI_char>x): ... this.
6067         (altivec_lvxl_<mode>): Delete expand.
6068         (*altivec_lvxl_<mode>_internal): Rename to ...
6069         (altivec_lvxl_<mode>): ... this.
6070         (altivec_stvxl_<mode>): Delete expand.
6071         (*altivec_stvxl_<mode>_internal): Rename to ...
6072         (altivec_stvxl_<mode>): ... this.
6073         (altivec_stve<VI_char>x): Delete expand.
6074         (*altivec_stve<VI_char>x_internal): Rename to ...
6075         (altivec_stve<VI_char>x): ... this.
6076         (doublee<mode>2, unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2,
6077         doubleh<mode>2, unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2,
6078         reduc_plus_scal_<mode>): Adjust.
6079         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust
6080         comment.
6081         (rs6000_cpu_cpp_builtins): Adjust.
6082         (altivec_resolve_overloaded_builtin): Remove -maltivec=be support.
6083         * config/rs6000/rs6000-protos.h (altivec_expand_lvx_be,
6084         altivec_expand_stvx_be, altivec_expand_stvex_be): Delete.
6085         * config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
6086         -maltivec=be support.
6087         (rs6000_split_vec_extract_var): Adjust.
6088         (rs6000_split_v4si_init): Adjust.
6089         (swap_selector_for_mode): Delete.
6090         (altivec_expand_lvx_be, altivec_expand_stvx_be,
6091         altivec_expand_stvex_be): Delete.
6092         (altivec_expand_lv_builtin, altivec_expand_stv_builtin): Remove
6093         -maltivec=be support.
6094         (rs6000_gimple_fold_builtin): Ditto.
6095         (rs6000_generate_float2_double_code, rs6000_generate_float2_code):
6096         Adjust.
6097         * config/rs6000/rs6000.h (VECTOR_ELT_ORDER_BIG): Delete.
6098         (TARGET_DIRECT_MOVE_64BIT): Adjust.
6099         * config/rs6000/rs6000.md (split for extendsidi2 for vectors): Adjust.
6100         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Delete.
6101         * config/rs6000/vsx.md (floate<mode>, unsfloatev2di, floato<mode>,
6102         unsfloatov2di, vsignedo_v2df, vsignede_v2df, vunsignedo_v2df,
6103         vunsignede_v2df, vsx_extract_<mode>_p9, *vsx_extract_si,
6104         *vsx_extract_<mode>_p8, *vsx_extract_si_<uns>float_df,
6105         *vsx_extract_si_<uns>float_<mode>, vsx_set_<mode>_p9, vsx_set_v4sf_p9,
6106         *vsx_insert_extract_v4sf_p9, *vsx_insert_extract_v4sf_p9_2, and an
6107         anonymous split): Adjust.
6108         (vsx_mergel_<mode>, vsx_mergeh_<mode>): Remove -maltivec=be support.
6109         (vsx_xxspltd_<mode>, extract4b, insert4b): Adjust.
6111 2018-05-10  Eric Botcazou  <ebotcazou@adacore.com>
6113         * configure.ac (gcc_gxx_include_dir_add_sysroot): Set it to 1 only
6114         when --with-gxx-include-dir is also specified.
6115         * configure: Regenerate.
6117 2018-05-09  Jim Wilson  <jimw@sifive.com>
6119         PR target/84797
6120         * config.gcc (riscv*-*-*): Handle --with-multilib-list.
6121         * config/riscv/t-withmultilib: New.
6122         * config/riscv/withmultilib.h: New.
6123         * doc/install.texi: Document RISC-V --with-multilib-list support.
6125 2018-05-09  Richard Biener  <rguenther@suse.de>
6127         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Fill a cost
6128         vector.
6129         (vect_bb_vectorization_profitable_p): Adjust.  Compute
6130         actual scalar cost using the cost vector and the add_stmt_cost
6131         machinery.
6133 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
6135         PR rtl-optimization/85645
6136         * config/rs6000/rs6000.c (rs6000_emit_prologue_components): Put a SET
6137         in the REG_CFA_REGISTER note for LR, don't leave it empty.
6139 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
6141         PR rtl-optimization/85645
6142         * shrink-wrap.c (spread_components): Return a boolean saying if
6143         anything was changed.
6144         (try_shrink_wrapping_separate): Iterate spread_components until
6145         nothing changes anymore.
6147 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
6149         PR rtl-optimization/85645
6150         * regrename.c (build_def_use): Also kill the chains that include the
6151         destination of a REG_CFA_REGISTER note.
6153 2018-05-09  Segher Boessenkool  <segher@kernel.crashing.org>
6155         PR rtl-optimization/85645
6156         *  regcprop.c (copyprop_hardreg_forward_1): Don't propagate into an
6157         insn that has a REG_CFA_REGISTER note.
6159 2018-05-09  Richard Sandiford  <richard.sandiford@linaro.org>
6161         * cfgexpand.c (expand_clobber): New function.
6162         (expand_gimple_stmt_1): Use it.
6163         * tree-vect-stmts.c (vect_clobber_variable): New function,
6164         split out from...
6165         (vectorizable_simd_clone_call): ...here.
6166         (vectorizable_store): Emit a clobber either side of an
6167         IFN_STORE_LANES sequence.
6168         (vectorizable_load): Emit a clobber after an IFN_LOAD_LANES sequence.
6170 2018-05-09  Tom de Vries  <tom@codesourcery.com>
6172         PR target/85626
6173         * config/nvptx/nvptx.md (define_insn "trap", define_insn "trap_if_true")
6174         (define_insn "trap_if_false"): Add exit after trap.
6176 2018-05-09  Eric Botcazou  <ebotcazou@adacore.com>
6178         PR rtl-optimization/85638
6179         * bb-reorder.c: Include common/common-target.h.
6180         (create_forwarder_block): New function extracted from...
6181         (fix_up_crossing_landing_pad): ...here.  Rename into...
6182         (dw2_fix_up_crossing_landing_pad): ...this.
6183         (sjlj_fix_up_crossing_landing_pad): New function.
6184         (find_rarely_executed_basic_blocks_and_crossing_edges): In SJLJ mode,
6185         call sjlj_fix_up_crossing_landing_pad if there are incoming EH edges
6186         from both partitions and exit the loop after one iteration.
6188 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
6190         Revert:
6191         * doc/extend.texi (PowerPC Built-in Functions): Rename this
6192         subsection.
6193         (Basic PowerPC Built-in Functions): The new name of the
6194         subsection previously known as "PowerPC Built-in Functions".
6195         (Basic PowerPC Built-in Functions Available on all Configurations):
6196         New subsubsection.
6197         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
6198         subsubsection.
6199         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
6200         subsubsection.
6201         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
6202         subsubsection.
6203         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
6204         subsubsection.
6206 2018-05-08  Jim Wilson  <jimw@sifive.com>
6208         * config/riscv/linux.h (MUSL_ABI_SUFFIX): Delete unnecessary backslash.
6209         (LD_EMUL_SUFFIX): New.
6210         (LINK_SPEC): Use it.
6212 2018-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
6214         * doc/extend.texi (PowerPC Built-in Functions): Rename this
6215         subsection.
6216         (Basic PowerPC Built-in Functions): The new name of the
6217         subsection previously known as "PowerPC Built-in Functions".
6218         (Basic PowerPC Built-in Functions Available on all Configurations):
6219         New subsubsection.
6220         (Basic PowerPC Built-in Functions Available on ISA 2.05): New
6221         subsubsection.
6222         (Basic PowerPC Built-in Functions Available on ISA 2.06): New
6223         subsubsection.
6224         (Basic PowerPC Built-in Functions Available on ISA 2.07): New
6225         subsubsection.
6226         (Basic PowerPC Built-in Functions Available on ISA 3.0): New
6227         subsubsection.
6229 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
6231         PR target/85683
6232         * config/i386/i386.md: Add peepholes for mem {+,-,&,|,^}= x; mem != 0
6233         after cmpelim optimization.
6235 2018-05-08  Olga Makhotina  <olga.makhotina@intel.com>
6237         * config.gcc: Support "goldmont".
6238         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "goldmont".
6239         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
6240         PROCESSOR_GOLDMONT.
6241         * config/i386/i386.c (m_GOLDMONT): Define.
6242         (processor_target_table): Add "goldmont".
6243         (PTA_GOLDMONT): Define.
6244         (ix86_lea_outperforms): Add TARGET_GOLDMONT.
6245         (get_builtin_code_for_version): Handle PROCESSOR_GOLDMONT.
6246         (fold_builtin_cpu): Add M_INTEL_GOLDMONT.
6247         (fold_builtin_cpu): Add "goldmont".
6248         (ix86_add_stmt_cost): Add TARGET_GOLDMONT.
6249         (ix86_option_override_internal): Add "goldmont".
6250         * config/i386/i386.h (processor_costs): Define TARGET_GOLDMONT.
6251         (processor_type): Add PROCESSOR_GOLDMONT.
6252         * config/i386/i386.md: Add CPU "glm".
6253         * config/i386/glm.md: New file.
6254         * config/i386/x86-tune.def: Add m_GOLDMONT.
6255         * doc/invoke.texi: Add goldmont as x86 -march=/-mtune= CPU type.
6257 2018-05-08  Jakub Jelinek  <jakub@redhat.com>
6259         PR target/85572
6260         * config/i386/i386.c (ix86_expand_sse2_abs): Handle E_V2DImode and
6261         E_V4DImode.
6262         * config/i386/sse.md (abs<mode>2): Use VI_AVX2 iterator instead of
6263         VI1248_AVX512VL_AVX512BW.  Handle V2DImode and V4DImode if not
6264         TARGET_AVX512VL using ix86_expand_sse2_abs.  Formatting fixes.
6266         PR target/85317
6267         * config/i386/i386.c (ix86_fold_builtin): Handle
6268         IX86_BUILTIN_{,P}MOVMSK{PS,PD,B}{,128,256}.
6270         PR target/85480
6271         * config/i386/sse.md (ssequaterinsnmode): New mode attribute.
6272         (*<extract_type>_vinsert<shuffletype><extract_suf>_0): New pattern.
6274 2018-05-08  Richard Earnshaw  <rearnsha@arm.com>
6276         PR target/85658
6277         * config/arm/parsecpu.awk (check_cpu): Fix operator precedence.
6278         (check_arch): Likewise.
6279         (check_fpu): Return the result rather than printing it.
6280         (end arch): Fix operator precedence.
6281         (end cpu): Likewise.
6282         (END): Print the result from check_fpu.
6284 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
6285             Alan Hayward  <alan.hayward@arm.com>
6286             David Sherwood  <david.sherwood@arm.com>
6288         * config/aarch64/aarch64-sve.md (*pred_cmp<cmp_op><mode>_combine)
6289         (*pred_cmp<cmp_op><mode>, *fcm<cmp_op><mode>_and_combine)
6290         (*fcmuo<mode>_and_combine, *fcm<cmp_op><mode>_and)
6291         (*fcmuo<mode>_and): New patterns.
6293 2018-05-08  Richard Sandiford  <richard.sandiford@linaro.org>
6295         * config/aarch64/iterators.md (UNSPEC_COND_LO, UNSPEC_COND_LS)
6296         (UNSPEC_COND_HI, UNSPEC_COND_HS, UNSPEC_COND_UO): Delete.
6297         (SVE_INT_CMP, SVE_FP_CMP): New code iterators.
6298         (cmp_op, sve_imm_con): New code attributes.
6299         (SVE_COND_INT_CMP, imm_con): Delete.
6300         (cmp_op): Remove above unspecs from int attribute.
6301         * config/aarch64/aarch64-sve.md (*vec_cmp<cmp_op>_<mode>): Rename
6302         to...
6303         (*cmp<cmp_op><mode>): ...this.  Use UNSPEC_MERGE_PTRUE instead of
6304         comparison-specific unspecs.
6305         (*vec_cmp<cmp_op>_<mode>_ptest): Rename to...
6306         (*cmp<cmp_op><mode>_ptest): ...this and adjust likewise.
6307         (*vec_cmp<cmp_op>_<mode>_cc): Rename to...
6308         (*cmp<cmp_op><mode>_cc): ...this and adjust likewise.
6309         (*vec_fcm<cmp_op><mode>): Rename to...
6310         (*fcm<cmp_op><mode>): ...this and adjust likewise.
6311         (*vec_fcmuo<mode>): Rename to...
6312         (*fcmuo<mode>): ...this and adjust likewise.
6313         (*pred_fcm<cmp_op><mode>): New pattern.
6314         * config/aarch64/aarch64.c (aarch64_emit_unop, aarch64_emit_binop)
6315         (aarch64_emit_sve_ptrue_op, aarch64_emit_sve_ptrue_op_cc): New
6316         functions.
6317         (aarch64_unspec_cond_code): Remove handling of LTU, GTU, LEU, GEU
6318         and UNORDERED.
6319         (aarch64_gen_unspec_cond, aarch64_emit_unspec_cond): Delete.
6320         (aarch64_emit_sve_predicated_cond): New function.
6321         (aarch64_expand_sve_vec_cmp_int): Use aarch64_emit_sve_ptrue_op_cc.
6322         (aarch64_emit_unspec_cond_or): Replace with...
6323         (aarch64_emit_sve_or_conds): ...this new function.  Use
6324         aarch64_emit_sve_ptrue_op for the individual comparisons and
6325         aarch64_emit_binop to OR them together.
6326         (aarch64_emit_inverted_unspec_cond): Replace with...
6327         (aarch64_emit_sve_inverted_cond): ...this new function.  Use
6328         aarch64_emit_sve_ptrue_op for the comparison and
6329         aarch64_emit_unop to invert the result.
6330         (aarch64_expand_sve_vec_cmp_float): Update after the above
6331         changes.  Use aarch64_emit_sve_ptrue_op for native comparisons.
6333 2018-05-07  Nathan Sidwell  <nathan@acm.org>
6335         * doc/invoke.texi (C++ Dialect Options): Remove -ffor-scope.
6336         * doc/extend.texi (Deprecated Features): Remove -fno-for-scope
6337         (Backwards Compatibility): Likewise.
6339 2018-05-07  Luis Machado  <luis.machado@linaro.org>
6341         PR bootstrap/85681
6342         Revert:
6343         2018-05-07  Luis Machado  <luis.machado@linaro.org>
6345         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
6346         <prefetch_dynamic_strides>: New const bool field.
6347         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
6348         prefetch_dynamic_strides.
6349         (exynosm1_prefetch_tune): Likewise.
6350         (thunderxt88_prefetch_tune): Likewise.
6351         (thunderx_prefetch_tune): Likewise.
6352         (thunderx2t99_prefetch_tune): Likewise.
6353         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
6354         to false.
6355         (aarch64_override_options_internal): Update to set
6356         PARAM_PREFETCH_DYNAMIC_STRIDES.
6357         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
6358         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
6359         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
6360         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
6361         prefetch-dynamic-strides setting.
6363         2018-05-07  Luis Machado  <luis.machado@linaro.org>
6365         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
6366         <minimum_stride>: New const int field.
6367         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
6368         minimum_stride field.
6369         (exynosm1_prefetch_tune): Likewise.
6370         (thunderxt88_prefetch_tune): Likewise.
6371         (thunderx_prefetch_tune): Likewise.
6372         (thunderx2t99_prefetch_tune): Likewise.
6373         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
6374         (aarch64_override_options_internal): Update to set
6375         PARAM_PREFETCH_MINIMUM_STRIDE.
6376         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
6377         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
6378         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
6379         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
6380         stride is constant and is below the minimum stride threshold.
6382 2018-05-07  Luis Machado  <luis.machado@linaro.org>
6384         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune) <l2_cache_size>: Set
6385         to 512.
6387 2018-05-07  Luis Machado  <luis.machado@linaro.org>
6389         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
6390         <prefetch_dynamic_strides>: New const bool field.
6391         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
6392         prefetch_dynamic_strides.
6393         (exynosm1_prefetch_tune): Likewise.
6394         (thunderxt88_prefetch_tune): Likewise.
6395         (thunderx_prefetch_tune): Likewise.
6396         (thunderx2t99_prefetch_tune): Likewise.
6397         (qdf24xx_prefetch_tune): Likewise. Set prefetch_dynamic_strides
6398         to false.
6399         (aarch64_override_options_internal): Update to set
6400         PARAM_PREFETCH_DYNAMIC_STRIDES.
6401         * doc/invoke.texi (prefetch-dynamic-strides): Document new option.
6402         * params.def (PARAM_PREFETCH_DYNAMIC_STRIDES): New.
6403         * params.h (PARAM_PREFETCH_DYNAMIC_STRIDES): Define.
6404         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Account for
6405         prefetch-dynamic-strides setting.
6407 2018-05-07  Luis Machado  <luis.machado@linaro.org>
6409         * config/aarch64/aarch64-protos.h (cpu_prefetch_tune)
6410         <minimum_stride>: New const int field.
6411         * config/aarch64/aarch64.c (generic_prefetch_tune): Update to include
6412         minimum_stride field.
6413         (exynosm1_prefetch_tune): Likewise.
6414         (thunderxt88_prefetch_tune): Likewise.
6415         (thunderx_prefetch_tune): Likewise.
6416         (thunderx2t99_prefetch_tune): Likewise.
6417         (qdf24xx_prefetch_tune): Likewise. Set minimum_stride to 2048.
6418         (aarch64_override_options_internal): Update to set
6419         PARAM_PREFETCH_MINIMUM_STRIDE.
6420         * doc/invoke.texi (prefetch-minimum-stride): Document new option.
6421         * params.def (PARAM_PREFETCH_MINIMUM_STRIDE): New.
6422         * params.h (PARAM_PREFETCH_MINIMUM_STRIDE): Define.
6423         * tree-ssa-loop-prefetch.c (should_issue_prefetch_p): Return false if
6424         stride is constant and is below the minimum stride threshold.
6426 2018-05-06  Jakub Jelinek  <jakub@redhat.com>
6428         PR c++/85659
6429         * cfgexpand.c (expand_asm_stmt): Don't create a temporary if
6430         the type is addressable.  Don't force op into register if it has
6431         BLKmode.
6433 2018-05-05  Roland McGrath  <mcgrathr@google.com>
6435         PR other/77609
6436         * varasm.c (default_section_type_flags): Set SECTION_NOTYPE for
6437         any section for which we don't know a specific type it should have,
6438         regardless of name.  Previously this was done only for the exact
6439         names ".init_array", ".fini_array", and ".preinit_array".
6440         (default_elf_asm_named_section): Add comment about
6441         relationship with default_section_type_flags and SECTION_NOTYPE.
6442         (get_section): Don't consider it a type conflict if one side has
6443         SECTION_NOTYPE and the other doesn't, as long as neither has the
6444         SECTION_BSS et al used in the default_section_type_flags logic.
6446 2018-05-05  Tom de Vries  <tom@codesourcery.com>
6448         PR target/85653
6449         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_3): Define.
6450         (workaround_barsyncs): New function.
6451         (nvptx_reorg): Use workaround_barsyncs.
6452         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
6453         (define_expand "nvptx_membar_cta"): New define_expand.
6454         (define_insn "*nvptx_membar_cta"): New insn.
6456 2018-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
6458         * brig-builtins.def: Add consts to ptrs etc. in BRIG builtin defs.
6459         To improve optimization opportunities.
6460         * builtin-types.def: The new needed builtin types for the above.
6462 2018-05-04  Richard Biener  <rguenther@suse.de>
6464         * bb-reorder.c (sanitize_hot_paths): Release hot_bbs_to_check.
6465         * gimple-ssa-store-merging.c
6466         (imm_store_chain_info::output_merged_store): Remove redundant create,
6467         release split_store vector contents on failure.
6468         * tree-vect-slp.c (vect_schedule_slp_instance): Avoid leaking
6469         scalar stmt vector on cache hit.
6471 2018-05-04  Segher Boessenkool  <segher@kernel.crashing.org>
6473         * common/config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
6474         Xilinx FP support.
6475         * config.gcc (powerpc-xilinx-eabi*): Remove.
6476         * config/rs6000/predicates.md (easy_fp_constant): Remove Xilinx FP
6477         support.
6478         (fusion_addis_mem_combo_load): Ditto.
6479         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove Xilinx
6480         FP support.
6481         (rs6000_cpu_cpp_builtins): Ditto.
6482         * config/rs6000/rs6000-linux.c
6483         (rs6000_linux_float_exceptions_rounding_supported_p): Ditto.
6484         * config/rs6000/rs6000-opts.h (enum fpu_type_t): Delete.
6485         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove Xilinx FP
6486         support.
6487         (rs6000_setup_reg_addr_masks): Ditto.
6488         (rs6000_init_hard_regno_mode_ok): Ditto.
6489         (rs6000_option_override_internal): Ditto.
6490         (legitimate_lo_sum_address_p): Ditto.
6491         (rs6000_legitimize_address): Ditto.
6492         (rs6000_legitimize_reload_address): Ditto.
6493         (rs6000_legitimate_address_p): Ditto.
6494         (abi_v4_pass_in_fpr): Ditto.
6495         (setup_incoming_varargs): Ditto.
6496         (rs6000_gimplify_va_arg): Ditto.
6497         (rs6000_split_multireg_move): Ditto.
6498         (rs6000_savres_strategy): Ditto.
6499         (rs6000_emit_prologue_components): Ditto.
6500         (rs6000_emit_epilogue_components): Ditto.
6501         (rs6000_emit_prologue): Ditto.
6502         (rs6000_emit_epilogue): Ditto.
6503         (rs6000_elf_file_end): Ditto.
6504         (rs6000_function_value): Ditto.
6505         (rs6000_libcall_value): Ditto.
6506         * config/rs6000/rs6000.h: Ditto.
6507         (TARGET_MINMAX_SF, TARGET_MINMAX_DF): Delete, merge to ...
6508         (TARGET_MINMAX): ... this.  New.
6509         (TARGET_SF_FPR, TARGET_DF_FPR, TARGET_SF_INSN, TARGET_DF_INSN): Delete.
6510         * config/rs6000/rs6000.md: Remove Xilinx FP support.
6511         (*movsi_internal1_single): Delete.
6512         * config/rs6000/rs6000.opt (msingle-float, mdouble-float, msimple-fpu,
6513         mfpu=, mxilinx-fpu): Delete.
6514         * config/rs6000/singlefp.h: Delete.
6515         * config/rs6000/sysv4.h: Remove Xilinx FP support.
6516         * config/rs6000/t-rs6000: Ditto.
6517         * config/rs6000/t-xilinx: Delete.
6518         * gcc/config/rs6000/titan.md: Adjust for fp_type removal.
6519         * gcc/config/rs6000/vsx.md: Remove Xilinx FP support.
6520         (VStype_simple): Delete.
6521         (VSfptype_simple, VSfptype_mul, VSfptype_div, VSfptype_sqrt): Delete.
6522         * config/rs6000/xfpu.h: Delete.
6523         * config/rs6000/xfpu.md: Delete.
6524         * config/rs6000/xilinx.h: Delete.
6525         * config/rs6000/xilinx.opt: Delete.
6526         * gcc/doc/invoke.texi (RS/6000 and PowerPC Options): Remove
6527         -msingle-float, -mdouble-float, -msimple-fpu, -mfpu=, and -mxilinx-fpu.
6529 2018-05-04  Tom de Vries  <tom@codesourcery.com>
6531         PR libgomp/85639
6532         * builtins.c (expand_builtin_goacc_parlevel_id_size): Handle null target
6533         if ignore == 0.
6535 2018-05-04  Richard Biener  <rguenther@suse.de>
6537         PR middle-end/85627
6538         * tree-complex.c (update_complex_assignment): We are always in SSA form.
6539         (expand_complex_div_wide): Likewise.
6540         (expand_complex_operations_1): Likewise.
6541         (expand_complex_libcall): Preserve EH info of the original stmt.
6542         (tree_lower_complex): Handle removed blocks.
6543         * tree.c (build_common_builtin_nodes): Do not set ECF_NOTRHOW
6544         on complex multiplication and division libcall builtins.
6546 2018-05-04  Richard Biener  <rguenther@suse.de>
6548         PR middle-end/85574
6549         * fold-const.c (negate_expr_p): Restrict negation of operand
6550         zero of a division to when we know that can happen without
6551         overflow.
6552         (fold_negate_expr_1): Likewise.
6554 2018-05-04  Jakub Jelinek  <jakub@redhat.com>
6556         PR libstdc++/85466
6557         * real.h (real_nextafter): Declare.
6558         * real.c (real_nextafter): New function.
6559         * fold-const-call.c (fold_const_nextafter): New function.
6560         (fold_const_call_sss): Call it for CASE_CFN_NEXTAFTER and
6561         CASE_CFN_NEXTTOWARD.
6562         (fold_const_call_1): For CASE_CFN_NEXTTOWARD call fold_const_call_sss
6563         even when arg1_mode is different from arg0_mode.
6565 2018-05-03  Nathan Sidwell  <nathan@acm.org>
6567         * doc/extend.texi (Deprecated Features): Remove
6568         -ffriend-injection.
6569         (Backwards Compatibility): Likewise.
6570         * doc/invoke.texi (C++ Language Options): Likewise.
6571         (C++ Dialect Options): Likewise.
6573 2018-05-03  Jakub Jelinek  <jakub@redhat.com>
6575         PR target/85530
6576         * config/i386/avx512fintrin.h (_mm512_mullox_epi64,
6577         _mm512_mask_mullox_epi64): New intrinsics.
6579 2018-05-03  Tom de Vries  <tom@codesourcery.com>
6581         PR testsuite/85106
6582         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
6583         dump files): Add offload-tree.
6585 2018-05-03  Richard Biener  <rguenther@suse.de>
6587         PR tree-optimization/85615
6588         * tree-ssa-threadupdate.c (thread_block_1): Only allow exits
6589         to loops not nested in BBs loop father to avoid creating multi-entry
6590         loops.
6592 2018-05-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
6594         PR tree-optimization/70291
6595         * tree-complex.c (expand_complex_libcall): Add type, inplace_p
6596         arguments.  Change return type to tree.  Emit libcall as a new
6597         statement rather than replacing existing one when inplace_p is true.
6598         (expand_complex_multiplication_components): New function.
6599         (expand_complex_multiplication): Expand floating-point complex
6600         multiplication using the above.
6601         (expand_complex_division): Rename inner_type parameter to type.
6602         Update expand_complex_libcall call-site.
6603         (expand_complex_operations_1): Update expand_complex_multiplication
6604         and expand_complex_division call-sites.
6606 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
6608         PR target/85582
6609         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
6610         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
6611         *<shift_insn><dwi>3_doubleword_mask_1): In condition require that
6612         the highest significant bit of the shift count mask is clear.  In
6613         check whether and[sq]i3 is needed verify that all significant bits
6614         of the shift count other than the highest are set.
6616 2018-05-02  Tom de Vries  <tom@codesourcery.com>
6618         PR libgomp/82428
6619         * builtins.def (DEF_GOACC_BUILTIN_ONLY): Define.
6620         * omp-builtins.def (BUILT_IN_GOACC_PARLEVEL_ID)
6621         (BUILT_IN_GOACC_PARLEVEL_SIZE): New builtin.
6622         * builtins.c (expand_builtin_goacc_parlevel_id_size): New function.
6623         (expand_builtin): Call expand_builtin_goacc_parlevel_id_size.
6624         * doc/extend.texi (Other Builtins): Add __builtin_goacc_parlevel_id and
6625         __builtin_goacc_parlevel_size.
6627 2018-05-02  Richard Biener  <rguenther@suse.de>
6629         PR tree-optimization/85597
6630         * tree-vect-stmts.c (vectorizable_operation): For ternary SLP
6631         do not use split vect_get_vec_defs call but call vect_get_slp_defs
6632         directly.
6634 2018-05-02  Tom de Vries  <tom@codesourcery.com>
6636         PR testsuite/85106
6637         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
6638         dump files): Add ltrans-tree.
6640 2018-05-02  Tom de Vries  <tom@codesourcery.com>
6642         PR testsuite/85106
6643         * doc/sourcebuild.texi (Commands for use in dg-final, Scan optimization
6644         dump files): Add wpa-ipa.
6646 2018-05-02  Segher Boessenkool  <segher@kernel.crashing.org>
6648         * config.gcc (powerpc*-*-*): Remove paired.h.  Unsupport the
6649         powerpc*-*-linux*paired* target.
6650         * config/rs6000/750cl.h: Delete.
6651         * config/rs6000/paired.h: Delete.
6652         * config/rs6000/paired.md: Delete.
6653         * config/rs6000/predicates.md (easy_vector_constant): Remove paired
6654         float support.
6655         * config/rs6000/rs6000-builtin.def: Remove paired float support.
6656         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
6657         comment.  Remove paired float support.
6658         * config/rs6000/rs6000-modes.def: Remove V2SF and V2SI.
6659         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete
6660         VECTOR_PAIRED.
6661         * config/rs6000/rs6000-protos.h (paired_expand_vector_init,
6662         paired_emit_vector_cond_expr, paired_expand_vector_move): Delete
6663         declarations.
6664         * config/rs6000/rs6000.c: Remove paired float support.
6665         (paired_expand_vector_init, paired_expand_vector_move,
6666         paired_emit_vector_compare, paired_emit_vector_cond_expr,
6667         (paired_expand_lv_builtin, paired_expand_stv_builtin,
6668         paired_expand_builtin, paired_expand_predicate_builtin,
6669         paired_init_builtins): Delete.
6670         * config/rs6000/rs6000.h: Remove paired float support.
6671         * config/rs6000/rs6000.md: Remove paired float support.
6672         (move_from_CR_ov_bit): Delete.
6673         * config/rs6000/rs6000.opt (mpaired): Delete.
6674         * config/rs6000/t-rs6000: Remove paired.md from MD_INCLUDES.
6675         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mpaired.
6677 2018-05-02  Richard Biener  <rguenther@suse.de>
6679         PR middle-end/85567
6680         * gimplify.c (gimplify_save_expr): When in SSA form allow
6681         SAVE_EXPRs to compute to SSA vars.
6683 2018-05-02  Jakub Jelinek  <jakub@redhat.com>
6685         PR target/85582
6686         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
6687         *ashl<dwi>3_doubleword_mask_1, *<shift_insn><dwi>3_doubleword_mask,
6688         *<shift_insn><dwi>3_doubleword_mask_1): If and[sq]i3 is needed, don't
6689         clobber operands[2], instead use a new pseudo.  Formatting fixes.
6691 2018-05-02  Richard Sandiford  <richard.sandiford@linaro.org>
6693         PR tree-optimization/85586
6694         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence): Only
6695         exit early for statements in the same group if the accesses are
6696         not strided.
6698 2018-05-02  Tom de Vries  <tom@codesourcery.com>
6700         PR lto/85451
6701         * lto-wrapper.c (compile_offload_image): Add "could not find mkoffload"
6702         error message.
6704 2018-05-01  Marc Glisse  <marc.glisse@inria.fr>
6706         PR tree-optimization/85143
6707         * match.pd (A<B&A<C): Extend to BIT_IOR_EXPR.
6709 2018-05-01  Tom de Vries  <tom@codesourcery.com>
6711         PR lto/85451
6712         * config/nvptx/mkoffload.c (main): Suggest using -B in "offload compiler
6713         not found" error message.
6715 2018-05-01  Tom de Vries  <tom@codesourcery.com>
6717         PR other/83786
6718         * vec.h (VEC_ORDERED_REMOVE_IF, VEC_ORDERED_REMOVE_IF_FROM_TO): Define.
6719         * vec.c (test_ordered_remove_if): New function.
6720         (vec_c_tests): Call test_ordered_remove_if.
6721         * dwarf2cfi.c (connect_traces): Use VEC_ORDERED_REMOVE_IF_FROM_TO.
6722         * lto-streamer-out.c (prune_offload_funcs): Use VEC_ORDERED_REMOVE_IF.
6723         * tree-vect-patterns.c (vect_pattern_recog_1): Use
6724         VEC_ORDERED_REMOVE_IF.
6726 2018-05-01  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
6728         PR tree-optimization/82665
6729         * vr-values.c (vr_values::extract_range_from_binary_expr): Handle
6730         pointer subtraction where arguments come from a memchr call.
6732 2018-05-01  Jakub Jelinek  <jakub@redhat.com>
6734         * configure.ac (LD_AS_NEEDED_OPTION, LD_NO_AS_NEEDED_OPTION): Use
6735         --push-state --as-needed and --pop-state instead of --as-needed and
6736         --no-as-needed if ld supports it.
6737         * configure: Regenerated.
6739         PR web/85578
6740         * doc/install.texi2html: Replace _002d with - and _002a with * in
6741         generated html files using sed.
6743 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
6745         PR c++/85523
6746         * gcc-rich-location.c (blank_line_before_p): New function.
6747         (use_new_line): New function.
6748         (gcc_rich_location::add_fixit_insert_formatted): New function.
6749         * gcc-rich-location.h
6750         (gcc_rich_location::add_fixit_insert_formatted): New function.
6752 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
6754         * selftest.c (assert_streq): Rename "expected" and "actual" to
6755         "val1" and "val2".  Extend NULL-handling to cover both inputs
6756         symmetrically, while still requiring both to be non-NULL for a pass.
6757         * selftest.h (assert_streq): Rename "expected" and "actual" to
6758         "val1" and "val2".
6759         (ASSERT_EQ): Likewise.
6760         (ASSERT_EQ_AT): Likewise.
6761         (ASSERT_KNOWN_EQ): Likewise.
6762         (ASSERT_KNOWN_EQ_AT): Likewise.
6763         (ASSERT_NE): Likewise.
6764         (ASSERT_MAYBE_NE): Likewise.
6765         (ASSERT_MAYBE_NE_AT): Likewise.
6766         (ASSERT_STREQ): Likewise.  Clarify that both must be non-NULL for
6767         the assertion to pass.
6768         (ASSERT_STREQ_AT): Likewise.
6770 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
6772         * doc/invoke.texi (-fpie, -fPIE): Fix grammar and clarify
6773         interaction with -pie.
6775 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
6777         * selftest.h: Fix alphabetization of per-source-file selftest
6778         declarations.
6780 2018-04-30  Jason Merrill  <jason@redhat.com>
6782         PR c++/61982 - dead stores to destroyed objects.
6783         * gimplify.c (gimplify_modify_expr): Simplify complex lvalue on LHS
6784         of clobber.
6786 2018-04-30  Jason Merrill  <jason@redhat.com>
6788         * tree.c (build_clobber): New.
6789         * tree.h: Declare it.
6790         * gimplify.c (gimplify_bind_expr, gimplify_target_expr): Use it.
6792 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
6794         * diagnostic-show-locus.c (layout::layout): Update for
6795         location_get_source_line returning a char_span.
6796         (struct char_span): Move to input.h.
6797         (struct correction): Update for fields in char_span becoming
6798         private.
6799         (struct source_line): Update for location_get_source_line
6800         returning a char_span.
6801         (layout::print_line): Likewise.
6802         * edit-context.c (edited_file::print_content): Likewise.
6803         (edited_file::print_diff_hunk): Likewise.
6804         (edited_file::print_run_of_changed_lines): Likewise.
6805         (edited_file::get_num_lines): Likewise.
6806         (edited_line::edited_line): Likewise.
6807         * final.c (asm_show_source): Likewise.
6808         * input.c (location_get_source_line): Convert return type
6809         from const char * to char_span, losing the final "line_len"
6810         param.
6811         (dump_location_info): Update for the above.
6812         (get_substring_ranges_for_loc): Likewise.  Use a char_span
6813         when handling the literal within the line.
6814         (test_reading_source_line): Update for location_get_source_line
6815         returning a char_span.
6816         * input.h (class char_span): Move here from
6817         diagnostic-show-locus.c, converting from a struct to a class.
6818         Make data members private.
6819         (char_span::operator bool): New.
6820         (char_span::length): New.
6821         (char_span::get_buffer): New.
6822         (char_span::operator[]): New.
6823         (char_span::subspan): Make const.
6824         (char_span::xstrdup): New.
6825         (location_get_source_line): Convert return type from const char *
6826         to char_span, losing the final "line_size" param.
6828 2018-04-30  Jan Hubicka  <jh@suse.cz>
6830         * lto-wrapper.c (ltrans_priorities): New static var.
6831         (cmp_priority): New.
6832         (run_gcc): Read priorities and if doing parallel build order
6833         the Makefile by them.
6835 2018-04-30  David Malcolm  <dmalcolm@redhat.com>
6837         * input.h (builtins_location_check): Convert to a STATIC_ASSERT.
6839 2018-04-30  Richard Biener  <rguenther@suse.de>
6841         * tree-cfg.c (verify_address): Remove base argument, add
6842         flag whether to check TREE_ADDRESSABLE and do that.
6843         (verify_expr): Remove.
6844         (verify_types_in_gimple_reference): Add pieces from verify_expr.
6845         (verify_gimple_assign_single): Likewise.
6846         (verify_gimple_switch): Likewise.
6847         (verify_expr_location_1): Dereference tp once.  Add (disabled)
6848         piece from verify_expr.
6849         (verify_gimple_in_cfg): Do not call verify_expr on all ops.
6851 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
6853         * config/arc/linux.h (CLEAR_INSN_CACHE): Define.
6855 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
6857         * config/arc/arc-protos.h (prepare_extend_operands): Remove.
6858         (small_data_pattern): Likewise.
6859         (arc_rewrite_small_data): Likewise.
6860         * config/arc/arc.c (LEGITIMATE_SMALL_DATA_OFFSET_P): Remove.
6861         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Likewise.
6862         (get_symbol_alignment): New function.
6863         (legitimate_small_data_address_p): Likewise.
6864         (legitimate_scaled_address): Update, call
6865         legitimate_small_data_address_p.
6866         (output_sdata): New static variable.
6867         (arc_print_operand): Update how we handle small data operands.
6868         (arc_print_operand_address): Likewise.
6869         (arc_legitimate_address_p): Update, use
6870         legitimate_small_data_address_p.
6871         (arc_rewrite_small_data_p): Remove.
6872         (arc_rewrite_small_data_1): Likewise.
6873         (arc_rewrite_small_data): Likewise.
6874         (small_data_pattern): Likewise.
6875         (compact_sda_memory_operand): Update to use
6876         legitimate_small_data_address_p and get_symbol_alignment.
6877         (prepare_move_operands): Don't rewite sdata pattern.
6878         (prepare_extend_operands): Remove.
6879         * config/arc/arc.md (zero_extendqihi2): Don't rewrite sdata
6880         pattern.
6881         (zero_extendqisi2): Likewise.
6882         (zero_extendhisi2): Likewise.
6883         (extendqihi2): Likewise.
6884         (extendqisi2): Likewise.
6885         (extendhisi2): Likewise.
6886         (addsi3): Likewise.
6887         (subsi3): Likewise.
6888         (andsi3): Likewise.
6889         * config/arc/constraints.md (Usd): Change it to memory constraint.
6891 2018-04-30  Claudiu Zissulescu  <claziss@synopsys.com>
6893         * config/arc/arc.c (arc_split_move): Allow signed 6-bit constants
6894         as source of std instructions.
6895         * config/arc/arc.md (movsi_insn): Update pattern predicate to
6896         allow 6-bit constants as source for store instructions.
6897         (movdi_insn): Update instruction pattern to allow 6-bit constants
6898         as source for store instructions.
6900 2018-04-30  Jonathan Wakely  <jwakely@redhat.com>
6902         * doc/invoke.texi (-fdebug-types-section): Fix grammar.
6904 2018-04-30  Nathan Sidwell  <nathan@acm.org>
6905             Sandra Loosemore <sandra@codesourcery.com>
6907         * dumpfile.c (dump_open): Allow '-' for stdout.
6908         * doc/invoke.texi (Developer Options): Document dump filename
6909         determination early.  Document stdin/stdout selection.
6911 2018-04-30 Andrew Sadek  <andrew.sadek.se@gmail.com>
6913         Microblaze Target: PIC data text relative
6915         * config/microblaze/microblaze.opt: add new option -mpic-data-text-rel.
6916         * config/microblaze/microblaze-protos.h (microblaze_constant_address_p):
6917         Add declaration.
6918         * gcc/config/microblaze/microblaze.h (microblaze_constant_address_p):
6919         CONSTANT_ADDRESS_P definition to microblaze_constant_address_p.
6920         * config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL):
6921         New addressing mode for data-text relative position indepenedent code.
6922         (microblaze_classify_unspec): add 'UNSPEC_TEXT' case ->
6923         'ADDRESS_SYMBOLIC_TXT_REL'.
6924         (microblaze_classify_address): Add handling for UNSPEC + CONST_INT.
6925         (microblaze_legitimate_pic_operand): Exclude function calls from
6926         pic operands in case of TARGET_PIC_DATA_TEXT_REL option.
6927         (microblaze_legitimize_address): Generate 'UNSPEC_TEXT' for all possible
6928         addresses cases.
6929         (microblaze_address_insns): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
6930         (print_operand): Add 'ADDRESS_SYMBOLIC_TXT_REL' case.
6931         (print_operand_address): Add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling
6932         for 'address + offset'.
6933         (microblaze_expand_prologue): Add new function prologue call for
6934         'r20' assignation.
6935         (microblaze_asm_generate_pic_addr_dif_vec): Override new target hook
6936         'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector
6937         table in case of TARGET_PIC_DATA_TEXT_REL.
6938         (expand_pic_symbol_ref): Add handling for 'UNSPEC_TEXT'.
6939         * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL):
6940         Add new macros 'UNSPEC_TEXT',
6941         'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue
6942         + exclude function calls from 'UNSPEC_PLT' in case of data text
6943         relative mode.
6944         * doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
6945         new target hook for generating address diff vector tables in case of
6946         flag_pic.
6947         * doc/tm.texi : Regenerate.
6948         * stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Append new condition
6949         'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case
6950         of addr diff vector generation.
6951         * target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add
6952         target hook definition.
6953         * targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC):
6954         Add default function for generate_pic_addr_diff_vec -> flag_pic.
6955         * doc/invoke.texi (Add new pic option): Add new microblaze pic
6956         option for data text relative.
6958 2018-04-30  Richard Biener  <rguenther@suse.de>
6960         * tree-chrec.h (evolution_function_is_constant_p): Remove
6961         redundant check.
6962         * tree-cfg.c (tree_node_can_be_shared): Re-order checks.
6964 2018-04-30  Richard Biener  <rguenther@suse.de>
6966         PR bootstrap/85571
6967         * dwarf2out.c (gen_producer_string): Ignore -fchecking[=].
6969 2018-04-30  Richard Biener  <rguenther@suse.de>
6971         PR tree-optimization/28364
6972         PR tree-optimization/85275
6973         * tree-ssa-loop-ch.c (ch_base::copy_headers): Stop after
6974         copying first exit test.
6976 2018-04-28  Mark Wielaard  <mark@klomp.org>
6978         * dwarf2out.c (dwarf2out_finish): Add .debug_addr table header for
6979         dwarf_version >= 5.
6980         (dwarf_AT): Handle DW_AT_addr_base.
6981         (add_top_level_skeleton_die_attrs): Use dwarf_AT for DW_AT_addr_base.
6983 2018-04-28  Uros Bizjak  <ubizjak@gmail.com>
6985         PR target/84431
6986         * config/i386/i386.md (*ashl<dwi>3_doubleword_mask): New pattern.
6987         (*ashl<dwi>3_doubleword_mask_1): Ditto.
6988         (*<shift_insn><dwi>3_doubleword_mask): Ditto.
6989         (*<shift_insn><dwi>3_doubleword_mask_1): Ditto.
6991 2018-04-28  Richard Biener  <rguenther@suse.de>
6993         * tree-cfg.c (verify_gimple_phi): Take a gphi * argument.
6994         (verify_gimple_in_cfg): Rename visited_stmts to visited_throwing_stmts
6995         to reflect use.  Only add interesting stmts.
6997 2018-04-27  Martin Jambor  <mjambor@suse.cz>
6999         PR ipa/85549
7000         * ipa-cp.c (find_aggregate_values_for_callers_subset): Make sure
7001         the jump function allows for passing through aggregate values.
7003 2018-04-27  David Malcolm  <dmalcolm@redhat.com>
7005         * input.h (in_system_header_at): Convert from macro to inline
7006         function.
7007         (from_macro_expansion_at): Likewise.
7008         (from_macro_definition_at): Likewise.
7010 2018-04-27  Jeff Law  <law@redhat.com>
7012         * config.gcc: Mark tile* targets as deprecated/obsolete.
7014 2018-04-27  Richard Biener  <rguenther@suse.de>
7016         * config/aarch64/aarch64.c: Simplify ap.__stack advance and
7017         fix for ILP32.
7019 2018-04-27  Richard Biener  <rguenther@suse.de>
7021         * tree-cfg.c (verify_expr): Make dead code hit gcc_unreachable.
7023 2018-04-27  Uros Bizjak  <ubizjak@gmail.com>
7025         * config/i386/i386.md (*movti_internal): Substitute Ye constraint
7026         with Yd constraint. Set "preferred_for_speed" attribute from
7027         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for alternatives
7028         with Yd constraint.
7029         (*movdi_internal): Ditto.
7030         (movti_interunit splitters): Remove
7031         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC from insn condition.
7032         (movdi_interunit splitters): Ditto.
7033         * config/i386/constraints.md (Ye): Remove.
7034         (Yd): Do not depend on TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC.
7036 2018-04-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7038         PR target/85512
7039         * config/aarch64/constraints.md (Usg): Limit to 31.
7040         (Usj): Limit to 63.
7042 2018-04-27  Jakub Jelinek  <jakub@redhat.com>
7044         PR tree-optimization/85529
7045         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Add FIRST_BB
7046         argument.  Don't call get_nonzero_bits if opcode is ERROR_MARK_NODE,
7047         rhs2 def stmt's bb is dominated by first_bb and it isn't an obvious
7048         zero extension or masking of the MSB bit.
7049         (optimize_range_tests): Add FIRST_BB argument, pass it through
7050         to optimize_range_tests_var_bound.
7051         (maybe_optimize_range_tests, reassociate_bb): Adjust
7052         optimize_range_tests callers.
7054 2018-04-26  Richard Biener  <rguenther@suse.de>
7055             Jakub Jelinek  <jakub@redhat.com>
7057         * cgraph.h (symbol_table): Just declare debug method here.
7058         * symtab.c (symbol_table::debug): Define.
7060 2018-04-26  Eric Botcazou  <ebotcazou@adacore.com>
7062         * loop-invariant.c (may_assign_reg_p): Return false for frame pointer.
7064 2018-04-26  Uros Bizjak  <ubizjak@gmail.com>
7066         * config/i386/i386.md ("isa" attribute): Add x64_sse2.
7067         ("enabled" attribute): Handle x64_sse2 "isa" attribute.
7068         (*movdi_internal): Substitute Yi and Yj constraint with x
7069         and Ym and Yn constraint with y constraint.  Update "isa"
7070         attribute and set "preferred_for_speed" attribute from
7071         TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
7072         (*movsi_internal): Ditto.
7073         (*movdf_internal): Ditto.
7074         (*movsf_internal): Ditto.
7075         (*zero_extendsidi2): Ditto.
7076         * config/i386/sse.md (vec_set<mode>_0): Ditto.
7077         (sse2_loadld): Ditto.
7078         (*vec_extract<ssevecmodelower>_0): Ditto.
7079         (*vec_extractv4si_0_zext_sse4): Ditto.
7080         (vec_concatv2di): Ditto.
7081         (*vec_dup<mode>): Ditto.
7082         * config/i386/mmx.md (*mov<mode>_internal): Ditto.
7083         * config/i386/constraints.md (Yi): Remove.
7084         (Yj): Remove.
7085         (Ym): Remove.
7086         (Yn): Remove.
7088 2018-04-26  Nathan Sidwell  <nathan@acm.org>
7090         * dumpfile.c (dump_open): New.
7091         (dump_open_alternate_stream, dump_start, dump_begin): Call it.
7092         (dump_finish): Detect stdio/stderr by value not name.
7094 2018-04-26  Jonathan Wakely  <jwakely@redhat.com>
7096         * doc/invoke.texi (-Wreturn-type): Document default status for C++.
7098 2018-04-26  Tom de Vries  <tom@codesourcery.com>
7100         PR target/84952
7101         * config/nvptx/nvptx.c (verify_neutering_jumps)
7102         (verify_neutering_labels): New function
7103         (nvptx_single): Use verify_neutering_jumps and verify_neutering_labels.
7105 2018-04-26  Tom de Vries  <tom@codesourcery.com>
7107         PR target/84025
7108         * config/nvptx/nvptx.c (needs_neutering_p): New function.
7109         (nvptx_single): Use needs_neutering_p to skip over insns that do not
7110         need neutering.
7112 2018-04-26  Richard Biener <rguenther@suse.de>
7113             Tom de Vries  <tom@codesourcery.com>
7115         PR lto/85422
7116         * lto-streamer-out.c (output_function): Fixup loops if required to match
7117         discovery done in the reader.
7119 2018-04-26  Richard Biener  <rguenther@suse.de>
7121         PR tree-optimization/85116
7122         * tree-ssa-loop-ch.c (do_while_loop_p): A do-while loop should
7123         have a loop exit from the single latch predecessor.  Remove
7124         case of header with just condition.
7125         (ch_base::copy_headers): Exclude infinite loops from any
7126         processing.
7127         (pass_ch::execute): Record exits.
7129 2018-04-26  Richard Biener  <rguenther@suse.de>
7131         * tree-vect-data-refs.c (vect_get_data_access_cost): Get
7132         prologue cost vector and pass it to vect_get_load_cost.
7133         (vect_get_peeling_costs_all_drs): Likewise.
7134         (vect_peeling_hash_get_lowest_cost): Likewise.
7135         (vect_enhance_data_refs_alignment): Likewise.
7137 2018-04-26  Richard Biener  <rguenther@suse.de>
7139         PR middle-end/85450
7140         * tree-cfg.c (verify_gimple_assign_unary): Restore proper
7141         checking of integer<->pointer conversions.
7142         * omp-expand.c (expand_omp_for_static_nochunk): Avoid
7143         sign-/zero-extending pointer types.
7144         (expand_omp_for_static_chunk): Likewise.
7146 2018-03-22  Hans-Peter Nilsson  <hp@axis.com>
7147             Jean Lee  <xiaoyur347@gmail.com>
7149         * config/mips/mips.c (mips_asan_shadow_offset): New function.
7150         (TARGET_ASAN_SHADOW_OFFSET): Define.
7151         * config/mips/mips.h (FRAME_GROWS_DOWNWARD): Augment to also be
7152         true for -fsanitize=address.
7154 2018-04-25  Mark Wielaard  <mark@klomp.org>
7156         * dwarf2out.c (file_info_cmp): Sort longer dir prefixes before
7157         shorter ones.
7159 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
7161         * config/i386/i386.md (*x86_mov<mode>cc_0_m1): Use type "alu1" rather
7162         than "alu", remove explicit "memory" and "imm_disp" attributes.
7163         (*x86_mov<mode>cc_0_m1_se, *x86_mov<mode>cc_0_m1_neg): Likewise.
7165         PR middle-end/85414
7166         * simplify-rtx.c (simplify_unary_operation_1) <case SIGN_EXTEND,
7167         case ZERO_EXTEND>: Pass SUBREG_REG (op) rather than op to
7168         gen_lowpart_no_emit.
7170 2018-04-25  Sebastian Peryt  <sebastian.peryt@intel.com>
7172         PR target/85473
7173         * config/i386/i386.c (ix86_expand_builtin): Change memory
7174         operand to XI, extend p0 to Pmode.
7175         * config/i386/i386.md: Change unspec volatile and operand
7176         1 mode to XI, change operand 0 mode to P.
7178 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
7180         * config/nds32/nds32-predicates.c (nds32_can_use_bclr_p): Mask with
7181         GET_MODE_MASK before any checking.
7182         (nds32_can_use_bset_p): Likewise.
7183         (nds32_can_use_btgl_p): Likewise.
7185 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
7187         * config/nds32/nds32-doubleword.md: New define_split pattern for
7188         illegal register number.
7190 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
7192         * config/nds32/nds32.c (nds32_print_operand): Set op_value ealier.
7194 2018-04-25  Chung-Ju Wu  <jasonwucj@gmail.com>
7196         * config/nds32/nds32.h (ASM_APP_ON): Add missing newline character.
7198 2018-04-25  Richard Biener  <rguenther@suse.de>
7200         * lto-streamer.h (LTO_major_version): Bump to 8.
7202 2018-04-25  Jakub Jelinek  <jakub@redhat.com>
7204         * BASE-VER: Set to 9.0.0.
7206 2018-04-24  Segher Boessenkool  <segher@kernel.crashing.org>
7208         * config/rs6000/rs6000.c (init_float128_ieee): Fix spelling mistakes
7209         in __abskf2 and __powikf2.
7211 2018-04-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7213         PR target/85512
7214         * config/aarch64/constraints.md (Usg, Usj): New constraints.
7215         * config/aarch64/iterators.md (cmode_simd): New mode attribute.
7216         * config/aarch64/aarch64.md (*aarch64_ashr_sisd_or_int_<mode>3):
7217         Use the above on operand 2.  Reindent.
7218         (*aarch64_lshr_sisd_or_int_<mode>3): Likewise.
7220 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
7222         PR target/85485
7223         * common/config/i386/i386-common.c (ix86_handle_option): Don't
7224         handle OPT_mcet.
7225         * config/i386/i386.opt (mcet): Removed.
7226         * doc/install.texi: Remove -mcet documentation.
7227         * doc/invoke.texi: Likewise.
7229 2018-04-24  H.J. Lu  <hongjiu.lu@intel.com>
7231         PR target/85485
7232         * doc/install.texi: Remove -mcet from bootstrap-cet.
7234 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
7236         PR target/85511
7237         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Don't define
7238         __builtin_ia32_readeflags_u32 and __builtin_ia32_writeeflags_u32
7239         if TARGET_64BIT.
7241         PR target/85503
7242         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Punt if
7243         const_vector is not CONST_VECTOR or SYMBOL_REF for a constant pool
7244         containing a CONST_VECTOR.
7246 2018-04-24  Cesar Philippidis  <cesar@codesourcery.com>
7248         * doc/install.texi: Update newlib dependency for nvptx.
7250 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
7252         PR target/85508
7253         * config/i386/i386.c (ix86_expand_vector_init_one_var): Use UINTVAL
7254         instead of INTVAL when shifting x left.
7256 2018-04-24  Andreas Krebbel  <krebbel@linux.ibm.com>
7258         PR tree-optimization/85478
7259         * tree-vect-loop.c (vect_analyze_loop_2): Do not call
7260         vect_grouped_store_supported for single element vectors.
7262 2018-04-24  Richard Biener  <rguenther@suse.de>
7264         PR target/85491
7265         * config/i386/i386.c (ix86_add_stmt_cost): Restrict strided
7266         load cost increase to the case of non-constant step.
7268 2018-04-24  Jakub Jelinek  <jakub@redhat.com>
7270         PR target/84828
7271         * reg-stack.c (move_for_stack_reg): Don't fail assertion about dead
7272         destination if any_malformed_asm.
7274 2018-04-23  Eric Botcazou  <ebotcazou@adacore.com>
7276         PR middle-end/85496
7277         * expr.c (store_field): In the bitfield case, if the value comes from
7278         a function call and is returned in registers by means of a PARALLEL,
7279         do not change the mode of the temporary unless BLKmode and VOIDmode.
7281 2018-04-23  Andrey Belevantsev  <abel@ispras.ru>
7283         PR rtl-optimization/85423
7284         * sel-sched-ir.c (has_dependence_note_mem_dep): Only discard
7285         dependencies to debug insns when the previous insn is non-debug.
7287 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
7289         * config/arc/arc.md ("vunspec"): Delete it, unify all the unspec
7290         enums into a single definition.
7291         (fls): Fix predicates and printing.
7292         (seti): Likewise.
7294 2018-04-23  Claudiu Zissulescu  <claziss@synopsys.com>
7296         * config/arc/arc-protos.h (check_if_valid_sleep_operand): Remove.
7297         * config/arc/arc.c (arc_expand_builtin): Sleep accepts registers
7298         and short u6 immediate.
7299         (check_if_valid_sleep_operand): Remove.
7300         * config/arc/arc.md (Sleep): Accepts registers and u6 immediates.
7302 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
7304         * config/nds32/nds32.c (nds32_compute_stack_frame): Consider
7305         flag_always_save_lp condition.
7306         * config/nds32/nds32.opt (malways-save-lp): New option.
7308 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
7310         * config/nds32/nds32-protos.h (nds32_use_load_post_increment): Declare.
7311         * config/nds32/nds32.c (nds32_use_load_post_increment): New.
7312         * config/nds32/nds32.h
7313         (USE_LOAD_POST_INCREMENT, USE_LOAD_POST_DECREMENT): Define.
7314         (USE_STORE_POST_INCREMENT, USE_STORE_POST_DECREMENT): Define.
7316 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
7318         * config/nds32/nds32-protos.h (nds32_ls_333_p): Remove.
7319         * config/nds32/nds32.c (nds32_ls_333_p): Remove.
7321 2018-04-22  Shiva Chen  <shiva0217@gmail.com>
7322             Chung-Ju Wu  <jasonwucj@gmail.com>
7324         * config/nds32/nds32-protos.h (nds32_case_vector_shorten_mode):
7325         Declare.
7326         * config/nds32/nds32.c (nds32_case_vector_shorten_mode): New function.
7327         * config/nds32/nds32.h (CASE_VECTOR_SHORTEN_MODE): Modify.
7329 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
7331         * config/nds32/nds32.c (nds32_compute_stack_frame): Fix wrong value.
7333 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
7335         * config/nds32/nds32-protos.h (nds32_data_alignment,
7336         nds32_local_alignment): Declare.
7337         * config/nds32/nds32.c (nds32_data_alignment, nds32_constant_alignment,
7338         nds32_local_alignment): New functions.
7339         (TARGET_CONSTANT_ALIGNMENT): Define.
7340         * config/nds32/nds32.h (DATA_ALIGNMENT, LOCAL_ALIGNMENT): Define.
7342 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
7344         * config/nds32/nds32.c
7345         (TARGET_HARD_REGNO_MODE_OK): Move to the bottom of file.
7346         (TARGET_MODES_TIEABLE_P): Likewise.
7348 2018-04-22  Chung-Ju Wu  <jasonwucj@gmail.com>
7350         * config/nds32/nds32.c (nds32_asm_file_start): Display optimization
7351         level Ofast and Og.
7353 2018-04-22  Monk Chiang  <sh.chiang04@gmail.com>
7354             Chung-Ju Wu  <jasonwucj@gmail.com>
7356         * config/nds32/constants.md (unspec_volatile_element): Add enum values
7357         for unaligned access.
7358         * config/nds32/nds32-intrinsic.c: Implementation of expanding
7359         unaligned access.
7360         * config/nds32/nds32-intrinsic.md: Likewise.
7361         * config/nds32/nds32_intrinsic.h: Likewise.
7362         * config/nds32/nds32.h (nds32_builtins): Likewise.
7363         * config/nds32/nds32.opt (munaligned-access): New option.
7364         * config/nds32/nds32.c (nds32_asm_file_start): Display
7365         flag_unaligned_access status.
7367 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
7369         * config/riscv/elf.h (LINK_SPEC): Pass --no-relax if
7370         -mno-relax is present.
7371         * config/riscv/linux.h (LINK_SPEC): Ditto.
7373 2018-04-20  Martin Sebor  <msebor@redhat.com>
7375         PR c/85365
7376         * gimple-fold.c (gimple_fold_builtin_strcpy): Suppress -Wrestrict
7377         for null pointers.
7378         (gimple_fold_builtin_stxcpy_chk): Same.
7379         * gimple-ssa-warn-restrict.c (check_bounds_or_overlap): Same.
7381 2018-04-20  Michael Meissner  <meissner@linux.ibm.com>
7383         PR target/85456
7384         * config/rs6000/rs6000.c (init_float128_ieee): Add support to call
7385         __powikf2 when long double is IEEE 128-bit.
7387 2018-04-20  Kito Cheng  <kito.cheng@gmail.com>
7389         * config/riscv/riscv.c (riscv_first_stack_step): Round up min
7390         step to make sure stack always aligned.
7392 2018-04-20  Carl Love  <cel@us.ibm.com>
7394         PR target/83402
7395         * config/rs6000/rs6000-c.c (rs6000_gimple_fold_builtin): Add
7396         size check for arg0.
7398 2018-04-20  Nathan Sidwell  <nathan@codesourcery.com>
7399             Tom de Vries  <tom@codesourcery.com>
7401         PR target/85445
7402         * config/nvptx/nvptx.c (nvptx_emit_forking, nvptx_emit_joining):
7403         Emit insns for calls too.
7404         (nvptx_find_par): Always look for worker-level predecessor insn.
7405         (nvptx_propagate): Add is_call parm, return bool.  Copy frame for
7406         calls.
7407         (nvptx_vpropagate, nvptx_wpropagate): Adjust.
7408         (nvptx_process_pars): Propagate frames for calls.
7410 2018-04-20  H.J. Lu  <hongjiu.lu@intel.com>
7412         PR target/85469
7413         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET):
7414         Removed.
7415         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
7416         (ix86_handle_option): Don't handle OPT_mibt.
7417         * config/i386/cet.h: Check __CET__ instead of __IBT__ and
7418         __SHSTK__.
7419         * config/i386/driver-i386.c (host_detect_local_cpu): Remove
7420         has_ibt and ibt.
7421         * config/i386/i386-c.c (ix86_target_macros_internal): Don't
7422         check OPTION_MASK_ISA_IBT nor flag_cf_protection.
7423         (ix86_target_macros): Define __CET__ with flag_cf_protection
7424         for -fcf-protection.
7425         * config/i386/i386.c (isa2_opts): Remove -mibt.
7426         * config/i386/i386.h (TARGET_IBT): Removed.
7427         (TARGET_IBT_P): Likewise.
7428         (ix86_valid_target_attribute_inner_p): Don't check OPT_mibt.
7429         * config/i386/i386.md (nop_endbr): Don't check TARGET_IBT.
7430         * config/i386/i386.opt (mcet): Update help message.
7431         (mshstk): Likewise.
7432         (mibt): Removed.
7433         * doc/invoke.texi: Remove -mibt.  Document __CET__.  Document
7434         -mcet as an alias for -mshstk.
7436 2018-04-20  Richard Biener <rguenther@suse.de>
7438         PR middle-end/85475
7439         * match.pd ((X * CST) * Y -> (X * Y) * CST): Avoid exponential
7440         complexity by forcing a single use of the multiply operand.
7442 2018-04-20  Martin Jambor  <mjambor@suse.cz>
7444         ipa/85449
7445         * ipa-cp.c (cgraph_edge_brings_value_p): Move check for self-feeding
7446         recursion dependency to only apply to non-clones.
7448 2018-04-20  Martin Jambor  <mjambor@suse.cz>
7450         ipa/85447
7451         * ipa-cp.c (create_specialized_node): Check that clones of
7452         self-recursive edges exist during IPA-CP.
7454 2018-04-19  Toon Moene  <toon@moene.org>
7456         * doc/invoke.texi: Add -floop-unroll-and-jam to options enabled
7457         by -O3.
7459 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
7461         PR tree-optimization/85467
7462         * fold-const.c (fold_ternary_loc) <case BIT_FIELD_REF>: Use
7463         VECTOR_TYPE_P macro.  If type is vector type, VIEW_CONVERT_EXPR the
7464         VECTOR_CST element to type.
7466 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
7468         PR target/85397
7469         * config/i386/i386.h (STACK_SAVEAREA_MODE): New.
7470         * config/i386/i386.md (builtin_setjmp_setup): Removed.
7471         (builtin_longjmp): Likewise.
7472         (save_stack_nonlocal): New pattern.
7473         (restore_stack_nonlocal): Likewise.
7475 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
7477         PR target/85404
7478         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
7479         Replace ASM_OUTPUT_LABEL with fprintf.
7481 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
7483         PR target/85417
7484         * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
7485         Check flag_cf_protection instead of TARGET_IBT and TARGET_SHSTK.
7486         * config/i386/i386-c.c (ix86_target_macros_internal): Also
7487         define __IBT__ and __SHSTK__ for -fcf-protection.
7488         * config/i386/i386.c (pass_insert_endbranch::gate): Don't check
7489         TARGET_IBT.
7490         (ix86_trampoline_init): Likewise.
7491         (x86_output_mi_thunk): Likewise.
7492         (ix86_notrack_prefixed_insn_p): Likewise.
7493         (ix86_option_override_internal): Don't disallow -fcf-protection.
7494         * config/i386/i386.md (rdssp<mode>): Also enable for
7495         -fcf-protection.
7496         (incssp<mode>): Likewise.
7497         (nop_endbr): Likewise.
7498         * config/i386/i386.opt (mcet): Change help message to built-in
7499         functions only.
7500         (mibt): Likewise.
7501         (mshstk): Likewise.
7502         * doc/invoke.texi: Remove -mcet, -mibt and -mshstk condition
7503         on -fcf-protection.  Change -mcet, -mibt and -mshstk to only
7504         enable CET built-in functions.
7506 2018-04-19  Sebastian Peryt  <sebastian.peryt@intel.com>
7508         * common/config/i386/i386-common.c
7509         (OPTION_MASK_ISA_MOVDIRI_SET, OPTION_MASK_ISA_MOVDIR64B_SET,
7510         OPTION_MASK_ISA_MOVDIRI_UNSET,
7511         OPTION_MASK_ISA_MOVDIR64B_UNSET): New defines.
7512         (ix86_handle_option): Handle -mmovdiri and -mmovdir64b.
7513         * config.gcc (movdirintrin.h): New header.
7514         * config/i386/cpuid.h (bit_MOVDIRI,
7515         bit_MOVDIR64B): New bits.
7516         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mmovdiri
7517         and -mmvodir64b.
7518         * config/i386/i386-builtin-types.def ((VOID, PUNSIGNED, UNSIGNED),
7519         (VOID, PVOID, PCVOID)): New function types.
7520         * config/i386/i386-builtin.def (__builtin_ia32_directstoreu_u32,
7521         __builtin_ia32_directstoreu_u64,
7522         __builtin_ia32_movdir64b): New builtins.
7523         * config/i386/i386-c.c (__MOVDIRI__, __MOVDIR64B__): New.
7524         * config/i386/i386.c (ix86_target_string): Added -mmovdir64b
7525         and -mmovdiri.
7526         (ix86_valid_target_attribute_inner_p): Ditto.
7527         (ix86_expand_special_args_builtin): Added VOID_FTYPE_PUNSIGNED_UNSIGNED
7528         and VOID_FTYPE_PUNSIGNED_UNSIGNED.
7529         (ix86_expand_builtin): Expand IX86_BUILTIN_MOVDIR64B.
7530         * config/i386/i386.h (TARGET_MOVDIRI, TARGET_MOVDIRI_P,
7531         TARGET_MOVDIR64B, TARGET_MOVDIR64B_P): New.
7532         * config/i386/i386.md (UNSPECV_MOVDIRI, UNSPECV_MOVDIR64B): New.
7533         (movdiri<mode>, movdir64b_<mode>): New.
7534         * config/i386/i386.opt: Add -mmovdiri and -mmovdir64b.
7535         * config/i386/immintrin.h: Include movdirintrin.h.
7536         * config/i386/movdirintrin.h: New file.
7537         * doc/invoke.texi: Added -mmovdiri and -mmovdir64b.
7539 2018-04-19  Richard Biener  <rguenther@suse.de>
7541         PR middle-end/85455
7542         * cfg.c (clear_bb_flags): When loop state says we have
7543         marked irreducible regions also preserve BB_IRREDUCIBLE_LOOP.
7545 2018-04-19  Richard Biener  <rguenther@suse.de>
7547         PR tree-optimization/84737
7548         * tree-vect-data-refs.c (vect_copy_ref_info): New function
7549         copying restrict info.
7550         (vect_setup_realignment): Use it.
7551         * tree-vectorizer.h (vect_copy_ref_info): Declare.
7552         * tree-vect-stmts.c (vectorizable_store): Copy ref info from
7553         the first DR to all generated stores.
7554         (vectorizable_load): Likewise for loads.
7556 2018-04-19  Jakub Jelinek  <jakub@redhat.com>
7558         PR tree-optimization/85446
7559         * match.pd ((intptr_t) x eq/ne CST to x eq/ne (typeof x) cst): Require
7560         the integral and pointer types to have the same precision.
7562         * doc/install.texi: Document --disable-cet being the default and
7563         --enable-cet=auto.
7565 2018-04-18  Martin Liska  <mliska@suse.cz>
7567         * ipa-devirt.c (odr_subtypes_equivalent_p): Fix GNU coding
7568         style.
7570 2018-04-18  Martin Liska  <mliska@suse.cz>
7572         Revert
7573         2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
7575         PR ipa/83983
7576         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
7577         arguments if they are comparable.
7579 2018-04-18  Martin Liska  <mliska@suse.cz>
7581         Revert
7582         2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
7584         PR lto/84805
7585         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
7586         incomplete types.
7588 2018-04-18  H.J. Lu  <hongjiu.lu@intel.com>
7590         PR target/85388
7591         * config/i386/i386.c (ix86_expand_split_stack_prologue): Insert
7592         ENDBR after calling __morestack.
7594 2018-04-18  David Malcolm  <dmalcolm@redhat.com>
7596         PR jit/85384
7597         * configure.ac (gcc-driver-name.h): Honor --with-gcc-major-version
7598         by using gcc_base_ver to generate a gcc_driver_version, and use
7599         it when generating GCC_DRIVER_NAME.
7600         * configure: Regenerate.
7602 2018-04-18  Jakub Jelinek  <jakub@redhat.com>
7604         PR target/81084
7605         * config.gcc: Obsolete powerpc*-*-*spe*.
7607 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
7609         PR debug/84637
7610         * dbxout.c (dbxout_int): Perform negation in unsigned int type.
7611         (stabstr_D): Change type of unum from unsigned int to
7612         unsigned HOST_WIDE_INT.  Perform negation in unsigned HOST_WIDE_INT
7613         type.
7615 2018-04-17  Jim Wilson  <jimw@sifive.com>
7617         PR 84856
7618         * config/riscv/riscv.c (riscv_compute_frame_info): Add calls to
7619         RISCV_STACK_ALIGN when using outgoing_args_size and pretend_args_size.
7620         Set arg_pointer_offset after using pretend_args_size.
7622 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
7624         PR rtl-optimization/85431
7625         * dse.c (record_store): Ignore zero width stores.
7627         PR sanitizer/85230
7628         * asan.c (handle_builtin_stack_restore): Adjust comment.  Emit
7629         __asan_allocas_unpoison call and last_alloca_addr = new_sp before
7630         __builtin_stack_restore rather than after it.
7631         * builtins.c (expand_asan_emit_allocas_unpoison): Pass
7632         arg1 + (virtual_dynamic_stack_rtx - stack_pointer_rtx) as second
7633         argument instead of virtual_dynamic_stack_rtx.
7635 2018-04-17  Kelvin Nilsen  <kelvin@gcc.gnu.org>
7637         * config/rs6000/rs6000-protos.h (rs6000_builtin_is_supported_p):
7638         New prototype.
7639         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
7640         Add note to error message to explain internal mapping of overloaded
7641         built-in function name to non-overloaded built-in function name.
7642         * config/rs6000/rs6000.c (rs6000_builtin_is_supported_p): New
7643         function.
7645 2018-04-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
7647         PR target/85424
7648         * config/rs6000/rs6000.md (pack<mode>): Do not try handle a pack
7649         where the inputs overlap with the output.
7651 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
7653         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): Add
7654         (=v, v) alternative and explicit "memory" attribute.
7655         (vec_extract_lo_<mode><mask_name>): Likewise.  Also add
7656         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
7657         attributes.
7658         (vec_extract_lo_<mode><mask_name>): Add (=v, v) alternative and use
7659         "sselog1" type instead of "sselog".
7660         (vec_extract_hi_<mode><mask_name>): Use "sselog1" type instead of
7661         "sselog".  Remove explicit "memory" attribute.
7662         (vec_extract_lo_v32hi): Add (=v, v) alternative and explicit "memory",
7663         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
7664         attributes.
7665         (vec_extract_hi_v32hi): Merge all alternatives into one, use
7666         "sselog1" type instead of "sselog".  Remove explicit "memory"
7667         attribute.
7668         (vec_extract_hi_v16hi): Merge each pair of alternatives into one,
7669         use "sselog1" type instead of "sselog".  Remove explicit "memory"
7670         attribute.
7671         (vec_extract_lo_v64qi): Add (=v, v) alternative and explicit "memory",
7672         "type", "prefix", "prefix_extra", "length_immediate" and "mode"
7673         attributes.
7674         (vec_extract_hi_v64qi): Merge all alternatives into one, use
7675         "sselog1" type instead of "sselog".  Remove explicit "memory"
7676         attribute.
7677         (vec_extract_hi_v32qi): Merge each pair of alternatives into one,
7678         use "sselog1" type instead of "sselog".  Remove explicit "memory"
7679         attribute.
7681         PR target/85430
7682         * config/i386/i386.md (*ashlqi3_1_slp): Use alu1 type instead of alu.
7684         PR middle-end/85414
7685         * rtlhooks.c (gen_lowpart_if_possible): Don't call gen_lowpart_SUBREG
7686         on a SUBREG.
7688 2018-04-17  Martin Jambor  <mjambor@suse.cz>
7690         PR ipa/85421
7691         * ipa-cp.c (create_specialized_node): Call
7692         expand_all_artificial_thunks if necessary.
7694 2018-04-17  Martin Liska  <mliska@suse.cz>
7696         PR lto/85405
7697         * ipa-devirt.c (odr_types_equivalent_p): Remove trailing
7698         in message, remote space in between '_G' and '('.
7700 2018-04-17  Jakub Jelinek  <jakub@redhat.com>
7702         PR target/85281
7703         * config/i386/sse.md (reduces<mode><mask_scalar_name>,
7704         avx512f_vmcmp<mode>3<round_saeonly_name>,
7705         avx512f_vmcmp<mode>3_mask<round_saeonly_name>,
7706         avx512f_sgetexp<mode><mask_scalar_name><round_saeonly_scalar_name>,
7707         avx512f_rndscale<mode><round_saeonly_name>,
7708         avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
7709         avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
7710         Use %<iptr>2 instead of %2 for -masm=intel.
7711         (avx512f_vcvtss2usi<round_name>, avx512f_vcvtss2usiq<round_name>,
7712         avx512f_vcvttss2usi<round_saeonly_name>,
7713         avx512f_vcvttss2usiq<round_saeonly_name>): Use %k1 instead of %1 for
7714         -masm=intel.
7715         (avx512f_vcvtsd2usi<round_name>, avx512f_vcvtsd2usiq<round_name>,
7716         avx512f_vcvttsd2usi<round_saeonly_name>,
7717         avx512f_vcvttsd2usiq<round_saeonly_name>, ufloatv2siv2df2<mask_name>):
7718         Use %q1 instead of %1 for -masm=intel.
7719         (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>,
7720         avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Use %<iptr>3 instead
7721         of %3 for -masm=intel.
7722         (sse2_shufpd_v2df_mask): Fix a typo, change %{6%} to %{%6%} for
7723         -masm=intel.
7724         (*avx512vl_<code>v2div2qi2_store): Use %w0 instead of %0 for
7725         -masm=intel.
7726         (*avx512vl_<code><mode>v4qi2_store): Use %k0 instead of %0 for
7727         -masm=intel.
7728         (avx512vl_<code><mode>v4qi2_mask_store): Use a single pattern with
7729         %k0 and %1 for -masm=intel rather than two patterns, one with %0 and
7730         %g1.
7731         (*avx512vl_<code><mode>v8qi2_store): Use %q0 instead of %0 for
7732         -masm=intel.
7733         (avx512vl_<code><mode>v8qi2_mask_store): Use a single pattern with
7734         %q0 and %1 for -masm=intel rather than two patterns, one with %0 and
7735         %g1 and one with %0 and %1.
7736         (avx512er_vmrcp28<mode><round_saeonly_name>,
7737         avx512er_vmrsqrt28<mode><round_saeonly_name>): Use %<iptr>1 instead of
7738         %1 for -masm=intel.
7739         (avx5124fmaddps_4fmaddps_mask, avx5124fmaddps_4fmaddss_mask,
7740         avx5124fmaddps_4fnmaddps_mask, avx5124fmaddps_4fnmaddss_mask,
7741         avx5124vnniw_vp4dpwssd_mask, avx5124vnniw_vp4dpwssds_mask): Swap order
7742         of %0 and %{%4%} for -masm=intel.
7743         (avx5124fmaddps_4fmaddps_maskz, avx5124fmaddps_4fmaddss_maskz,
7744         avx5124fmaddps_4fnmaddps_maskz, avx5124fmaddps_4fnmaddss_maskz,
7745         avx5124vnniw_vp4dpwssd_maskz, avx5124vnniw_vp4dpwssds_maskz): Swap
7746         order of %0 and %{%5%}%{z%} for -masm=intel.
7748 2018-04-17  Jan Hubicka  <jh@suse.cz>
7750         PR lto/85405
7751         * ipa-devirt.c (odr_types_equivalent_p): Handle bit fields.
7753 2018-04-17  Martin Liska  <mliska@suse.cz>
7755         PR ipa/85329
7756         * multiple_target.c (create_dispatcher_calls): Set apostrophes
7757         for target_clone error message.  Make default implementation
7758         clone to be a local declaration.
7759         (separate_attrs): Add new argument and check for an empty
7760         string.
7761         (expand_target_clones): Handle it.
7762         (ipa_target_clone): Make redirection just for target_clones
7763         functions.
7765 2018-04-16  Cesar Philippidis  <cesar@codesourcery.com>
7766             Tom de Vries  <tom@codesourcery.com>
7768         PR middle-end/84955
7769         * omp-expand.c (expand_oacc_for): Add dummy false branch for
7770         tiled basic blocks without omp continue statements.
7772 2018-04-16  Aaron Sawdey  <acsawdey@linux.ibm.com>
7774         PR target/83660
7775         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Mark
7776         vec_extract expression as having side effects to make sure it gets
7777         a cleanup point.
7779 2018-04-16  H.J. Lu  <hongjiu.lu@intel.com>
7781         PR target/85403
7782         * config/i386/i386.c (get_builtin_code_for_version): Check
7783         error_mark_node.
7785 2018-04-16  Olga Makhotina  <olga.makhotina@intel.com>
7787         PR target/84331
7788         * gcc/config.gcc: Support "skylake".
7789         * gcc/config/i386/i386-c.c (ix86_target_macros_internal): Handle
7790         PROCESSOR_SKYLAKE.
7791         * gcc/config/i386/i386.c (m_SKYLAKE): Define.
7792         (processor_target_table): Add "skylake".
7793         (ix86_option_override_internal): Add "skylake".
7794         (get_builtin_code_for_version): Handle PROCESSOR_SKYLAKE,
7795         PROCESSOR_CANNONLAKE.
7796         (get_builtin_code_for_version): Fix priority for
7797         PROCESSOR_ICELAKE_CLIENT, PROCESSOR_ICELAKE_SERVER,
7798         PROCESSOR_SKYLAKE-AVX512.
7799         * gcc/config/i386/i386.h (processor_costs): Define TARGET_SKYLAKE.
7800         (processor_type): Add PROCESSOR_SKYLAKE.
7802 2018-04-16  Paolo Carlini  <paolo.carlini@oracle.com>
7803             Jason Merrill  <jason@redhat.com>
7805         PR c++/85112
7806         * convert.c (convert_to_integer_1): Use direct recursion for
7807         enumeral types and types with a precision less than the number
7808         of bits in their mode.
7810 2018-04-16  Julia Koval  <julia.koval@intel.com>
7812         PR target/84413
7813         * config/i386/x86-tune.def (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL,
7814         X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Add m_SKYLAKE_AVX512
7816 2018-04-14  Segher Boessenkool  <segher@kernel.crashing.org>
7818         PR target/85293
7819         * config/rs6000/rs6000.opt (mdirect-move): Make deprecated.
7820         * doc/invoke.texi (RS/6000 and PowerPC Options): Remove -mdirect-move
7821         and -mno-direct-move.
7823 2018-04-13  Paul A. Clarke  <pc@us.ibm.com>
7825         PR target/83402
7826         * config/rs6000/emmintrin.h (_mm_slli_epi{16,32,64}):
7827         Ensure that vec_splat_s32 is only called with 0 <= shift < 16.
7828         Ensure negative shifts result in {0}.
7830 2018-04-13  Vladimir Makarov  <vmakarov@redhat.com>
7832         PR rtl-optimization/79916
7833         * config/rs6000/rs6000.c (rs6000_emit_move): Use assigned hard
7834         regs (if any) to define how to gnerate SD moves when LRA is in
7835         progress.
7837 2018-04-13  Jakub Jelinek  <jakub@redhat.com>
7839         PR rtl-optimization/85393
7840         * except.h (expand_dw2_landing_pad_for_region): Remove declaration.
7841         * except.c (expand_dw2_landing_pad_for_region): Make static.
7842         * bb-reorder.c (fix_up_crossing_landing_pad): In new_bb emit just
7843         a label and unconditional jump to old_bb, rather than
7844         expand_dw2_landing_pad_for_region insn(s) and jump to single_succ
7845         basic block.
7847         PR rtl-optimization/85376
7848         * simplify-rtx.c (simplify_const_unary_operation): For CLZ and CTZ and
7849         zero op0, if C?Z_DEFINED_VALUE_AT_ZERO is false, return NULL_RTX
7850         instead of a specific value.
7852 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
7853             Bin Cheng  <bin.cheng@arm.com>
7855         PR tree-optimization/82965
7856         PR tree-optimization/83991
7857         * cfgloopanal.c (expected_loop_iterations_unbounded): Add
7858         by_profile_only parameter.
7859         * cfgloopmanip.c (scale_loop_profile): Further scale loop's profile
7860         information if the loop was predicted to iterate too many times.
7861         * cfgloop.h (expected_loop_iterations_unbounded): Update prototype
7863 2018-04-13  Jan Hubicka  <hubicka@ucw.cz>
7865         PR lto/71991
7866         * config/i386/i386.c (ix86_can_inline_p): Allow safe transitions for
7867         always inline.
7869 2018-04-13  Martin Liska  <mliska@suse.cz>
7870             Jakub Jelinek  <jakub@redhat.com>
7872         PR middle-end/81657
7873         * expr.h (enum block_op_methods): Add BLOCK_OP_NO_LIBCALL_RET.
7874         * expr.c (emit_block_move_hints): Handle BLOCK_OP_NO_LIBCALL_RET.
7875         * builtins.c (expand_builtin_memory_copy_args): Use
7876         BLOCK_OP_NO_LIBCALL_RET method for mempcpy with non-ignored target,
7877         handle dest_addr == pc_rtx.
7879 2018-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
7881         PR target/85291
7882         * config/rs6000/rs6000.md (fix_trunc<mode>si2): Use legacy code if
7883         asked to not generate direct moves.
7884         (fix_trunc<mode>si2_stfiwx): Similar.
7885         (fix_trunc<mode>si2_internal): Similar.
7887 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
7889         PR debug/83157
7890         * var-tracking.c (add_stores): Handle STRICT_LOW_PART SET_DEST.
7891         * cselib.c (cselib_record_sets): For STRICT_LOW_PART dest,
7892         lookup if dest in some wider mode is known to be const0_rtx and
7893         if so, record permanent equivalence for it to be ZERO_EXTEND of
7894         the narrower mode destination.
7896 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
7898         * lto-streamer-out.c (output_function): Revert 259346.
7899         * omp-expand.c (expand_oacc_for): Likewise.
7901 2018-04-12  Alexander Monakov  <amonakov@ispras.ru>
7903         PR rtl-optimization/85354
7904         * sel-sched-ir.c (sel_init_pipelining): Move cfg_cleanup call...
7905         * sel-sched.c (sel_global_init): ... here.
7907 2018-04-12  Eric Botcazou  <ebotcazou@adacore.com>
7909         PR target/85238
7910         * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
7911         * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
7912         mode for PE-COFF targets.
7913         * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
7914         (i386_pe_asm_lto_end): Likewise.
7915         * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
7916         (TARGET_ASM_LTO_END): Likewise.
7917         * config/i386/winnt.c (saved_debug_info_level): New static variable.
7918         (i386_pe_asm_lto_start): New function.
7919         (i386_pe_asm_lto_end): Likewise.
7921 2018-04-12  Cesar Philippidis  <cesar@codesourcery.com>
7922             Richard Biener  <rguenther@suse.de>
7924         PR middle-end/84955
7925         * lto-streamer-out.c (output_function): Fix CFG loop state before
7926         streaming out.
7927         * omp-expand.c (expand_oacc_for): Handle calls to internal
7928         functions like regular functions.
7930 2018-04-12  Richard Biener  <rguenther@suse.de>
7932         PR lto/85371
7933         * dwarf2out.c (init_sections_and_labels): Use debug_line_section[_label]
7934         for the early LTO debug to properly generate references to it
7935         during DIE emission.  Do not re-use that for the skeleton for
7936         split-dwarf.
7937         (dwarf2out_early_finish): Likewise.
7939 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
7941         PR target/85328
7942         * config/i386/sse.md
7943         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name> split,
7944         <mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name> split,
7945         vec_extract_lo_<mode><mask_name> split, vec_extract_lo_v32hi,
7946         vec_extract_lo_v64qi): For non-AVX512VL if input is xmm16+ reg
7947         and output is a reg, avoid creating invalid lowpart subreg, but
7948         instead split into a 512-bit move.  Don't split if not AVX512VL,
7949         input is xmm16+ reg and output is a mem.
7950         (vec_extract_lo_<mode><mask_name>, vec_extract_lo_v32hi,
7951         vec_extract_lo_v64qi): Don't require split if not AVX512VL, input is
7952         xmm16+ reg and output is a mem.
7954 2018-04-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
7956         * config/s390/s390.c (s390_output_indirect_thunk_function): Check
7957         also for flag_dwarf2_cfi_asm.
7959 2018-04-12  Jakub Jelinek  <jakub@redhat.com>
7961         PR rtl-optimization/85342
7962         * regcprop.c (copyprop_hardreg_forward_1): Remove replaced array, use
7963         a bool scalar var inside of the loop instead.  Don't try to update
7964         recog_data.operand after failed apply_change_group.
7966 2018-04-12  Tom de Vries  <tom@codesourcery.com>
7968         PR target/85296
7969         * config/nvptx/nvptx.c (flexible_array_member_type_p): New function.
7970         (nvptx_assemble_decl_begin): Add undefined param.  Declare undefined
7971         array with flexible array member as array without given dimension.
7972         (nvptx_assemble_undefined_decl): Set nvptx_assemble_decl_begin call
7973         argument for undefined param to true.
7975 2018-04-11  Aaron Sawdey  <acsawdey@linux.ibm.com>
7977         PR target/85321
7978         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
7979         -mcall- and -mtraceback=. Remove options -mabi=spe and -mabi=no-spe
7980         from PowerPC section.
7981         * config/rs6000/sysv4.opt (mcall-): Improve help text.
7982         * config/rs6000/rs6000.opt (mblock-compare-inline-limit=): Trim
7983         help text that is too long.
7984         * config/rs6000/rs6000.opt (mblock-compare-inline-loop-limit=): Trim
7985         help text that is too long.
7986         * config/rs6000/rs6000.opt (mstring-compare-inline-limit=): Trim
7987         help text that is too long.
7989 2018-04-11  Uros Bizjak  <ubizjak@gmail.com>
7991         * config/alpha/alpha.md (stack_probe_internal): Rename
7992         from "probe_stack".  Update all callers.
7994 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
7996         PR rtl-optimization/84566
7997         * sched-deps.c (sched_analyze_insn): Check deps->readonly when invoking
7998         sched_macro_fuse_insns.
8000 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
8002         PR target/84301
8003         * sched-rgn.c (add_branch_dependences): Move sel_sched_p check here...
8004         (compute_block_dependences): ... from here.
8006 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
8008         PR tree-optimization/85331
8009         * vec-perm-indices.h (vec_perm_indices::clamp): Change input type
8010         from int to HOST_WIDE_INT.
8012 2018-04-11  Martin Jambor  <mjambor@suse.cz>
8014         PR ipa/84149
8015         * ipa-cp.c (propagate_vals_across_pass_through): Expand comment.
8016         (cgraph_edge_brings_value_p): New parameter dest_val, check if it is
8017         not the same as the source val.
8018         (cgraph_edge_brings_value_p): New parameter.
8019         (gather_edges_for_value): Pass destination value to
8020         cgraph_edge_brings_value_p.
8021         (perhaps_add_new_callers): Likewise.
8022         (get_info_about_necessary_edges): Likewise and exclude values brought
8023         only by self-recursive edges.
8024         (create_specialized_node): Redirect only clones of self-calling edges.
8025         (+self_recursive_pass_through_p): New function.
8026         (find_more_scalar_values_for_callers_subset): Use it.
8027         (find_aggregate_values_for_callers_subset): Likewise.
8028         (known_aggs_to_agg_replacement_list): Removed.
8029         (decide_whether_version_node): Re-calculate known constants for all
8030         remaining context clones.
8032 2018-04-11  Richard Biener  <rguenther@suse.de>
8034         PR lto/85339
8035         * dwarf2out.c (dwarf2out_finish): Remove DW_AT_stmt_list attribute
8036         from early DWARF output.
8037         (dwarf2out_early_finish): Output line info unconditionally into
8038         early DWARF and add reference to it.
8040 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
8042         PR target/85281
8043         * config/i386/sse.md (iptr): Add V16SFmode and V8DFmode cases.
8044         (<avx512>_vec_dup<mode><mask_name>): Use a single pattern for modes
8045         other than V2DFmode using iptr mode attribute.
8046         (<avx512>_vec_dup<mode><mask_name>): Use iptr mode attribute.
8048 2018-04-11  Alexander Monakov  <amonakov@ispras.ru>
8050         PR rtl-optimization/84659
8051         * sel-sched-ir.c (sel_init_pipelining): Invoke cleanup_cfg.
8053 2018-04-11  Jakub Jelinek  <jakub@redhat.com>
8055         PR debug/85302
8056         * dwarf2out.c (skip_loc_list_entry): Don't call size_of_locs if
8057         SIZEP is NULL.
8058         (output_loc_list): Pass address of a dummy size variable even in the
8059         locview handling loop.
8060         (index_location_lists): Add comment on why skip_loc_list_entry can't
8061         call size_of_locs.
8063 2018-04-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
8065         PR target/85261
8066         * config/arm/arm-builtins.c (arm_expand_builtin): Force input operand
8067         into register.
8069 2018-04-10  Aaron Sawdey  <acsawdey@linux.ibm.com>
8071         PR target/85321
8072         * doc/invoke.texi (RS/6000 and PowerPC Options): Document options
8073         -mblock-compare-inline-limit, -mblock-compare-inline-loop-limit,
8074         and -mstring-compare-inline-limit.
8076 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
8078         PR target/85287
8079         * gcc/config/rs6000/rs6000.md (allocate_stack): Put the residual size
8080         for stack clash protection in a register whenever we need it to be in
8081         a register.
8083 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
8085         * common/config/rs6000/rs6000-common.c (rs6000_option_init_struct):
8086         Enable -fasynchronous-unwind-tables by default if OBJECT_FORMAT_ELF.
8088 2018-04-10  Segher Boessenkool  <segher@kernel.crashing.org>
8090         PR target/85321
8091         * config/rs6000/rs6000.opt (mtraceback=): Show the allowed values in
8092         the help text.
8093         (mlong-double-): Ditto.
8094         * config/rs6000/sysv4.opt (msdata=): Ditto.
8095         (mtls-size=): Ditto.
8097 2018-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
8099         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Remove
8100         erroneous entries for
8101         "vector int vec_ldl (int, long int *)", and
8102         "vector unsigned int vec_ldl (int, unsigned long int *)".
8103         Add comments and entries for
8104         "vector bool char vec_ldl (int, bool char *)",
8105         "vector bool short vec_ldl (int, bool short *)",
8106         "vector bool int vec_ldl (int, bool int *)",
8107         "vector bool long long vec_ldl (int, bool long long *)",
8108         "vector pixel vec_ldl (int, pixel *)",
8109         "vector long long vec_ldl (int, long long *)",
8110         "vector unsigned long long vec_ldl (int, unsigned long long *)".
8111         * config/rs6000/rs6000.c (rs6000_init_builtins): Initialize new
8112         type tree bool_long_long_type_node and correct definition of
8113         bool_V2DI_type_node to make reference to this new type tree.
8114         (rs6000_mangle_type): Replace erroneous reference to
8115         bool_long_type_node with bool_long_long_type_node.
8116         * config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Add
8117         comments to emphasize sign distinctions for char and int types and
8118         replace RS6000_BTI_bool_long constant with
8119         RS6000_BTI_bool_long_long constant.  Also add comment to restrict
8120         use of RS6000_BTI_pixel.
8121         (bool_long_type_node): Remove this macro definition.
8122         (bool_long_long_type_node): New macro definition
8124 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
8126         PR rtl-optimization/85300
8127         * combine.c (subst): Handle subst of CONST_SCALAR_INT_P new_rtx also
8128         into FLOAT and UNSIGNED_FLOAT like ZERO_EXTEND, return a CLOBBER if
8129         simplify_unary_operation fails.
8131 2018-04-10  Martin Liska  <mliska@suse.cz>
8133         * gdbhooks.py: Add pretty-printers for varpool_node, symtab_node,
8134         cgraph_edge and ipa_ref.
8136 2018-04-10  Jakub Jelinek  <jakub@redhat.com>
8138         PR target/85177
8139         PR target/85255
8140         * config/i386/sse.md
8141         (<extract_type>_vinsert<shuffletype><extract_suf>_mask): Fix
8142         computation of the VEC_MERGE selector from mask.
8143         (<extract_type>_vinsert<shuffletype><extract_suf>_1<mask_name>):
8144         Fix decoding of the VEC_MERGE selector into mask.
8146 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
8148         PR tree-optimization/85286
8149         * tree-vect-data-refs.c (vect_get_smallest_scalar_type):
8151 2018-04-10  Richard Sandiford  <richard.sandiford@linaro.org>
8153         * final.c (final_1): Set insn_last_address as well as
8154         insn_current_address.
8156 2018-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
8158         PR target/85173
8159         * explow.c (emit_stack_probe): Call validize_mem on memory location
8160         before passing it to gen_probe_stack.  Create address operand and
8161         legitimize it for the probe_stack_address case.
8163 2018-04-09  Jan Hubicka  <jh@suse.cz>
8165         PR lto/85078
8166         * ipa-devirt.c (rebuild_type_inheritance-hash): New.
8167         * ipa-utils.h (rebuild_type_inheritance-hash): Declare.
8168         * tree.c (free_lang_data_in_type): Fix handling of binfos;
8169         walk basetypes.
8170         (free_lang_data): Rebuild type inheritance graph.
8172 2018-04-09  Martin Sebor  <msebor@redhat.com>
8174         * invoke.texi (-finline-small-functions): Mention other optimization
8175         options.
8176         (-findirect-inlining, -fpartial-inlining): Same.
8177         (-finline-functions-called-once): Same.
8178         (-freorder-blocks-and-partition): Same.
8180 2018-04-09  Jan Hubicka  <jh@suse.cz>
8182         PR rtl/84058
8183         * cfgcleanup.c (try_forward_edges): Do not give up on crossing
8184         jumps; choose last target that matches the criteria (i.e.
8185         no partition changes for non-crossing jumps).
8186         * cfgrtl.c (cfg_layout_redirect_edge_and_branch): Add basic
8187         support for redirecting crossing jumps to non-crossing.
8189 2018-04-09  Alexey Brodkin  <abrodkin@synopsys.com>
8191         * config/arc/arc.c (arc_expand_prologue): Set stack usage info
8192         also for naked functions.
8194 2018-04-09  Claudiu Zissulescu  <claziss@synopsys.com>
8196         * config/arc/arc.md (add_shift): New pattern.
8197         (add_shift2): Likewise.
8198         (sub_shift): Likewise.
8199         (sub_shift_cmp0_noout): Likewise.
8200         (compare_si_ashiftsi): Likewise.
8201         (xbfu_cmp0_noout): New combine pattern.
8202         (xbfu_cmp0"): Likewise.
8203         (movsi_set_cc_insn): Place the predicable variant first.
8204         (commutative_binary_cmp0_noout): Remove clobber.
8205         (commutative_binary_cmp0): New pattern.
8206         (noncommutative_binary_cmp0): Likewise.
8207         (noncommutative_binary_cmp0_noout): Likewise.
8208         (noncommutative_binary_comparison_result_used): Removed.
8209         (rsub_cmp0): New pattern.
8210         (rsub_cmp0_noout): Likewise.
8211         (extzvsi): Changed, keep only meaningful variants.
8212         (SQH, SEZ): New iterators.
8213         (SQH_postfix): New mode attribute.
8214         (SEZ_prefix): New code attribute.
8215         (<SEZ_prefix>xt<SQH_postfix>_cmp0_noout): New instruction pattern.
8216         (<SEZ_prefix>xt<SQH_postfix>_cmp0): Likewise.
8217         * config/arc/predicates.md (cc_set_register): Use CC_REG instead
8218         of numerical value.
8219         (noncommutative_operator): Check the availability of barrel
8220         shifter option.
8222 2018-04-09  Richard Biener  <rguenther@suse.de>
8224         PR tree-optimization/85284
8225         * tree-ssa-loop-niter.c (number_of_iterations_exit_assumptions):
8226         Only use the niter constraining form of simple_iv when the exit
8227         is always executed.
8229 2018-04-09  Tom de Vries  <tom@codesourcery.com>
8231         PR target/84041
8232         * config/nvptx/nvptx.md (define_c_enum "unspecv"): Add UNSPECV_MEMBAR.
8233         (define_expand "*memory_barrier"): New define_expand.
8234         (define_insn "memory_barrier"): New insn.
8236 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
8238         PR rtl-optimization/80463
8239         PR rtl-optimization/83972
8240         PR rtl-optimization/83480
8242         * sel-sched-ir.c (has_dependence_note_mem_dep): Take into account the
8243         correct producer for the insn.
8244         (tidy_control_flow): Fixup seqnos in case of debug insns.
8246 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
8248         PR rtl-optimization/83913
8250         * sel-sched-ir.c (merge_expr_data): Choose the middle between two
8251         different sched-times when merging exprs.
8253 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
8255         PR rtl-optimization/83962
8257         * sel-sched-ir.c (tidy_control_flow): Correct the order in which we call
8258         tidy_fallthru_edge and tidy_control_flow.
8260 2018-04-09  Andrey Belevantsev  <abel@ispras.ru>
8262         PR rtl-optimization/83530
8264         * sel-sched.c (force_next_insn): New global variable.
8265         (remove_insn_for_debug): When force_next_insn is true, also leave only
8266         next insn in the ready list.
8267         (sel_sched_region): When the region wasn't scheduled, make another pass
8268         over it with force_next_insn set to 1.
8270 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
8272         * config.gcc (nds32le-*-*, nds32be-*-*): Add nds32/nds32_intrinsic.h
8273         into tm_file.
8274         * config/nds32/constants.md (unspec_volatile_element): Add enum values
8275         for interrupt control.
8276         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
8277         functions for interrupt control.
8278         * config/nds32/nds32-intrinsic.md: Likewise.
8279         * config/nds32/nds32_intrinsic.h: Likewise.
8280         * config/nds32/nds32.h (nds32_builtins): Likewise.
8282 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
8284         * config/nds32/nds32.c (nds32_init_machine_status,
8285         nds32_legitimate_index_p, nds32_legitimate_address_p): Consider
8286         strict_aligned_p field.
8287         (nds32_expand_to_rtl_hook): New function.
8288         (TARGET_EXPAND_TO_RTL_HOOK): Define.
8289         * config/nds32/nds32.h (machine_function): Add strict_aligned_p field.
8291 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
8292             Chung-Ju Wu  <jasonwucj@gmail.com>
8294         * config.gcc (nds32*-*-*): Check that n7 is valid to --with-cpu.
8295         * config/nds32/nds32-n7.md: New file.
8296         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N7.
8297         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n7
8298         pipeline.
8299         * config/nds32/nds32-protos.h: More declarations for n7 pipeline.
8300         * config/nds32/nds32.md (pipeline_model): Add n7.
8301         * config/nds32/nds32.opt (mcpu): Support n7 pipeline cpus.
8302         * config/nds32/pipelines.md: Include n7 settings.
8304 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
8305             Chung-Ju Wu  <jasonwucj@gmail.com>
8307         * config.gcc (nds32*-*-*): Check that e8 is valid to --with-cpu.
8308         * config/nds32/nds32-e8.md: New file.
8309         * config/nds32/nds32-opts.h (nds32-cpu_type): Add CPU_E8.
8310         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for e8
8311         pipeline.
8312         * config/nds32/nds32-protos.h: More declarations for e8 pipeline.
8313         * config/nds32/nds32.md (pipeline_model): Add e8.
8314         * config/nds32/nds32.opt (mcpu): Support e8 pipeline cpus.
8315         * config/nds32/pipelines.md: Include e8 settings.
8317 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
8318             Chung-Ju Wu  <jasonwucj@gmail.com>
8320         * config.gcc (nds32*-*-*): Check that n6/n8/s8 are valid to --with-cpu.
8321         * config/nds32/nds32-n8.md: New file.
8322         * config/nds32/nds32-opts.h (nds32_cpu_type): Add CPU_N6 and CPU_N8.
8323         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n8
8324         pipeline.
8325         * config/nds32/nds32-protos.h: More declarations for n8 pipeline.
8326         * config/nds32/nds32-utils.c: More implementations for n8 pipeline.
8327         * config/nds32/nds32.md (pipeline_model): Add n8.
8328         * config/nds32/nds32.opt (mcpu): Support n8 pipeline cpus.
8329         * config/nds32/pipelines.md: Include n8 settings.
8331 2018-04-08  Kito Cheng  <kito.cheng@gmail.com>
8332             Chung-Ju Wu  <jasonwucj@gmail.com>
8334         * config.gcc (nds32*): Add nds32-utils.o into extra_objs.
8335         * config/nds32/nds32-n9-2r1w.md: New file.
8336         * config/nds32/nds32-n9-3r2w.md: New file.
8337         * config/nds32/nds32-opts.h (nds32_cpu_type, nds32_mul_type,
8338         nds32_register_ports): New or modify for cpu n9.
8339         * config/nds32/nds32-pipelines-auxiliary.c: Implementation for n9
8340         pipeline.
8341         * config/nds32/nds32-protos.h: More declarations for n9 pipeline.
8342         * config/nds32/nds32-utils.c: New file.
8343         * config/nds32/nds32.h (TARGET_PIPELINE_N9, TARGET_PIPELINE_SIMPLE,
8344         TARGET_MUL_SLOW): Define.
8345         * config/nds32/nds32.md (pipeline_model): New attribute.
8346         * config/nds32/nds32.opt (mcpu, mconfig-mul, mconfig-register-ports):
8347         New options that support cpu n9.
8348         * config/nds32/pipelines.md: Include n9 settings.
8349         * config/nds32/t-nds32 (nds32-utils.o): Add dependency.
8351 2018-04-08  Chung-Ju Wu  <jasonwucj@gmail.com>
8353         * config/nds32/nds32-md-auxiliary.c (output_cond_branch): Output align
8354         information if necessary.
8355         (output_cond_branch_compare_zero): Likewise.
8356         * config/nds32/nds32.c (nds32_adjust_insn_length): Consider align case.
8357         (nds32_target_alignment): Refine for alignment.
8358         * config/nds32/nds32.h (NDS32_ALIGN_P): Define.
8359         (FUNCTION_BOUNDARY): Modify.
8360         * config/nds32/nds32.md (call_internal, call_value_internal): Consider
8361         align case.
8362         * config/nds32/nds32.opt (malways-align, malign-functions): New.
8364 2018-04-08  Monk Chiang  <sh.chiang04@gmail.com>
8366         * config/nds32/constants.md (unspec_volatile_element): Add values for
8367         TLB operation and data prefetch.
8368         * config/nds32/nds32-intrinsic.c: Implementation of intrinsic
8369         functions for TLB operation and data prefetch.
8370         * config/nds32/nds32-intrinsic.md: Likewise.
8371         * config/nds32/nds32_intrinsic.h: Likewise.
8372         * config/nds32/nds32.c (nds32_dpref_names): Likewise.
8373         (nds32_print_operand): Likewise.
8374         * config/nds32/nds32.h (nds32_builtins): Likewise.
8376 2018-04-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
8377         Andrew Pinski <pinsika@gcc.gnu.org>
8379         PR middle-end/82976
8380         * match.pd: Use constant_boolean_node of correct type instead of
8381         boolean_true_node or boolean_false_node for simplifying
8382         pointer comparisons to zero.
8384 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
8386         PR tree-optimization/80021
8387         * tree.c (verify_type_variant): Make error call in verify_variant_match
8388         translatable and remove final full stop.
8390 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
8392         * config/nds32/constants.md (unspec_volatile_element): Add
8393         UNSPEC_VOLATILE_EH_RETURN.
8394         * config/nds32/nds32-md-auxiliary.c (nds32_output_stack_push,
8395         nds32_output_stack_pop): Support dwarf exception handling process.
8396         * config/nds32/nds32-protos.h (nds32_dynamic_chain_address): Declare.
8397         * config/nds32/nds32.c (nds32_init_machine_status): Support dwarf
8398         exception handling process.
8399         (nds32_compute_stack_frame): Likewise.
8400         (nds32_return_addr_rtx): Likewise.
8401         (nds32_initial_elimination_offset): Likewise.
8402         (nds32_expand_prologue): Likewise.
8403         (nds32_expand_epilogue): Likewise.
8404         (nds32_dynamic_chain_address): New function.
8405         * config/nds32/nds32.h (machine_function): Add fields for dwarf
8406         exception handling.
8407         (DYNAMIC_CHAIN_ADDRESS): Define.
8408         (EH_RETURN_DATA_REGNO): Define.
8409         (EH_RETURN_STACKADJ_RTX): Define.
8410         * config/nds32/nds32.md (eh_return, nds32_eh_return): Implement
8411         patterns for dwarf exception handling.
8413 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
8415         * config/nds32/nds32.h: Clean up obsolete macros.
8417 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
8419         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
8420         Add enum values for particular instructions.
8421         * config/nds32/nds32-intrinsic.c: Implementation of expanding
8422         particular intrinsic functions.
8423         * config/nds32/nds32-intrinsic.md: Likewise.
8424         * config/nds32/nds32_intrinsic.h: Likewise.
8425         * config/nds32/nds32.h (nds32_builtins): Likewise.
8426         * config/nds32/nds32.md (type): Add pbsad and pbsada.
8427         (btst, ave): New patterns for particular instructions.
8429 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
8431         * config/nds32/constants.md (unspec_element, unspec_volatile_element):
8432         Add enum values for atomic load/store and memory sync.
8433         * config/nds32/nds32-intrinsic.c: Implementation for atomic load/store
8434         and memory sync.
8435         * config/nds32/nds32-intrinsic.md: Likewise.
8436         * config/nds32/nds32_intrinsic.h: Likewise.
8437         * config/nds32/nds32.h (nds32_builtins): Likewise.
8439 2018-04-07  Jakub Jelinek  <jakub@redhat.com>
8441         PR tree-optimization/85257
8442         * fold-const.c (native_encode_vector): If not all elts could fit
8443         and off is -1, return 0 rather than offset.
8444         * tree-ssa-sccvn.c (vn_reference_lookup_3): Pass
8445         (offseti - offset2) / BITS_PER_UNIT as 4th argument to
8446         native_encode_expr.  Verify len * BITS_PER_UNIT >= maxsizei.  Don't
8447         adjust buffer in native_interpret_expr call.
8449 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
8451         * config/nds32/constants.md (unspec_volatile_element): Add cache
8452         control enum values.
8453         * config/nds32/nds32-intrinsic.c: Add cache control expand functions.
8454         * config/nds32/nds32-intrinsic.md: Add cache control patterns.
8455         * config/nds32/nds32.c (nds32_cctl_names): New.
8456         (nds32_print_operand): Handle cache control register names.
8457         * config/nds32/nds32.h (nds32_builtins): New enum values.
8458         * config/nds32/nds32_intrinsic.h: Add cache control enum types and
8459         macros.
8460         * config/nds32/nds32.md (type): Add mmu.
8461         * config/nds32/pipelines.md (simple_insn): Add mmu.
8463 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
8465         * config/nds32/nds32.md (type): Remove call.
8466         * config/nds32/pipelines.md (simple_insn): Likewise.
8468 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
8470         * config/nds32/constants.md (unspec_volatile_element): Add
8471         UNSPEC_VOLATILE_FMFCSR, UNSPEC_VOLATILE_FMTCSR and
8472         UNSPEC_VOLATILE_FMFCFG.
8473         * config/nds32/nds32-intrinsic.c (bdesc_noarg): New builtin
8474         description for fmfcfg and fmfcsr.
8475         (bdesc_1arg): Add fmtcsr.
8476         (bdesc_2arg): Add fcpynss, fcpyss, fcpynsd and fcpysd.
8477         (nds32_expand_builtin_impl): Deal with FPU intrinsic functions.
8478         * config/nds32/nds32-intrinsic.md (unspec_fcpynsd, unspec_fcpysd,
8479         unspec_fcpynss, unspec_fcpysd, unspec_fcpyss, unspec_fmfcsr,
8480         unspec_fmfcfg): New patterns.
8481         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FMFCFG,
8482         NDS32_BUILTIN_FMFCSR, NDS32_BUILTIN_FMTCSR, NDS32_BUILTIN_FCPYNSS,
8483         NDS32_BUILTIN_FCPYSS,NDS32_BUILTIN_FCPYNSD and NDS32_BUILTIN_FCPYSD.
8484         * config/nds32/nds32_intrinsic.h (__nds32__fcpynsd, __nds32__fcpynss,
8485         __nds32__fcpysd, __nds32__fcpyss, __nds32__fmfcsr, __nds32__fmtcsr,
8486         __nds32__fmfcfg): Define.
8488 2018-04-07  Monk Chiang  <sh.chiang04@gmail.com>
8490         * config/nds32/nds32.c (nds32_intrinsic_register_names): Add more
8491         intrinsic register names.
8492         * config/nds32/nds32_intrinsic.h (nds32_intrinsic_registers): Add more
8493         intrinsic register enum values and macros.
8495 2018-04-07  Chung-Ju Wu  <jasonwucj@gmail.com>
8497         * config/nds32/nds32.c (nds32_legitimate_index_p): Modify condition
8498         for load/store addressing form.
8499         (nds32_print_operand_address): Likewise.
8501 2018-04-06  Eric Botcazou  <ebotcazou@adacore.com>
8503         PR target/85196
8504         * config/sparc/sparc.c (sparc_expand_move): Deal with symbolic operands
8505         based on LABEL_REF.  Remove useless assertion.
8506         (pic_address_needs_scratch): Fix formatting.
8507         (sparc_legitimize_pic_address): Minor tweaks.
8508         (sparc_delegitimize_address): Adjust assertion accordingly.
8509         * config/sparc/sparc.md (movsi_pic_label_ref): Change label_ref_operand
8510         into symbolic_operand.
8511         (movsi_high_pic_label_ref): Likewise.
8512         (movsi_lo_sum_pic_label_ref): Likewise.
8513         (movdi_pic_label_ref): Likewise.
8514         (movdi_high_pic_label_ref): Likewise.
8515         (movdi_lo_sum_pic_label_ref): Likewise.
8517 2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>
8519         * config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
8520         custom LIB_SPEC setup.
8522 2018-04-06  Ruslan Bukin  <br@bsdpad.com>
8523             Kito Cheng  <kito.cheng@gmail.com>
8525         * config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
8526         * config/riscv/freebsd.h: New.
8528 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
8530         * config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
8531         * config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
8532         file.
8534 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
8535             Kito Cheng  <kito.cheng@gmail.com>
8537         * config/nds32/nds32-md-auxiliary.c (nds32_output_return,
8538         nds32_output_call, nds32_symbol_binds_local_p): New functions.
8539         * config/nds32/nds32-protos.h (nds32_output_call,
8540         nds32_output_return): Declare.
8541         * config/nds32/nds32.md: Refine all the call and return patterns.
8543 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
8545         PR debug/85252
8546         * dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
8547         build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.
8549         PR rtl-optimization/84872
8550         * cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
8551         nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
8552         EDGE_CROSSING edge.
8554 2018-04-06  Tamar Christina  <tamar.christina@arm.com>
8556         * expr.c (copy_blkmode_to_reg): Revert 254862.
8557         * doc/sourcebuild.texi (word_mode_no_slow_unalign): Likewise.
8559 2018-04-06  Richard Biener  <rguenther@suse.de>
8561         PR middle-end/85244
8562         * tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
8563         after seeing a component reference with an adjacent field.  Treat
8564         refs to arrays at struct end of external decls similar to
8565         refs to unconstrained commons.
8567 2018-04-06  Jakub Jelinek  <jakub@redhat.com>
8569         PR sanitizer/85213
8570         * fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
8571         look through SAVE_EXPRs with non-side-effects argument.  Adjust
8572         recursive calls.
8573         (fold_comparison): Adjust twoval_comparison_p caller, don't handle
8574         save_p here.
8576 2018-04-06  Richard Biener  <rguenther@suse.de>
8578         PR middle-end/85180
8579         * alias.c (find_base_term): New wrapper around find_base_term
8580         unwinding CSELIB_VAL_PTR changes.
8581         (find_base_term): Do not restore CSELIB_VAL_PTR during the
8582         recursion.
8584 2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
8586         * config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
8587         instructions.
8588         * config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
8589         constant definitions.
8590         ("nop"): lr 0,0 -> nopr r0
8591         ("nop_lr0", "nop_lr1"): New insn definitions.
8593 2018-04-06  Chung-Ju Wu  <jasonwucj@gmail.com>
8595         * config/nds32/nds32.md (*stack_push, *stack_pop): Use
8596         NDS32_V3PUSH_AVAILABLE_P macro.
8598 2018-04-06  Monk Chiang  <sh.chiang04@gmail.com>
8599             Chung-Ju Wu  <jasonwucj@gmail.com>
8601         * config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
8602         (nds32*-*-*): Add float and fpu_config into supported_defaults.
8603         * common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
8604         Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
8605         * config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
8606         UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
8607         * config/nds32/constraints.md: New constraints and checking for hard
8608         float configuration.
8609         * config/nds32/iterators.md: New mode iterator and attribute for hard
8610         float configuration.
8611         * config/nds32/nds32-doubleword.md: Use hard float alternatives and
8612         patterns.
8613         * config/nds32/nds32-fpu.md: New file.
8614         * config/nds32/nds32-md-auxiliary.c: New functions and checkings to
8615         deal with hard float code generation.
8616         * config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
8617         ARCH_V3S.
8618         (abi_type, float_reg_number): New enum type.
8619         * config/nds32/nds32-predicates.c: New predicates for hard float.
8620         * config/nds32/nds32-protos.h: Declare functions for hard float.
8621         * config/nds32/nds32.c: Implementation for hard float configuration.
8622         * config/nds32/nds32.h: Definitions for hard float configuration.
8623         * config/nds32/nds32.md: Include hard float machine description and
8624         modify patterns for hard float configuration.
8625         * config/nds32/nds32.opt: New options for hard float configuration.
8626         * config/nds32/predicates.md: New predicates for hard float
8627         configuration.
8629 2018-04-06  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
8631         * common/config/nds32/nds32-common.c
8632         (nds32_option_optimization_table): Enable -mreleax-hint by default.
8634 2018-04-05  Jakub Jelinek  <jakub@redhat.com>
8636         PR middle-end/85195
8637         * match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
8638         CONSTRUCTOR_ELT (ctor, ...)->value.
8640 2018-04-05  Uros Bizjak  <ubizjak@gmail.com>
8642         PR target/85193
8643         * config/i386/i386.md (define_attr "memory"): Handle rotate1 type.
8645 2018-04-05  Tom de Vries  <tom@codesourcery.com>
8647         PR target/85204
8648         * config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
8649         cond jump.
8651 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
8652             Kito Cheng  <kito.cheng@gmail.com>
8654         * config/nds32/constraints.md (U33): Fine-tune checking condition.
8655         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
8656         * config/nds32/nds32.h (nds32_16bit_address_type): Add
8657         ADDRESS_POST_MODIFY_LO_REG_IMM3U.
8659 2018-04-05  Shiva Chen  <shiva0217@gmail.com>
8660             Kito Cheng  <kito.cheng@gmail.com>
8662         * config/nds32/constraints.md (Ufe): New memory constraint.
8663         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
8664         nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
8665         * config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
8666         operands.
8667         * config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
8668         * config/nds32/nds32.md (*mov<mode>): Adjust pattern.
8670 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
8672         * config/nds32/nds32.md: Use optimize_size in the condition for
8673         alu-shift instructions.
8675 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
8677         * config/nds32/nds32.md (divsi4, udivsi4): New patterns.
8679 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
8681         * config/nds32/nds32.md (negsi2): Refine pattern.
8683 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
8684             Chung-Ju Wu  <jasonwucj@gmail.com>
8686         * config/nds32/iterators.md (shift_rotate): New code iterator.
8687         (shift): New code attribute.
8688         * config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
8689         * config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
8690         * config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
8691         * config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
8692         bit-wise operations.
8693         (andsi3, *andsi3): Ditto.
8694         (iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
8695         (xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
8696         (<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
8697         * config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
8698         nds32_ior_operand, nds32_xor_operand): New predicates.
8700 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
8702         * config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
8703         (addsi3, subsi3): ... this.
8705 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
8707         * config/nds32/nds32.md (*sub_srli, *and_slli): Fine-tune predicator.
8709 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
8711         * config/nds32/nds32.md: Adjust indention.
8713 2018-04-05  Kito Cheng  <kito.cheng@gmail.com>
8715         * config/nds32/nds32.md (feature): New attribute.
8717 2018-04-05  Chung-Ju Wu  <jasonwucj@gmail.com>
8719         * config/nds32/nds32.md (subtype): New attribute.
8721 2018-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
8723         PR target/85203
8724         * config/arm/arm-builtins.c (arm_expand_builtin): Change
8725         expansion to perform a bitwise AND of the argument followed by a
8726         boolean negation of the result.
8728 2018-04-04  Peter Bergner  <bergner@vnet.ibm.com>
8730         PR rtl-optimization/84878
8731         * ddg.c (add_cross_iteration_register_deps): Use DF_REF_BB to determine
8732         the basic block.  Assert the use reference is not artificial and that
8733         it has an associated insn.
8735 2018-04-04  Michael Matz  <matz@suse.de>
8737         * builtins.c (compute_objsize): Pass correct operand
8738         to array_at_struct_end_p.
8740 2018-04-04  Richard Biener  <rguenther@suse.de>
8742         PR lto/85176
8743         * dwarf2out.c (dwarf2out_register_external_die): Peel namespaces
8744         from contexts for DINFO_LEVEL_TERSE and below.
8746 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
8748         * config/nds32/nds32-doubleword.md (move_<mode>): Require
8749         resiter_operand condition.
8750         * config/nds32/nds32.md (*move<mode>): Ditto.
8752 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
8753             Monk Chiang  <sh.chiang04@gmail.com>
8755         * config/nds32/nds32.md (movmisalign<mode>): New pattern.
8757 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
8759         * config/nds32/nds32.md (movqi, movhi): Merge into mov<mode>.
8761 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
8762             Kito Cheng  <kito.cheng@gmail.com>
8764         * config/nds32/nds32-md-auxiliary.c (nds32_inverse_cond_code,
8765         nds32_cond_code_str, output_cond_branch,
8766         output_cond_branch_compare_zero, nds32_expand_cbranch,
8767         nds32_expand_cstore, nds32_expand_movcc,
8768         nds32_output_cbranchsi4_equality_zero,
8769         nds32_output_cbranchsi4_equality_reg,
8770         nds32_output_cbranchsi4_equality_reg_or_const_int,
8771         nds32_output_cbranchsi4_greater_less_zero: New functions.
8772         * config/nds32/nds32-protos.h (nds32_expand_cbranch,
8773         nds32_expand_cstore, nds32_expand_movcc,
8774         nds32_output_cbranchsi4_equality_zero,
8775         nds32_output_cbranchsi4_equality_reg,
8776         nds32_output_cbranchsi4_equality_reg_or_const_int,
8777         nds32_output_cbranchsi4_greater_less_zero): Declare.
8778         * config/nds32/predicates.md (nds32_movecc_comparison_operator,
8779         nds32_rimm11s_operand): New predicates.
8780         * config/nds32/nds32.h (nds32_expand_result_type): New enum type.
8781         * config/nds32/nds32.md: Rewrite all the branch and conditional move
8782         patterns.
8784 2018-04-04  Kito Cheng  <kito.cheng@gmail.com>
8786         * config/nds32/nds32-doubleword.md: Refine all the instruction type.
8787         * config/nds32/nds32.md: Ditto.
8788         * config/nds32/pipelines.md: Ditto.
8790 2018-04-04  Richard Biener  <rguenther@suse.de>
8792         PR tree-optimization/85168
8793         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address): Avoid
8794         propagating abnormals.
8796 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
8798         * config/nds32/nds32.md (enabled): Use yes/no for this attribute.
8800 2018-04-04  Chung-Ju Wu  <jasonwucj@gmail.com>
8801             Kito Cheng  <kito.cheng@gmail.com>
8803         * config/nds32/nds32-md-auxiliary.c (nds32_long_call_p): New function.
8804         * config/nds32/nds32-protos.h (nds32_long_call_p): Declare.
8805         * config/nds32/nds32.c (nds32_function_ok_for_sibcall): New function.
8806         (TARGET_FUNCTION_OK_FOR_SIBCALL): Define.
8807         * config/nds32/nds32.md (sibcall_internal): New.
8808         (sibcall_register): Remove.
8809         (sibcall_immediate): Remove.
8810         (sibcall_value_internal): New.
8811         (sibcall_value_register): Remove.
8812         (sibcall_value_immediate): Remove.
8813         * config/nds32/predicates.md (nds32_general_register_operand): New.
8814         (nds32_call_address_operand): New.
8816 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
8818         PR rtl-optimization/85167
8819         * shrink-wrap.c (move_insn_for_shrink_wrap): Don't set bb_uses and
8820         bb_defs if *split_p, instead preinitialize it to NULL.
8822         PR tree-optimization/85156
8823         * builtins.c (fold_builtin_expect): Use save_expr on arg1 to avoid
8824         evaluating the argument multiple times.
8826 2018-04-03  Bill Schmidt  <wschmidt@linux.ibm.com>
8828         * config/rs6000/emmintrin.h (_mm_cvtpd_epi32): Use __vector rather
8829         than vector.
8830         (_mm_cvtpd_ps): Likewise.
8831         (_mm_cvttpd_epi32): Likewise.
8832         * config/rs6000/mmintrin.h (_mm_unpacklo_pi8): Likewise.
8833         * config/rs6000/xmmintrin.h: For strict-ANSI C++ or C11, undefine
8834         vector, pixel, and bool following altivec.h include.
8836 2018-04-03  Martin Sebor  <msebor@redhat.com>
8838         * doc/extend.texi (Common Function Attributes): Clarify.
8839         (const attribute): Likewise.
8840         (pure attribute): Likewise.
8842 2018-04-03  Jakub Jelinek  <jakub@redhat.com>
8844         PR target/85169
8845         * config/i386/i386.c (ix86_expand_vector_set): Use
8846         HOST_WIDE_INT_1U << elt instead of 1 << elt.  Formatting fix.
8848 2018-04-03  Uros Bizjak  <ubizjak@gmail.com>
8850         * config/i386/i386.c (emit_i387_cw_initialization): Always use logic
8851         instructions when changing rounding bits to preserve precision bits
8852         in the x87 control word.
8854 2018-04-03  Martin Liska  <mliska@suse.cz>
8856         PR tree-optimization/82491
8857         * rtl.h (strip_offset_and_add): Replace += suboffset with
8858         poly_uint64 () + suboffset.
8860 2018-03-29  Martin Liska  <mliska@suse.cz>
8861             Martin Jambor  <mjambor@suse.cz>
8863         PR ipa/84947
8864         * ipa-cp.c (propagate_bits_across_jump_function): Bail out if
8865         param_type is not an integral or pointer type.
8867 2018-04-03  Richard Biener  <rguenther@suse.de>
8869         * sese.h (recompute_all_dominators): Remove.
8871 2018-04-02  Martin Sebor  <msebor@redhat.com>
8873         * doc/invoke.texi (-Wrestrict): Fix typos.
8875 2018-04-02  Jim Wilson  <jimw@sifive.com>
8877         * config/riscv/riscv.h (SHIFT_COUNT_TRUNCATED): Set to zero.
8878         * config/riscv/riscv.md (<optab>si3): Use QImode shift count.
8879         (<optab>di3, <optab>si3_extend): Likewise.
8880         (<optab>si3_mask, <optab>si3_mask_1): New.
8881         (<optab>di3_mask, <optab>di3_mask_1): New.
8882         (<optab>si3_extend_mask, <optab>si3_extend_mask_1): New.
8883         (lshrsi3_zero_extend_1): Use VOIDmode shift count.
8884         * config/riscv/sync.md (atomic_test_and_set): Emit QImode shift count.
8886 2018-04-02  Gerald Pfeifer  <gerald@pfeifer.com>
8888         * doc/cpp.texi (Variadic Macros): Fix line continuation in an
8889         example.
8891 2018-04-02  Chung-Ju Wu  <jasonwucj@gmail.com>
8893         * config/nds32/nds32.c (TARGET_CANONICALIZE_COMPARISON): Define.
8894         (nds32_canonicalize_comparison): New function.
8896 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
8897             Kito Cheng  <kito.cheng@gmail.com>
8898             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
8900         * config.gcc (nds32): Add nds32-relax-opt.o into extra_objs.
8901         * config/nds32/constants.md (unspec_volatile_element): Add
8902         UNSPEC_VOLATILE_RELAX_GROUP.
8903         * config/nds32/nds32-relax-opt.c: New file.
8904         * config/nds32/nds32-predicates.c
8905         (nds32_symbol_load_store_p): New function.
8906         * config/nds32/nds32-protos.h
8907         (nds32_symbol_load_store_p): Declare function.
8908         (make_pass_nds32_relax_opt): Declare new rtl pass function.
8909         * config/nds32/nds32.c
8910         (nds32_register_pass): New function to register pass.
8911         (nds32_register_passes): New function to register passes.
8912         * config/nds32/nds32.md (relax_group): New pattern.
8913         * config/nds32/nds32.opt (mrelax-hint): New option.
8914         * config/nds32/t-nds32 (nds32-relax-opt.o): New dependency.
8916 2018-04-01  Kito Cheng  <kito.cheng@gmail.com>
8918         * config/nds32/t-nds32: Modify files dependency.
8920 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
8922         * config/nds32/nds32.h (FUNCTION_PROFILER): Output newline character.
8923         (PROFILE_HOOK): Define its implementation.
8925 2018-04-01  Chung-Ju Wu  <jasonwucj@gmail.com>
8927         * config/nds32/nds32.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Use unsigned int
8928         type and 32-bit size.
8930 2018-04-01  Jakub Jelinek  <jakub@redhat.com>
8932         PR middle-end/85090
8933         * config/i386/sse.md (V): Add V64QI and V32HI for TARGET_AVX512F.
8934         (V_128_256): New mode iterator.
8935         (*avx512dq_vextract<shuffletype>64x2_1 splitter): New define_split.
8936         (*avx512f_vextract<shuffletype>32x4_1 splitter): Likewise.
8937         (xop_pcmov_<mode><avxsizesuffix>): Use V_128_256 mode iterator instead
8938         of V.
8939         * config/i386/i386.c (ix86_expand_vector_set): Improve V32HImode and
8940         V64QImode expansion for !TARGET_AVX512BW && TARGET_AVX512F.
8942 2018-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
8944         PR target/83315
8945         * config/rs6000/xmmintrin.h (_mm_set_ps, _mm_max_ps): Handle (quiet)
8946         NaN inputs correctly.
8948 2018-03-30  Peter Bergner  <bergner@vnet.ibm.com>
8950         PR target/80546
8951         * config/rs6000/vsx.md (??r): New mode attribute.
8952         (*vsx_mov<mode>_64bit): Use it.
8953         (*vsx_mov<mode>_32bit): Likewise.
8955 2018-03-30  Martin Sebor  <msebor@redhat.com>
8957         PR tree-optimization/84818
8958         * builtins.c (check_access): Use warning_n.
8960 2018-03-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
8962         PR target/83822
8963         * config/rs6000/rs6000-string.c (expand_compare_loop): Fix redundant
8964         condition.
8965         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Fix redundant
8966         condition.
8968 2018-03-30  Julia Koval  <julia.koval@intel.com>
8970         PR target/84413
8971         * x86-tune.def (movx, partial_reg_dependency): Enable for
8972         m_SKYLAKE_AVX512.
8974 2018-03-29  Vladimir Makarov  <vmakarov@redhat.com>
8976         PR inline-asm/84985
8977         * lra-constraints.c (process_alt_operands): Move setting
8978         this_alternative_matches below.
8980 2018-03-29  Martin Liska  <mliska@suse.cz>
8982         PR lto/84995.
8983         * doc/invoke.texi: Document how LTO works with debug info.
8984         Describe auto-load support of binutils.  Mention 'x86-64'
8985         as valid option value of -march option.
8987 2018-03-29  Jakub Jelinek  <jakub@redhat.com>
8989         * config/i386/sse.md (<avx512>_blendm<mode>): Use <sseintprefix>.
8991         PR c/85094
8992         * fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
8993         For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
8994         OEP_NO_HASH_CHECK for recursive call, to avoid exponential
8995         checking.
8997 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
8999         PR target/84912
9000         * config/rs6000/rs6000.h (RS6000_BTM_POWERPC64): New define.
9001         (RS6000_BTM_COMMON): Add RS6000_BTM_POWERPC64.
9002         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add support
9003         for RS6000_BTM_POWERPC64.
9004         (rs6000_invalid_builtin): Add handling for RS6000_BTM_POWERPC64
9005         (rs6000_builtin_mask_names): Add RS6000_BTM_POWERPC64.
9006         * config/rs6000/rs6000-builtin.def (BU_P7_POWERPC64_MISC_2): New macro
9007         definition.
9008         (DIVDE): Use it.
9009         (DIVDEU): Likewise.
9011 2018-03-28 Carl Love  <cel@us.ibm.com>
9013         Revert
9014         2017-09-27  Carl Love  <cel@us.ibm.com>
9016         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
9017         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
9018         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
9019         fctiw instruction.
9021 2018-03-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
9023         * config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
9024         instead of __vector bool.
9025         (_mm_max_pu8): Likewise.
9026         (_mm_min_pi16): Likewise.
9028 2018-03-28  Peter Bergner  <bergner@vnet.ibm.com>
9030         PR target/84912
9031         * config/rs6000/rs6000-builtin.def (DIVWEO): Delete macro expansion.
9032         (DIVWEUO): Likewise.
9033         (DIVDEO): Likewise.
9034         (DIVDEUO): Likewise.
9035         * config/rs6000/rs6000.c (builtin_function_type): Remove support for
9036         DIVWEUO and DIVDEUO.
9037         * config/rs6000/rs6000.md (UNSPEC_DIVEO, UNSPEC_DIVEUO): Delete unspecs.
9038         (UNSPEC_DIV_EXTEND): Remove deleted unspecs.
9039         (div_extend): Likewise.
9040         * doc/extend.texi (__builtin_divweo): Remove documentation for deleted
9041         builtin function.
9042         (__builtin_divweuo): Likewise.
9043         (__builtin_divdeo): Likewise.
9044         (__builtin_divdeuo): Likewise.
9046 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
9048         PR target/85095
9049         * config/i386/i386.md (*add<mode>3_carry_0, *addsi3_carry_zext_0,
9050         *sub<mode>3_carry_0, *subsi3_carry_zext_0): New patterns.
9052         PR tree-optimization/82004
9053         * gimple-match-head.c (optimize_pow_to_exp): New function.
9054         * match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
9055         Don't fold to exp if optimize_pow_to_exp is false.
9057 2018-03-28  Martin Liska  <mliska@suse.cz>
9059         PR other/84819
9060         * calls.c (initialize_argument_information): Fix trailing space.
9061         * common.opt: Fix typo and provide better explanation for
9062         -fsanitize-coverage option.
9063         * config/i386/i386.opt: Fix typo.
9065 2018-03-28  Jakub Jelinek  <jakub@redhat.com>
9066             Martin Liska  <mliska@suse.cz>
9068         PR sanitizer/85081
9069         * gimplify.c (asan_poison_variable): Don't do the check for
9070         gimplify_omp_ctxp here.
9071         (gimplify_decl_expr): Do it here.
9072         (gimplify_target_expr): Likewise.
9074 2018-03-28  Martin Liska  <mliska@suse.cz>
9076         PR target/84988
9077         * config/i386/i386.c (ix86_function_arg_advance): Do not call
9078         chkp_type_bounds_count if MPX is not enabled.
9080 2018-03-27  Chung-Ju Wu  <jasonwucj@gmail.com>
9082         * config/nds32/nds32.h (BRANCH_COST): Adjust cost.
9084 2018-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
9086         PR target/84914
9087         * config/rs6000/rs6000.c (create_complex_muldiv): New helper
9088         function to create the function decl for complex long double
9089         multiply and divide for -mabi=ieeelongdouble.
9090         (init_float128_ieee): Call it.
9092 2018-03-27  H.J. Lu  <hongjiu.lu@intel.com>
9094         PR target/85044
9095         * config/i386/i386.c (ix86_trampoline_init): Insert ENDBR for
9096         -fcf-protection=branch -mibt.
9097         * config/i386/i386.h (TRAMPOLINE_SIZE): Increased by 4 bytes.
9099 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9101         PR target/81863
9102         * config/arm/arm.c (arm_valid_symbolic_address): Handle
9103         arm_word_relocations.
9105 2018-03-27  Cesar Philippidis  <cesar@codesourcery.com>
9107         PR target/85056
9108         * config/nvptx/nvptx.c (nvptx_assemble_decl_begin): Add '[]' to
9109         extern array declarations.
9111 2018-03-27  Richard Biener  <rguenther@suse.de>
9113         PR middle-end/84067
9114         * match.pd ((A * C) +- (B * C) -> (A+-B) * C): Guard with
9115         explicit single_use checks.
9117 2018-03-27  Richard Biener  <rguenther@suse.de>
9119         PR tree-optimization/85082
9120         * tree-ssa-sccvn.c (vn_reference_lookup_or_insert_for_pieces):
9121         Valueize the VUSE.
9123 2018-03-27  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
9125         * config.gcc (aarch64*-*-linux*): New TARGET_DEFAULT_ASYNC_UNWIND_TABLES
9126         * common/config/aarch64/aarch64-common.c (aarch64_optimization_table[]):
9127         Turn on fasynchronous-unwind-tables and funwind-tables.
9129 2018-03-26  Uros Bizjak  <ubizjak@gmail.com>
9131         PR target/85073
9132         * config/i386/i386.md (*bmi_blsr_<mode>_cmp): New insn pattern.
9133         (*bmi_blsr_<mode>_ccz): Ditto.
9135 2018-03-26  Tom de Vries  <tom@codesourcery.com>
9137         PR tree-optimization/85063
9138         * omp-general.c (offloading_function_p): New function.  Factor out
9139         of ...
9140         * omp-offload.c (pass_omp_target_link::gate): ... here.
9141         * omp-general.h (offloading_function_p): Declare.
9142         * tree-switch-conversion.c (build_one_array): Mark CSWTCH.x variable
9143         with attribute omp declare target for offloading functions.
9145 2018-03-24  Richard Sandiford  <richard.sandiford@linaro.org>
9147         PR tree-optimization/84005
9148         * tree-data-ref.h (get_base_for_alignment): Declare.
9149         * tree-data-ref.c (get_base_for_alignment_1): New function.
9150         (get_base_for_alignment): Likewise.
9151         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
9152         get_base_for_alignment to find a suitable base object, instead
9153         of always using drb->base_address.
9155 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
9157         PR inline-asm/85022
9158         * emit-rtl.c (init_emit_regs): Indicate that VOIDmode MEMs don't have
9159         known size by default.
9161 2018-03-23  Vladimir Makarov  <vmakarov@redhat.com>
9163         PR inline-asm/85030
9164         * lra-constraints.c (process_alt_operands): Don't match BLKmode
9165         and non BLKmode operands.
9167 2018-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9169         PR target/85026
9170         * config/arm/arm.md (unaligned_loadhis): Remove first alternative.
9171         Clean up attributes.
9173 2018-03-23  Richard Biener  <rguenther@suse.de>
9175         PR debug/85020
9176         * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when
9177         we are going to emit early debug for LTO.
9179 2018-03-23  Jakub Jelinek  <jakub@redhat.com>
9181         PR inline-asm/85034
9182         * function.c (match_asm_constraints_1): Don't optimize if input
9183         doesn't satisfy general_operand predicate for output's mode.
9185         PR inline-asm/85022
9186         * alias.c (write_dependence_p): Don't require for x_canonicalized
9187         non-VOIDmode if x has VOIDmode.
9189         PR sanitizer/85029
9190         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base),
9191         just don't try to optimize it rather than assert it never happens.
9193 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
9195         * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X
9196         macro expansions for definition of ST_INTERNAL_<mode> and
9197         LD_INTERNAL_<mode> builtins.
9198         * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec):
9199         Remove prototype.
9200         * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this
9201         function.
9202         (altivec_expand_st_builtin): Likewise.
9203         (altivec_expand_builtin): Remove calls to deleted functions.
9204         (rs6000_address_for_altivec): Delete this function.
9205         * config/rs6000/vector.md: Remove expands for
9206         vector_altivec_load_<mode> and vector_altivec_store_<mode>.
9208 2018-03-22  Sudakshina Das  <sudi.das@arm.com>
9210         PR target/84826
9211         * config/arm/arm.h (machine_function): Add static_chain_stack_bytes.
9212         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid
9213         re-computing once computed.
9214         (arm_expand_prologue): Compute machine->static_chain_stack_bytes.
9215         (arm_init_machine_status): Initialize
9216         machine->static_chain_stack_bytes.
9218 2018-03-22  Kelvin Nilsen  <kelvin@gcc.gnu.org>
9220         PR target/84760
9221         * doc/extend.texi: Add four new prototypes for vec_ld.
9222         * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol
9223         definitions for more logical presentation.
9224         * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add
9225         entries for V1TI variants of __builtin_altivec_ld builtin.
9226         * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and
9227         handling of V1TI variant of LVX icode pattern.
9228         (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI.
9229         (rs6000_gimple_fold_builtin): Likewise.
9230         (altivec_init_builtins): Add code to define
9231         __builtin_altivec_lvx_v1ti function.
9233 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
9235         PR inline-asm/84941
9236         * function.c (match_asm_constraints_1): Don't do the optimization
9237         if input isn't a REG, SUBREG, MEM or constant.
9239 2018-03-22  Tom de Vries  <tom@codesourcery.com>
9241         PR tree-optimization/84956
9242         * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with
9243         bb_has_abnormal_pred.
9245 2018-03-22  Jakub Jelinek  <jakub@redhat.com>
9247         PR sanitizer/85018
9248         * dwarf2asm.c (dw2_output_indirect_constant_1): Set
9249         DECL_INITIAL (decl) to decl at the end.
9250         * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change,
9251         adjust the comment.
9253 2018-03-21  Joseph Myers  <joseph@codesourcery.com>
9255         * doc/extend.texi (__builtin_tgmath): Document when complex
9256         integer types are treated as _Complex _Float64.
9258 2018-03-21  Tom de Vries  <tom@codesourcery.com>
9260         * doc/extend.texi (__builtin_extend_pointer): Remove pasto.
9262 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
9264         PR tree-optimization/84960
9265         * tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
9266         if it is ENTRY block, move them into single succ of ENTRY in that case.
9268 2018-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
9270         PR tree-optimization/84811
9271         * poly-int.h (poly_span_traits): Remove the T3 parameter and
9272         promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
9273         (maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
9274         (known_subrange_p): Update accordingly.  Cast each value involved
9275         in the size comparison, rather than casting the result of the
9276         subtraction.
9278 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
9280         PR tree-optimization/84982
9281         * gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
9282         by flipping the least significant bit rather than all bits from
9283         bitpos to bitpos + bitsize - 1.
9285 2018-03-21  Nathan Sidwell  <nathan@acm.org>
9287         * doc/extend.texi (Deprecated Features): Remove mention of
9288         long-deleted deprecations.
9290 2018-03-21  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9292         PR jit/84288
9293         * configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
9294         * configure: Regenerate.
9296 2018-03-21  Tom de Vries  <tom@codesourcery.com>
9298         PR tree-optimization/83126
9299         * tree-parloops.c (num_phis): New function.
9300         (gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
9302 2018-03-21  Nathan Sidwell  <nathan@acm.org>
9304         * doc/extend.texi (Deprecated Features): Update deprecated flags,
9305         mention anon-struct/union members and trailing attributes.
9307 2018-03-21  Bin Cheng  <bin.cheng@arm.com>
9309         PR tree-optimization/84969
9310         * tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
9311         builtin memset partitions if they set different rhs values.
9313 2018-03-21  Jakub Jelinek  <jakub@redhat.com>
9315         PR rtl-optimization/84989
9316         * simplify-rtx.c (simplify_unary_operation_1): Don't try to simplify
9317         VEC_DUPLICATE with scalar result mode.
9319 2018-03-21  Martin Liska  <mliska@suse.cz>
9321         PR ipa/84963
9322         * ipa-icf.c (sem_item_optimizer::fixup_points_to_sets): Remove
9323         not intended return statement.
9325 2018-03-21  Martin Liska  <mliska@suse.cz>
9327         PR target/84988
9328         * tree-chkp.c (CHKP_ARRAY_MAX_CHECK_STEPS): Define a new macro.
9329         (chkp_find_bound_slots_1): Limit number of iterations.
9331 2018-03-20  David H. Gutteridge  <dhgutteridge@sympatico.ca>
9333         PR target/84838
9334         * Minor grammar fixes for x86 options.
9336 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
9338         PR debug/84875
9339         * dce.c (delete_unmarked_insns): Don't remove frame related noop moves
9340         holding REG_CFA_RESTORE notes, instead turn them into a USE.
9342 2018-03-20  Peter Bergner  <bergner@vnet.ibm.com>
9344         PR target/83789
9345         * config/rs6000/altivec.md (altivec_lvx_<mode>_2op): Delete define_insn.
9346         (altivec_lvx_<mode>_1op): Likewise.
9347         (altivec_stvx_<mode>_2op): Likewise.
9348         (altivec_stvx_<mode>_1op): Likewise.
9349         (altivec_lvx_<VM2:mode>): New define_expand.
9350         (altivec_stvx_<VM2:mode>): Likewise.
9351         (altivec_lvx_<VM2:mode>_2op_<P:mptrsize>): New define_insn.
9352         (altivec_lvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
9353         (altivec_stvx_<VM2:mode>_2op_<P:mptrsize>): Likewise.
9354         (altivec_stvx_<VM2:mode>_1op_<P:mptrsize>): Likewise.
9355         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Use new expanders.
9356         (rs6000_gen_lvx): Likewise.
9357         * config/rs6000/rs6000.c (altivec_expand_lv_builtin): Likewise.
9358         (altivec_expand_stv_builtin): Likewise.
9359         (altivec_expand_builtin): Likewise.
9360         * config/rs6000/vector.md: Likewise.
9362 2018-03-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
9364         PR target/82518
9365         * config/arm/arm.c (arm_array_mode_supported_p): Return false for
9366         BYTES_BIG_ENDIAN.
9368 2018-03-20  Richard Biener  <rguenther@suse.de>
9370         PR target/84986
9371         * config/i386/i386.c (ix86_add_stmt_cost): Only cost
9372         sign-conversions as zero, fall back to standard scalar_stmt
9373         cost for the rest.
9375 2018-03-20  Martin Liska  <mliska@suse.cz>
9377         PR ipa/84825
9378         * predict.c (rebuild_frequencies): Handle case when we have
9379         PROFILE_ABSENT, but flag_guess_branch_prob is false.
9381 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
9383         PR target/84990
9384         * dwarf2asm.c (dw2_output_indirect_constant_1): Temporarily turn off
9385         flag_section_anchors.
9386         * varasm.c (use_blocks_for_decl_p): Remove hack for
9387         dw2_force_const_mem.
9389         PR target/84845
9390         * config/aarch64/aarch64.md (*aarch64_reg_<mode>3_neg_mask2): Rename
9391         to ...
9392         (*aarch64_<optab>_reg_<mode>3_neg_mask2): ... this.  If pseudos can't
9393         be created, use lowpart_subreg of operands[0] rather than operands[0]
9394         itself.
9395         (*aarch64_reg_<mode>3_minus_mask): Rename to ...
9396         (*aarch64_ashl_reg_<mode>3_minus_mask): ... this.
9397         (*aarch64_<optab>_reg_di3_mask2): Use const_int_operand predicate
9398         and n constraint instead of aarch64_shift_imm_di and Usd.
9399         (*aarch64_reg_<optab>_minus<mode>3): Rename to ...
9400         (*aarch64_<optab>_reg_minus<mode>3): ... this.
9402 2018-03-20  Sudakshina Das  <sudi.das@arm.com>
9404         PR target/82989
9405         * config/arm/neon.md (ashldi3_neon): Update ?s for constraints
9406         to favor GPR over NEON registers.
9407         (<shift>di3_neon): Likewise.
9409 2018-03-20  Tom de Vries  <tom@codesourcery.com>
9411         PR target/84952
9412         * config/nvptx/nvptx.c (nvptx_single): Don't neuter bar.sync.
9413         (nvptx_process_pars): Emit bar.sync asap and alap.
9415 2018-03-20  Tom de Vries  <tom@codesourcery.com>
9417         PR target/84954
9418         * config/nvptx/nvptx.c (prevent_branch_around_nothing): Also update
9419         seen_label if seen_label is already set.
9421 2018-03-20  Jakub Jelinek  <jakub@redhat.com>
9423         PR target/84945
9424         * config/i386/i386.c (fold_builtin_cpu): For features above 31
9425         use __cpu_features2 variable instead of __cpu_model.__cpu_features[0].
9426         Use 1U instead of 1.  Formatting fixes.
9428         PR c/84953
9429         * builtins.c (fold_builtin_strpbrk): For strpbrk(x, "") use type
9430         instead of TREE_TYPE (s1) for the return value.
9432 2018-03-19  Jakub Jelinek  <jakub@redhat.com>
9434         PR tree-optimization/84946
9435         * gimple-ssa-store-merging.c (mem_valid_for_store_merging): Compute
9436         bitsize + bitsize in poly_uint64 rather than poly_int64.
9438         PR sanitizer/78651
9439         * dwarf2asm.c: Include fold-const.c.
9440         (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to ADDR_EXPR
9441         of decl rather than decl itself.
9443         PR rtl-optimization/84643
9444         * memmodel.h (enum memmodel): Add MEMMODEL_MAX enumerator.
9446 2018-03-19  Maxim Ostapenko  <m.ostapenko@samsung.com>
9448         PR sanitizer/78651
9449         * dwarf2asm.c (dw2_output_indirect_constant_1): Disable ASan before
9450         calling assemble_variable.
9452 2018-03-19  Sudakshina Das  <sudi.das@arm.com>
9454         PR target/81647
9455         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Modify
9456         instructions for UNLT, UNLE, UNGT, UNGE, UNEQ, UNORDERED and ORDERED.
9458 2018-03-19  Jim Wilson  <jimw@sifive.com>
9460         PR bootstrap/84856
9461         * config/riscv/riscv.c (riscv_function_arg_boundary): Use
9462         PREFERRED_STACK_BOUNDARY instead of STACK_BOUNDARY.
9463         (riscv_first_stack_step): Likewise.
9464         (riscv_option_override): Use STACK_BOUNDARY instead of
9465         MIN_STACK_BOUNDARY.
9466         * config/riscv/riscv.h (STACK_BOUNDARY): Renamed from
9467         MIN_STACK_BOUNDARY.
9468         (BIGGEST_ALIGNMENT): Set to 128.
9469         (PREFERRED_STACK_BOUNDARY): Renamed from STACK_BOUNDARY.
9470         (RISCV_STACK_ALIGN): Use PREFERRED_STACK_BOUNDARY instead of
9471         STACK_BOUNDARY.
9473 2018-03-19  Richard Biener  <rguenther@suse.de>
9475         PR tree-optimization/84933
9476         * tree-vrp.c (set_and_canonicalize_value_range): Treat out-of-bound
9477         values as -INF/INF when canonicalizing an ANTI_RANGE to a RANGE.
9479 2018-03-19  Richard Biener  <rguenther@suse.de>
9481         PR tree-optimization/84859
9482         * tree-ssa-phiopt.c (single_trailing_store_in_bb): New function.
9483         (cond_if_else_store_replacement): Perform sinking operation on
9484         single-store BBs regardless of MAX_STORES_TO_SINK setting.
9485         Generalize what a BB with a single eligible store is.
9487 2018-03-19  Richard Biener  <rguenther@suse.de>
9489         PR tree-optimization/84929
9490         * tree-data-ref.c (analyze_siv_subscript_cst_affine): Guard
9491         chrec_is_positive against non-chrec arg.
9493 2018-03-19  Tamar Christina  <tamar.christina@arm.com>
9495         PR target/84711
9496         * config/arm/arm.c (arm_can_change_mode_class): revert r258554.
9498 2018-03-18  Martin Liska  <mliska@suse.cz>
9500         PR rtl-optimization/84635
9501         * regrename.c (build_def_use): Use matches_mode only when
9502         matches >= 0.
9504 2018-03-18  Richard Sandiford  <richard.sandiford@linaro.org>
9506         PR tree-optimization/84913
9507         * tree-vect-loop.c (vectorizable_reduction): Don't try to
9508         vectorize chains of COND_EXPRs.
9510 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
9512         * config/nds32/nds32.h (MAX_REGS_PER_ADDRESS): Fix the value.
9514 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
9516         * config/nds32/nds32.h (LOGICAL_OP_NON_SHORT_CIRCUIT): Define.
9518 2018-03-18  Chung-Ju Wu  <jasonwucj@gmail.com>
9520         * config/nds32/nds32.h (CLZ_DEFINED_VALUE_AT_ZERO): Define.
9522 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
9523             Kito Cheng  <kito.cheng@gmail.com>
9525         * config/nds32/nds32-protos.h (nds32_adjust_reg_alloc_order): Declare.
9526         * config/nds32/nds32.c (nds32_reg_alloc_order_for_speed): New array.
9527         (nds32_adjust_reg_alloc_order): New function.
9528         * config/nds32/nds32.h (ADJUST_REG_ALLOC_ORDER): Define.
9530 2018-03-17  Kito Cheng  <kito.cheng@gmail.com>
9532         * config/nds32/nds32.c (nds32_asm_output_mi_thunk,
9533         nds32_print_operand, nds32_print_operand_address): Use
9534         HOST_WIDE_INT_PRINT_DEC instead.
9536 2018-03-17  Chung-Ju Wu  <jasonwucj@gmail.com>
9538         * config/nds32/nds32.c (nds32_register_priority): Modify cost.
9540 2018-03-17  Jakub Jelinek  <jakub@redhat.com>
9542         PR target/84902
9543         * config/i386/i386.c (initial_ix86_tune_features,
9544         initial_ix86_arch_features): Use unsigned HOST_WIDE_INT rather than
9545         unsigned long long.
9546         (set_ix86_tune_features): Change ix86_tune_mask from unsigned int
9547         to unsigned HOST_WIDE_INT, initialize to HOST_WIDE_INT_1U << ix86_tune
9548         rather than 1u << ix86_tune.  Formatting fix.
9549         (ix86_option_override_internal): Change ix86_arch_mask from
9550         unsigned int to unsigned HOST_WIDE_INT, initialize to
9551         HOST_WIDE_INT_1U << ix86_arch rather than 1u << ix86_arch.
9552         (ix86_function_specific_restore): Likewise.
9554 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
9556         PR target/84899
9557         * postreload.c (reload_combine_recognize_pattern): Perform
9558         INTVAL addition in unsigned HOST_WIDE_INT type to avoid UB and
9559         truncate_int_for_mode the result for the destination's mode.
9561         PR c/84909
9562         * hsa-gen.c (mem_type_for_type): Fix comment typo.
9563         * tree-vect-loop-manip.c (vect_create_cond_for_niters_checks):
9564         Likewise.
9565         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
9566         Likewise.
9568 2018-03-16  Vladimir Makarov  <vmakarov@redhat.com>
9570         PR target/84876
9571         * lra-assigns.c (lra_split_hard_reg_for): Don't use
9572         regno_allocno_class_array and sorted_pseudos.
9573         * lra-constraints.c (spill_hard_reg_in_range): Ignore hard regs in
9574         insns where regno is used.
9576 2018-03-16  Martin Liska  <mliska@suse.cz>
9578         PR ipa/84833
9579         * multiple_target.c (create_dispatcher_calls): Redirect
9580         reference in the symbol table.
9582 2018-03-16  Martin Liska  <mliska@suse.cz>
9584         PR ipa/84722
9585         * multiple_target.c (create_dispatcher_calls): Redirect also
9586         an alias.
9588 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
9590         PR c++/79937
9591         PR c++/82410
9592         * tree.h (TARGET_EXPR_NO_ELIDE): Define.
9593         * gimplify.c (gimplify_modify_expr_rhs): Don't elide TARGET_EXPRs with
9594         TARGET_EXPR_NO_ELIDE flag set unless *expr_p is INIT_EXPR.
9596 2018-03-16  Julia Koval  <julia.koval@intel.com>
9598         * doc/invoke.texi (Skylake Server): Add CLWB.
9599         Cannonlake): Remove CLWB.
9601 2018-03-16  Jakub Jelinek  <jakub@redhat.com>
9603         PR tree-optimization/84841
9604         * tree-ssa-reassoc.c (INTEGER_CONST_TYPE): Change to 1 << 4 from
9605         1 << 3.
9606         (FLOAT_ONE_CONST_TYPE): Define.
9607         (constant_type): Return FLOAT_ONE_CONST_TYPE for -1.0 and 1.0.
9608         (sort_by_operand_rank): Put entries with higher constant_type last
9609         rather than first to match comments.
9611 2018-03-15  Sandra Loosemore  <sandra@codesourcery.com>
9613         * config/nios2/nios2.md (movsi_internal): Fix thinko in
9614         split predicate.
9616 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
9618         PR c++/79085
9619         * calls.c (expand_call): For TREE_ADDRESSABLE rettype ignore alignment
9620         check and use address of target always.
9622 2018-03-15  H.J. Lu  <hongjiu.lu@intel.com>
9624         PR target/84574
9625         * config/i386/i386.c (indirect_thunk_needed): Update comments.
9626         (indirect_thunk_bnd_needed): Likewise.
9627         (indirect_thunks_used): Likewise.
9628         (indirect_thunks_bnd_used): Likewise.
9629         (indirect_return_needed): New.
9630         (indirect_return_bnd_needed): Likewise.
9631         (output_indirect_thunk_function): Add a bool argument for
9632         function return.
9633         (output_indirect_thunk_function): Don't generate alias for
9634         function return thunk.
9635         (ix86_code_end): Call output_indirect_thunk_function to generate
9636         function return thunks.
9637         (ix86_output_function_return): Set indirect_return_bnd_needed
9638         and indirect_return_needed instead of indirect_thunk_bnd_needed
9639         and indirect_thunk_needed.
9641 2018-03-15  Olga Makhotina  <olga.makhotina@intel.com>
9643         * config/i386/sgxintrin.h (_enclv_u32): New intrinsic.
9644         (__enclv_bc, __enclv_cd, __enclv_generic): New definitions.
9645         (ERDINFO, ETRACKC, ELDBC, ELDUC): New leaves.
9647 2018-03-15  David Malcolm  <dmalcolm@redhat.com>
9648             Paul Hua <paul.hua.gm@gmail.com>
9650         PR c/84852
9651         * gcc.dg/fixits-pr84852-1.c: Fix filename in dg-regexp.
9653 2018-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
9655         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add back the
9656         TARGET_DOUBLE_FLOAT and TARGET_SINGLE_FLOAT conditions on the DFmode
9657         resp. SFmode cases.
9659 2018-03-15  Tamar Christina  <tamar.christina@arm.com>
9661         PR target/84711
9662         * config/arm/arm.c (arm_can_change_mode_class): Use GET_MODE_UNIT_SIZE
9663         instead of GET_MODE_SIZE when comparing Units.
9665 2018-03-15  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
9667         PR target/68256
9668         * varasm.c (hash_section): Return an unchangeble hash value
9669         * config/aarch64/aarch64.c (aarch64_use_blocks_for_constant_p):
9670         Return !aarch64_can_use_per_function_literal_pools_p ().
9672 2018-03-15  Jakub Jelinek  <jakub@redhat.com>
9674         PR target/84860
9675         * optabs.c (emit_conditional_move): Pass address of cmode's copy
9676         rather than address of cmode as last argument to prepare_cmp_insn.
9678 2018-03-15  Julia Koval  <julia.koval@intel.com>
9680         * config/i386/i386.c (F_AVX512VBMI2, F_GFNI, F_VPCLMULQDQ,
9681         F_AVX512VNNI, F_AVX512BITALG): New.
9683 2018-03-14  John David Anglin  <danglin@gcc.gnu.org>
9685         PR target/83451
9686         * config/pa/pa.c (pa_emit_move_sequence):  Always emit secondary reload
9687         insn for floating-point loads and stores.
9689 2018-03-14  Carl Love  <cel@us.ibm.com>
9691         * config/rs6000/rs6000-c.c: Add macro definitions for
9692         ALTIVEC_BUILTIN_VEC_PERMXOR.
9693         * config/rs6000/rs6000.h: Add #define for vec_permxor builtin.
9694         * config/rs6000/rs6000-builtin.def: Add macro expansions for VPERMXOR.
9695         * config/rs6000/altivec.md (altivec_vpermxor): New define expand.
9696         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Add case
9697         UNSPEC_VPERMXOR.
9698         * config/doc/extend.texi: Add prototypes for vec_permxor.
9700 2018-03-14  David Malcolm  <dmalcolm@redhat.com>
9702         PR c/84852
9703         * diagnostic-show-locus.c (class layout_point): Convert m_line
9704         from int to linenum_type.
9705         (line_span::comparator): Use linenum "compare" function when
9706         comparing line numbers.
9707         (test_line_span): New function.
9708         (layout_range::contains_point): Convert param "row" from int to
9709         linenum_type.
9710         (layout_range::intersects_line_p): Likewise.
9711         (layout::will_show_line_p): Likewise.
9712         (layout::print_source_line): Likewise.
9713         (layout::should_print_annotation_line_p): Likewise.
9714         (layout::print_annotation_line): Likewise.
9715         (layout::print_leading_fixits): Likewise.
9716         (layout::annotation_line_showed_range_p): Likewise.
9717         (struct line_corrections): Likewise for field m_row.
9718         (line_corrections::line_corrections): Likewise for param "row".
9719         (layout::print_trailing_fixits): Likewise.
9720         (layout::get_state_at_point): Likewise.
9721         (layout::get_x_bound_for_row): Likewise.
9722         (layout::print_line): Likewise.
9723         (diagnostic_show_locus): Likewise for locals "last_line" and "row".
9724         (selftest::diagnostic_show_locus_c_tests): Call test_line_span.
9725         * input.c (selftest::test_linenum_comparisons): New function.
9726         (selftest::input_c_tests): Call it.
9727         * selftest.c (selftest::test_assertions): Test ASSERT_GT,
9728         ASSERT_GT_AT, ASSERT_LT, and ASSERT_LT_AT.
9729         * selftest.h (ASSERT_GT): New macro.
9730         (ASSERT_GT_AT): New macro.
9731         (ASSERT_LT): New macro.
9732         (ASSERT_LT_AT): New macro.
9734 2018-03-14  Segher Boessenkool  <segher@kernel.crashing.org>
9736         PR rtl-optimization/84780
9737         * combine.c (distribute_links): Don't make a link based on pc_rtx.
9739 2018-03-14  Martin Liska  <mliska@suse.cz>
9741         * tree.c (record_node_allocation_statistics): Use
9742         get_stats_node_kind.
9743         (get_stats_node_kind): New function extracted from
9744         record_node_allocation_statistics.
9745         (free_node): Use get_stats_node_kind.
9747 2018-03-14  Richard Biener  <rguenther@suse.de>
9749         * tree-ssa-pre.c (compute_antic_aux): Remove code that asserts
9750         that the value-set of ANTIC_IN doesn't grow.
9752         Revert
9753         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
9754         member.
9755         (BB_VISITED_WITH_VISITED_SUCCS): New define.
9756         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
9758 2018-03-14  Julia Koval  <julia.koval@intel.com>
9760         * config.gcc (icelake-client, icelake-server): New.
9761         (icelake): Remove.
9762         * config/i386/i386.c (initial_ix86_tune_features): Extend to 64 bit.
9763         (initial_ix86_arch_features): Ditto.
9764         (PTA_SKYLAKE): Add SGX.
9765         (PTA_ICELAKE): Remove.
9766         (PTA_ICELAKE_CLIENT): New.
9767         (PTA_ICELAKE_SERVER): New.
9768         (ix86_option_override_internal): Split up icelake on icelake client and
9769         icelake server.
9770         (get_builtin_code_for_version): Ditto.
9771         (fold_builtin_cpu): Ditto.
9772         * config/i386/driver-i386.c (config/i386/driver-i386.c): Ditto.
9773         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto
9774         * config/i386/i386.h (processor_type): Ditto.
9775         * doc/invoke.texi: Ditto.
9777 2018-03-14  Jakub Jelinek  <jakub@redhat.com>
9779         PR sanitizer/83392
9780         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Handle also
9781         INTEGER_CST offset, add it together with bitpos / 8 and
9782         sign extend based on POINTER_SIZE.
9784         PR target/84844
9785         Revert
9786         2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
9788         PR target/78090
9789         * config/i386/constraints.md (Yc): New register constraint.
9790         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
9791         Use Yc constraint for alternative 2 of operand 0.  Remove
9792         preferred_for_speed attribute.
9794 2018-03-14  Richard Biener  <rguenther@suse.de>
9796         PR tree-optimization/84830
9797         * tree-ssa-pre.c (compute_antic_aux): Intersect the new ANTIC_IN
9798         with the old one to avoid oscillations.
9800 2018-03-13  Vladimir Makarov  <vmakarov@redhat.com>
9802         PR target/83712
9803         * lra-assigns.c (find_all_spills_for): Ignore uninteresting
9804         pseudos.
9805         (assign_by_spills): Return a flag of reload assignment failure.
9806         Do not process the reload assignment failures.  Do not spill other
9807         reload pseudos if they has the same reg class.  Update n if
9808         necessary.
9809         (lra_assign): Add a return arg.  Set up from the result of
9810         assign_by_spills call.
9811         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
9812         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
9813         usage_insns if it is not NULL.
9814         (spill_hard_reg_in_range): New function.
9815         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
9816         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
9817         function prototypes.
9818         (lra_assign): Change prototype.
9819         * lra.c (lra): Add code to deal with fails by splitting hard reg
9820         live ranges.
9822 2018-03-01  Palmer Dabbelt  <palmer@sifive.com>
9824         * config/riscv/riscv.opt (mrelax): New option.
9825         * config/riscv/riscv.c (riscv_file_start): Emit ".option
9826         "norelax" when riscv_mrelax is disabled.
9827         * doc/invoke.texi (RISC-V): Document "-mrelax" and "-mno-relax".
9829 2018-03-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
9831         PR target/84743
9832         * config/rs6000/rs6000.c (rs6000_reassociation_width): Disable parallel
9833         reassociation for int modes.
9835 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
9837         * tree-vect-loop-manip.c (vect_maybe_permute_loop_masks):
9838         Reverse the choice between VEC_UNPACK_LO_EXPR and VEC_UNPACK_HI_EXPR
9839         for big-endian.
9840         * config/aarch64/iterators.md (hi_lanes_optab): New int attribute.
9841         * config/aarch64/aarch64-sve.md
9842         (*aarch64_sve_<perm_insn><perm_hilo><mode>): Rename to...
9843         (aarch64_sve_<perm_insn><perm_hilo><mode>): ...this.
9844         (*extend<mode><Vwide>2): Rename to...
9845         (aarch64_sve_extend<mode><Vwide>2): ...this.
9846         (vec_unpack<su>_<perm_hilo>_<mode>): Turn into a define_expand,
9847         renaming the old pattern to...
9848         (aarch64_sve_punpk<perm_hilo>_<mode>): ...this.  Only define
9849         unsigned packs.
9850         (vec_unpack<su>_<perm_hilo>_<SVE_BHSI:mode>): Turn into a
9851         define_expand, renaming the old pattern to...
9852         (aarch64_sve_<su>unpk<perm_hilo>_<SVE_BHSI:mode>): ...this.
9853         (*vec_unpacku_<perm_hilo>_<mode>_no_convert): Delete.
9854         (vec_unpacks_<perm_hilo>_<mode>): Take BYTES_BIG_ENDIAN into
9855         account when deciding which SVE instruction the optab should use.
9856         (vec_unpack<su_optab>_float_<perm_hilo>_vnx4si): Likewise.
9858 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
9860         * config/aarch64/aarch64.md (V4_REGNUM, V8_REGNUM, V12_REGNUM)
9861         (V20_REGNUM, V24_REGNUM, V28_REGNUM, P1_REGNUM, P2_REGNUM, P3_REGNUM)
9862         (P4_REGNUM, P5_REGNUM, P6_REGNUM, P8_REGNUM, P9_REGNUM, P10_REGNUM)
9863         (P11_REGNUM, P12_REGNUM, P13_REGNUM, P14_REGNUM): New define_constants.
9864         (tlsdesc_small_<mode>): Turn a define_expand and use
9865         tlsdesc_small_sve_<mode> for SVE.  Rename original define_insn to...
9866         (tlsdesc_small_advsimd_<mode>): ...this.
9867         (tlsdesc_small_sve_<mode>): New pattern.
9869 2018-03-13  Richard Sandiford  <richard.sandiford@linaro.org>
9871         * config/aarch64/iterators.md (UNSPEC_SMUL_HIGHPART)
9872         (UNSPEC_UMUL_HIGHPART): New constants.
9873         (MUL_HIGHPART): New int iteraor.
9874         (su): Handle UNSPEC_SMUL_HIGHPART and UNSPEC_UMUL_HIGHPART.
9875         * config/aarch64/aarch64-sve.md (<su>mul<mode>3_highpart): New
9876         define_expand.
9877         (*<su>mul<mode>3_highpart): New define_insn.
9879 2018-03-13  Eric Botcazou  <ebotcazou@adacore.com>
9881         PR lto/84805
9882         * ipa-devirt.c (odr_subtypes_equivalent_p): Do not get the ODR type of
9883         incomplete types.
9885 2018-03-13  Martin Liska  <mliska@suse.cz>
9887         PR ipa/84658.
9888         * (sem_item_optimizer::sem_item_optimizer): Initialize new
9889         vector.
9890         (sem_item_optimizer::~sem_item_optimizer): Release it.
9891         (sem_item_optimizer::merge_classes): Register variable aliases.
9892         (sem_item_optimizer::fixup_pt_set): New function.
9893         (sem_item_optimizer::fixup_points_to_sets): Likewise.
9894         * ipa-icf.h: Declare new variables and functions.
9896 2018-03-13  Jakub Jelinek  <jakub@redhat.com>
9898         PR middle-end/84834
9899         * match.pd ((A & C) != 0 ? D : 0): Use INTEGER_CST@2 instead of
9900         integer_pow2p@2 and test integer_pow2p in condition.
9901         (A < 0 ? C : 0): Similarly for @1.
9903         PR middle-end/84831
9904         * stmt.c (parse_output_constraint): If the CONSTRAINT_LEN (*p, p)
9905         characters starting at p contain '\0' character, don't look beyond
9906         that.
9908         PR target/84827
9909         * config/i386/i386.md (round<mode>2): For 387 fancy math, disable
9910         pattern if -ftrapping-math -fno-fp-int-builtin-inexact.
9912         PR target/84828
9913         * reg-stack.c (change_stack): Change update_end var from int to
9914         rtx_insn *, if non-NULL don't update just BB_END (current_block), but
9915         also call set_block_for_insn on the newly added insns and rescan.
9917         PR target/84786
9918         * config/i386/sse.md (sse2_loadhpd): Use Yv constraint rather than v
9919         on the last operand.
9921         PR c++/84704
9922         * tree.c (stabilize_reference_1): Return save_expr (e) for
9923         STATEMENT_LIST even if it doesn't have side-effects.
9925 2018-03-12  Jonathan Wakely  <jwakely@redhat.com>
9927         * doc/invoke.texi (-mclflushopt): Fix spelling of option.
9929 2018-03-12  Renlin Li  <renlin.li@arm.com>
9931         * config/aarch64/aarch64.md (movhf_aarch64): Fix mode argument to
9932         aarch64_output_scalar_simd_mov_immediate.
9934 2018-03-12  Martin Sebor  <msebor@redhat.com>
9936         PR tree-optimization/83456
9937         * gimple-fold.c (gimple_fold_builtin_memory_op): Avoid warning
9938         for perfectly overlapping calls to memcpy.
9939         (gimple_fold_builtin_memory_chk): Same.
9940         (gimple_fold_builtin_strcpy): Handle no-warning.
9941         (gimple_fold_builtin_stxcpy_chk): Same.
9942         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Handle no-warning.
9944 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
9946         * config/rs6000/rs6000.c (abi_v4_pass_in_fpr): Add bool "named"
9947         parameter.  Use it for SFmode.
9948         (rs6000_function_arg_advance_1): Adjust.
9949         (rs6000_function_arg): Adjust.
9950         (rs6000_gimplify_va_arg): Pass false for that new parameter.
9952 2018-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
9954         PR rtl-optimization/84169
9955         PR rtl-optimization/84780
9956         * combine.c (can_combine_p): Check for a 2-insn combination whether
9957         the destination register is used between the two insns, too.
9959 2018-03-12  Richard Biener  <rguenther@suse.de>
9961         PR tree-optimization/84803
9962         * tree-if-conv.c (ifcvt_memrefs_wont_trap): Don't do anything
9963         for refs DR analysis didn't process.
9965 2018-03-12  Richard Biener  <rguenther@suse.de>
9967         PR tree-optimization/84777
9968         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): For
9969         force-vectorize loops ignore whether we are optimizing for size.
9971 2018-03-12  Chung-Ju Wu  <jasonwucj@gmail.com>
9973         * config/nds32/nds32.c (nds32_md_asm_adjust): New function.
9974         (TARGET_MD_ASM_ADJUST): Define.
9976 2018-03-12  Monk Chiang  <sh.chiang04@gmail.com>
9977             Kito Cheng  <kito.cheng@gmail.com>
9978             Chung-Ju Wu  <jasonwucj@gmail.com>
9980         * config/nds32/nds32.c (nds32_compute_stack_frame,
9981         nds32_emit_stack_push_multiple, nds32_emit_stack_pop_multiple,
9982         nds32_emit_stack_v3push, nds32_emit_stack_v3pop,
9983         nds32_emit_adjust_frame, nds32_expand_prologue, nds32_expand_epilogue,
9984         nds32_expand_prologue_v3push, nds32_expand_epilogue_v3pop): Refine.
9985         * config/nds32/nds32.h (NDS32_FIRST_CALLEE_SAVE_GPR_REGNUM,
9986         NDS32_LAST_CALLEE_SAVE_GPR_REGNUM, NDS32_V3PUSH_AVAILABLE_P): New.
9987         * config/nds32/nds32.md (prologue, epilogue): Use macro
9988         NDS32_V3PUSH_AVAILABLE_P to do checking.
9990 2018-03-11  Jakub Jelinek  <jakub@redhat.com>
9992         PR debug/58150
9993         * dwarf2out.c (gen_enumeration_type_die): Don't guard adding
9994         DW_AT_declaration for ENUM_IS_OPAQUE on -gdwarf-4 or -gno-strict-dwarf,
9995         but on TYPE_SIZE.  Don't do anything for ENUM_IS_OPAQUE if not creating
9996         a new die.  Don't set TREE_ASM_WRITTEN if ENUM_IS_OPAQUE.  Guard
9997         addition of most attributes on !orig_type_die or the attribute not
9998         being present already.  Assert TYPE_VALUES is NULL for ENUM_IS_OPAQUE.
10000 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
10001             Chung-Ju Wu  <jasonwucj@gmail.com>
10003         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): Modify to define
10004         __NDS32_VH__ macro.
10005         * config/nds32/nds32.opt (mvh): New option.
10007 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
10008             Chung-Ju Wu  <jasonwucj@gmail.com>
10010         * config/nds32/nds32-protos.h (nds32_cpu_cpp_builtins): Declare
10011         function.
10012         * config/nds32/nds32.c (nds32_cpu_cpp_builtins): New function.
10013         * config/nds32/nds32.h (TARGET_CPU_CPP_BUILTINS): Modify its
10014         definition.
10016 2018-03-11  Kito Cheng  <kito.cheng@gmail.com>
10017             Chung-Ju Wu  <jasonwucj@gmail.com>
10019         * config/nds32/nds32-memory-manipulation.c (nds32_expand_strlen): New
10020         function.
10021         * config/nds32/nds32-multiple.md (strlensi): New pattern.
10022         * config/nds32/nds32-protos.h (nds32_expand_strlen): Declare function.
10024 2018-03-11  Monk Chiang  <sh.chiang04@gmail.com>
10025             Kito Cheng  <kito.cheng@gmail.com>
10026             Chung-Ju Wu  <jasonwucj@gmail.com>
10028         * config/nds32/constants.md (unspec_element): Add UNSPEC_FFB,
10029         UNSPEC_FFMISM and UNSPEC_FLMISM.
10030         * config/nds32/nds32-intrinsic.c (bdesc_2arg): Add builtin description
10031         for ffb, ffmism and flmism.
10032         * config/nds32/nds32-intrinsic.md (unspec_ffb): Define new pattern.
10033         (unspec_ffmism): Ditto.
10034         (unspec_flmism): Ditto.
10035         (nds32_expand_builtin_impl): Check if string extension is available.
10036         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_FFB,
10037         NDS32_BUILTIN_FFMISM and NDS32_BUILTIN_FLMISM.
10039 2018-03-10  Vladimir Makarov  <vmakarov@redhat.com>
10041         Reverting patch:
10042         2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
10044         PR target/83712
10045         * lra-assigns.c (assign_by_spills): Return a flag of reload
10046         assignment failure.  Do not process the reload assignment
10047         failures.  Do not spill other reload pseudos if they has the same
10048         reg class.
10049         (lra_assign): Add a return arg.  Set up from the result of
10050         assign_by_spills call.
10051         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
10052         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
10053         usage_insns if it is not NULL.
10054         (spill_hard_reg_in_range): New function.
10055         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
10056         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
10057         function prototypes.
10058         (lra_assign): Change prototype.
10059         * lra.c (lra): Add code to deal with fails by splitting hard reg
10060         live ranges.
10062 2018-03-10  H.J. Lu  <hongjiu.lu@intel.com>
10064         PR target/84807
10065         * config/i386/i386.opt: Replace Enforcment with Enforcement.
10067 2018-03-10  Alexandre Oliva  <aoliva@redhat.com>
10069         PR debug/84620
10070         * dwarf2out.h (dw_val_class): Add dw_val_class_symview.
10071         (dw_val_node): Add val_symbolic_view.
10072         * dwarf2out.c (dw_line_info_table): Add symviews_since_reset.
10073         (symview_upper_bound): New.
10074         (new_line_info_table): Initialize symviews_since_reset.
10075         (dwarf2out_source_line): Count symviews_since_reset and set
10076         symview_upper_bound.
10077         (dw_val_equal_p): Handle symview.
10078         (add_AT_symview): New.
10079         (print_dw_val): Handle symview.
10080         (attr_checksum, attr_checksum_ordered): Likewise.
10081         (same_dw_val_p, size_of_die): Likewise.
10082         (value_format, output_die): Likewise.
10083         (add_high_low_attributes): Use add_AT_symview for entry_view.
10084         (dwarf2out_finish): Reset symview_upper_bound, clear
10085         zero_view_p.
10087 2018-03-09  Peter Bergner  <bergner@vnet.ibm.com>
10089         PR target/83969
10090         * config/rs6000/rs6000.c (rs6000_offsettable_memref_p): New prototype.
10091         Add strict argument and use it.
10092         (rs6000_split_multireg_move): Update for new strict argument.
10093         (mem_operand_gpr): Disallow all non-offsettable addresses.
10094         * config/rs6000/rs6000.md (*movdi_internal64): Use YZ constraint.
10096 2018-03-09  Jakub Jelinek  <jakub@redhat.com>
10098         PR target/84772
10099         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Mark va_arg_tmp
10100         temporary TREE_ADDRESSABLE before gimplification of BUILT_IN_MEMCPY.
10101         * config/powerpcspe/powerpcspe.c (rs6000_gimplify_va_arg): Likewise.
10103         PR c++/84767
10104         * tree-inline.c (copy_tree_body_r): For INDIRECT_REF of a remapped
10105         decl, use remap_type if we want to use the type.
10107 2018-03-09  Martin Sebor  <msebor@redhat.com>
10109         PR tree-optimization/84526
10110         * gimple-ssa-warn-restrict.c (builtin_memref::set_base_and_offset):
10111         Remove dead code.
10112         (builtin_access::generic_overlap): Be prepared to handle non-array
10113         base objects.
10115 2018-03-09  Alexandre Oliva  <aoliva@redhat.com>
10117         PR rtl-optimization/84682
10118         * lra-constraints.c (process_address_1): Check is_address flag
10119         for address constraints.
10120         (process_alt_operands): Likewise.
10121         * lra.c (lra_set_insn_recog_data): Pass asm operand locs to
10122         preprocess_constraints.
10123         * recog.h (preprocess_constraints): Add oploc parameter.
10124         Adjust callers.
10125         * recog.c (preprocess_constraints): Test address_operand for
10126         CT_ADDRESS constraints.
10128 2018-03-09  Vladimir Makarov  <vmakarov@redhat.com>
10130         PR target/83712
10131         * lra-assigns.c (assign_by_spills): Return a flag of reload
10132         assignment failure.  Do not process the reload assignment
10133         failures.  Do not spill other reload pseudos if they has the same
10134         reg class.
10135         (lra_assign): Add a return arg.  Set up from the result of
10136         assign_by_spills call.
10137         (find_reload_regno_insns, lra_split_hard_reg_for): New functions.
10138         * lra-constraints.c (split_reg): Add a new arg.  Use it instead of
10139         usage_insns if it is not NULL.
10140         (spill_hard_reg_in_range): New function.
10141         (split_if_necessary, inherit_in_ebb): Pass a new arg to split_reg.
10142         * lra-int.h (spill_hard_reg_in_range, lra_split_hard_reg_for): New
10143         function prototypes.
10144         (lra_assign): Change prototype.
10145         * lra.c (lra): Add code to deal with fails by splitting hard reg
10146         live ranges.
10148 2018-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10150         PR target/83193
10151         * common/config/arm/arm-common.c (arm_parse_arch_option_name):
10152         Accept complain bool parameter.  Only emit errors if it is true.
10153         (arm_parse_cpu_option_name): Likewise.
10154         (arm_target_thumb_only): Adjust callers of the above.
10155         * config/arm/arm-protos.h (arm_parse_cpu_option_name): Adjust
10156         prototype to take a default true bool parameter.
10157         (arm_parse_arch_option_name): Likewise.
10159 2018-03-09  David Malcolm  <dmalcolm@redhat.com>
10160             Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
10162         PR jit/64089
10163         PR jit/84288
10164         * Makefile.in (LD_VERSION_SCRIPT_OPTION, LD_SONAME_OPTION): New.
10165         * configure: Regenerate.
10166         * configure.ac ("linker --version-script option"): New.
10167         ("linker soname option"): New.
10169 2018-03-09  Richard Biener  <rguenther@suse.de>
10171         PR tree-optimization/84775
10172         * tree-if-conv.c (add_bb_predicate_gimplified_stmts): Delink
10173         immediate uses of predicate stmts and mark them modified.
10175         Revert
10176         PR tree-optimization/84178
10177         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
10178         to caller.
10179         (version_loop_for_if_conversion): Delay update_ssa call.
10180         (tree_if_conversion): Delay update_ssa until after predicate
10181         insertion.
10183 2018-03-09  Eric Botcazou  <ebotcazou@adacore.com>
10185         PR target/84763
10186         * config/i386/winnt.c (i386_pe_seh_cold_init): Use small pre-allocation
10187         when the function accesses prior frames.
10189 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
10191         PR debug/84456
10192         * dwarf2out.c (dw_loc_list): If list && loc_list->first->next, call
10193         gen_llsym, otherwise call maybe_gen_llsym.
10195         PR inline-asm/84742
10196         * recog.c (asm_operand_ok): Return 0 if multi-character constraint
10197         has ',' character inside of it.
10199 2018-03-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
10201         PR target/84748
10202         * config/aarch64/aarch64.md (*compare_cstore<mode>_insn): Mark pattern
10203         as clobbering CC_REGNUM.
10205 2018-03-08  Richard Biener  <rguenther@suse.de>
10207         PR middle-end/84552
10208         * tree-scalar-evolution.c: Include tree-into-ssa.h.
10209         (follow_copies_to_constant): Do not follow SSA names registered
10210         for update.
10212 2018-03-08  Richard Biener  <rguenther@suse.de>
10214         PR tree-optimization/84178
10215         * tree-if-conv.c (combine_blocks): Move insert_gimplified_predicates
10216         to caller.
10217         (version_loop_for_if_conversion): Delay update_ssa call.
10218         (tree_if_conversion): Delay update_ssa until after predicate
10219         insertion.
10221 2018-03-08  David Malcolm  <dmalcolm@redhat.com>
10223         PR tree-optimization/84178
10224         * tree-if-conv.c (release_bb_predicate): Remove the
10225         the assertion that the stmts have NULL use_ops.
10226         Discard the statements, asserting that they haven't
10227         yet been added to a BB.
10229 2018-03-08  Richard Biener  <rguenther@suse.de>
10231         PR tree-optimization/84746
10232         * tree-ssa-pre.c (find_leader_in_sets): Deal with SET1 being NULL.
10233         (phi_translate): Pass in destination ANTIC_OUT set.
10234         (phi_translate_1): Likewise.  For a simplified result lookup
10235         a leader in ANTIC_OUT and AVAIL_OUT, not the ANTIC_IN sets.
10236         (phi_translate_set): Adjust.
10237         (do_pre_regular_insertion): Likewise.
10238         (do_pre_partial_partial_insertion): Likewise.
10240 2018-03-08  Martin Liska  <mliska@suse.cz>
10242         PR gcov-profile/84735
10243         * doc/gcov.texi: Document usage of profile files.
10244         * gcov-io.h: Document changes in the format.
10246 2018-03-08  Alexandre Oliva  <aoliva@redhat.com>
10248         PR debug/84404
10249         PR debug/84408
10250         * dwarf2out.c (struct dw_line_info_table): Update comments for
10251         view == -1.
10252         (FORCE_RESET_NEXT_VIEW): New.
10253         (FORCE_RESETTING_VIEW_P): New.
10254         (RESETTING_VIEW_P): Check for -1 too.
10255         (ZERO_VIEW_P): Likewise.
10256         (new_line_info_table): Force-reset next view.
10257         (dwarf2out_begin_function): Likewise.
10258         (dwarf2out_source_line): Simplify zero_view_p initialization.
10259         Test FORCE_RESETTING_VIEW_P and RESETTING_VIEW_P instead of
10260         view directly.  Omit view when omitting .loc at line 0.
10262 2018-03-08  Jakub Jelinek  <jakub@redhat.com>
10264         PR tree-optimization/84740
10265         * tree-switch-conversion.c (process_switch): Call build_constructors
10266         only if info.phi_count is non-zero.
10268         PR tree-optimization/84739
10269         * tree-tailcall.c (find_tail_calls): Check call arguments against
10270         DECL_ARGUMENTS (current_function_decl) rather than
10271         DECL_ARGUMENTS (func) when checking for tail recursion.
10273 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
10275         * doc/contrib.texi: Add entries for Martin Liska, David Malcolm,
10276         Marek Polacek, extend Vladimir Makarov's, Jonathan Wakely's and
10277         Volker Reichelt's entry and add entries for people that perform
10278         GCC fuzzy testing and report numerous bugs.
10280 2018-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
10282         PR target/82411
10283         * config/rs6000/rs6000.c (rs6000_elf_in_small_data_p): Don't put
10284         readonly data in sdata, if that is disabled.
10285         * config/rs6000/sysv4.opt (mreadonly-in-sdata): New option.
10286         * doc/invoke.texi (RS/6000 and PowerPC Options): Document
10287         -mreadonly-in-sdata option.
10289 2018-03-07  Martin Sebor  <msebor@redhat.com>
10291         PR tree-optimization/84468
10292         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Consider successor
10293         basic block when looking for nul assignment.
10295 2018-03-07  Eric Botcazou  <ebotcazou@adacore.com>
10297         PR target/84277
10298         * except.h (output_function_exception_table): Adjust prototype.
10299         * except.c (output_function_exception_table): Remove FNNAME parameter
10300         and add SECTION parameter.  Ouput one part of the table at a time.
10301         * final.c (final_scan_insn_1) <NOTE_INSN_SWITCH_TEXT_SECTIONS>: Output
10302         the first part of the exception table and emit unwind directives.
10303         * config/i386/i386-protos.h (i386_pe_end_cold_function): Declare.
10304         (i386_pe_seh_cold_init): Likewise.
10305         * config/i386/cygming.h (ASM_DECLARE_COLD_FUNCTION_NAME): New macro.
10306         (ASM_DECLARE_COLD_FUNCTION_SIZE): Likewise.
10307         * config/i386/i386.c (x86_expand_epilogue): Fix wording in comment.
10308         (ix86_output_call_insn): Emit a nop in one more case for SEH.
10309         * config/i386/winnt.c: Include except.h.
10310         (struct seh_frame_state): Add reg_offset, after_prologue and
10311         in_cold_section fields.
10312         (i386_pe_seh_end_prologue): Set seh->after_prologue.
10313         (i386_pe_seh_cold_init): New function.
10314         (i386_pe_seh_fini): Add COLD parameter and bail out if it is not equal
10315         to seh->in_cold_section.
10316         (seh_emit_push): Record the offset of the push.
10317         (seh_emit_save): Record the offet of the save.
10318         (i386_pe_seh_unwind_emit): Deal with NOTE_INSN_SWITCH_TEXT_SECTIONS.
10319         Test seh->after_prologue to disregard the epilogue.
10320         (i386_pe_end_function): Pass FALSE to i386_pe_seh_fini.
10321         (i386_pe_end_cold_function): New function.
10323 2018-03-07  Jakub Jelinek  <jakub@redhat.com>
10325         PR fortran/84565
10326         * config/aarch64/predicates.md (aarch64_simd_reg_or_zero): Use
10327         aarch64_simd_or_scalar_imm_zero rather than aarch64_simd_imm_zero.
10329         PR c++/84704
10330         * gimple-expr.c (create_tmp_var_raw): Set DECL_NAMELESS flag
10331         on tmp_var.
10332         * tree-pretty-print.c (dump_decl_name): For TDF_COMPARE_DEBUG,
10333         don't print names of DECL_NAMELESS DECL_IGNORED_P decls.
10335         PR middle-end/84723
10336         * multiple_target.c: Include tree-inline.h and intl.h.
10337         (expand_target_clones): Diagnose and fail if node->definition and
10338         !tree_versionable_function_p (node->decl).
10340 2018-03-06  John David Anglin  <danglin@gcc.gnu.org>
10342         * config/pa/pa.h (ASM_GENERATE_INTERNAL_LABEL): Revise to use
10343         sprint_ul.
10344         (ASM_OUTPUT_ADDR_VEC_ELT): Revise for above change.
10345         (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
10346         * config/pa/pa64-hpux.h (ASM_GENERATE_INTERNAL_LABEL): Revise as above.
10348 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
10350         PR target/84710
10351         * combine.c (try_combine): Use reg_or_subregno instead of handling
10352         just paradoxical SUBREGs and REGs.
10354 2018-03-06  Claudiu Zissulescu  <claziss@synopsys.com>
10356         * config/arc/arc.c (arc_finalize_pic): Remove function.
10357         (arc_must_save_register): We use single base PIC register, remove
10358         checks to save/restore the PIC register.
10359         (arc_expand_prologue): Likewise.
10360         * config/arc/arc-protos.h (arc_set_default_type_attributes):
10361         Remove.
10362         (arc_verify_short): Likewise.
10363         (arc_attr_type): Likewise.
10364         * config/arc/arc.c (arc_set_default_type_attributes): Remove.
10365         (walk_stores): Likewise.
10366         (arc_address_cost): Make it static.
10367         (arc_verify_short): Likewise.
10368         (branch_dest): Likewise.
10369         (arc_attr_type): Likewise.
10370         * config/arc/arc.c (TARGET_ADJUST_INSN_LENGTH): Remove.
10371         (TARGET_INSN_LENGTH_PARAMETERS): Likewise.
10372         (arc_final_prescan_insn): Remove inserting the nops due to
10373         hardware hazards.  It is done in reorg step.
10374         (insn_length_variant_t): Remove.
10375         (insn_length_parameters_t): Likewise.
10376         (arc_insn_length_parameters): Likewise.
10377         (arc_get_insn_variants): Likewise.
10378         * config/arc/arc.h (TARGET_UPSIZE_DBR): Remove.
10380 2018-03-06  Jakub Jelinek  <jakub@redhat.com>
10382         PR inline-asm/84683
10383         * reg-stack.c (move_for_stack_reg): If any_malformed_asm, avoid
10384         assertion failure.
10386         PR tree-optimization/84687
10387         * omp-simd-clone.c (simd_clone_create): Clear DECL_BUILT_IN_CLASS
10388         on new_node->decl.
10389         * match.pd (pow(C,x)*expN(y) -> expN(logN(C)*x+y)): New optimization.
10391 2018-03-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
10393         * config/rs6000/rs6000-builtin.def (rs6000_speculation_barrier):
10394         Rename to ppc_speculation_barrier.
10395         * config/rs6000/rs6000.c (rs6000_init_builtins): Rename builtin to
10396         __builtin_ppc_speculation_barrier.
10398 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
10400         PR target/84700
10401         * combine.c (combine_simplify_rtx): Don't try to simplify if
10402         if_then_else_cond returned non-NULL, but either true_rtx or false_rtx
10403         are equal to x.
10405 2018-03-05  Segher Boessenkool  <segher@kernel.crashing.org>
10407         * config/rs6000/rs6000.c (rs6000_loop_align): Don't align tiny loops
10408         to 32 bytes when compiling for POWER9.
10410 2018-03-05  Jakub Jelinek  <jakub@redhat.com>
10412         PR target/84564
10413         * config/i386/i386.c (ix86_function_ok_for_sibcall): Check for
10414         regparm >= 3 with no arg reg available also for calls with
10415         flag_force_indirect_call.  Pass decl to ix86_function_regparm.
10417         PR target/84524
10418         * config/i386/sse.md (*<code><mode>3): Replace <mask_prefix3> with
10419         orig,vex.
10420         (*<plusminus_insn><mode>3): Likewise.  Remove <mask_operand3> uses.
10422 2018-03-05  Peter Bergner  <bergner@vnet.ibm.com>
10424         PR target/84264
10425         * config/rs6000/vector.md (mov<mode>): Disallow altivec memory operands.
10427 2018-03-05  Richard Biener  <rguenther@suse.de>
10429         PR tree-optimization/84486
10430         * tree-ssa-pre.c (create_expression_by_pieces): Remove dead code.
10431         When inserting a __builtin_assume_aligned call set the LHS
10432         SSA name alignment info accordingly.
10434 2018-03-05  Wilco Dijkstra  <wdijkstr@arm.com>
10436         PR tree-optimization/84114
10437         * config/aarch64/aarch64.c (aarch64_reassociation_width)
10438         Avoid reassociation of FLOAT_MODE addition.
10440 2018-03-05  Olga Makhotina  <olga.makhotina@intel.com>
10442         * common/config/i386/i386-common.c (OPTION_MASK_ISA_PCONFIG_SET,
10443         OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_SET,
10444         OPTION_MASK_ISA_WBNOINVD_UNSET): New definitions.
10445         (ix86_handle_option): Handle -mpconfig and -mwbnoinvd.
10446         * config.gcc (pconfigintrin.h, wbnoinvdintrin.h) : Add headers.
10447         * config/i386/cpuid.h (bit_PCONFIG, bit_WBNOINVD): New.
10448         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mpconfig
10449         and -mwbnoinvd.
10450         * config/i386/i386-builtin.def (__builtin_ia32_wbnoinvd,
10451         __builtin_ia32_wbinvd): New builtins.
10452         (SPECIAL_ARGS2): New.
10453         * config/i386/i386-c.c (__WBNOINVD__, __PCONFIG__): New.
10454         (SPECIAL_ARGS2): New.
10455         * config/i386/i386.c (ix86_target_string): Add -mpconfig and -mwbnoinvd.
10456         (ix86_valid_target_attribute_inner_p): Ditto.
10457         (ix86_init_mmx_sse_builtins): Add special_args2.
10458         * config/i386/i386.h (TARGET_PCONFIG, TARGET_PCONFIG_P, TARGET_WBNOINVD,
10459         TARGET_WBNOINVD_P): New.
10460         * config/i386/i386.md (UNSPECV_WBINVD, UNSPECV_WBNOINVD): New.
10461         (define_insn "wbinvd", define_insn "wbnoinvd"): New.
10462         * config/i386/i386.opt: Add -mpconfig and -mwbnoinvd.
10463         * config/i386/immintrin.h (_wbinvd): New intrinsic.
10464         * config/i386/pconfigintrin.h: New file.
10465         * config/i386/wbnoinvdintrin.h: Ditto.
10466         * config/i386/x86intrin.h: Add headers pconfigintrin.h and
10467         wbnoinvdintrin.h.
10468         * doc/invoke.texi (-mpconfig, -mwbnoinvd): New.
10470 2018-03-05  Richard Biener  <rguenther@suse.de>
10472         PR tree-optimization/84670
10473         * tree-ssa-pre.c (struct bb_bitmap_sets): Add visited_with_visited_succs
10474         member.
10475         (BB_VISITED_WITH_VISITED_SUCCS): New define.
10476         (compute_antic): Initialize BB_VISITED_WITH_VISITED_SUCCS.
10477         (compute_antic_aux): Only assert the number of values in ANTIC_IN
10478         doesn't grow if all successors (recursively) were visited at least
10479         once.
10481 2018-03-05  Richard Biener  <rguenther@suse.de>
10483         PR tree-optimization/84650
10484         * tree-ssa-loop-im.c (pass_lim::execute): Reset the SCEV cache
10485         if executed in the loop pipeline.
10487 2018-03-05  Sandra Loosemore  <sandra@codesourcery.com>
10489         * doc/configfiles.texi (Configuration Files): Move info about
10490         conditionalizing $target-protos.h to...
10491         * doc/sourcebuild.texi (Back End): Here.  Explain how $target.h
10492         differs from $target-protos.h.
10494 2018-03-05  Kito Cheng  <kito.cheng@gmail.com>
10495             Chung-Ju Wu  <jasonwucj@gmail.com>
10497         * config/nds32/nds32-protos.h (nds32_expand_setmem): Declare.
10498         * config/nds32/nds32-multiple.md (setmemsi): Define.
10499         * config/nds32/nds32-memory-manipulation.c
10500         (nds32_gen_dup_4_byte_to_word_value): New.
10501         (emit_setmem_word_loop): New.
10502         (emit_setmem_byte_loop): New.
10503         (nds32_expand_setmem_loop): New.
10504         (nds32_expand_setmem_loop_v3m): New.
10505         (nds32_expand_setmem_unroll): New.
10506         (nds32_expand_setmem): New.
10508 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
10509             Chung-Ju Wu  <jasonwucj@gmail.com>
10511         * config/nds32/nds32-memory-manipulation.c
10512         (nds32_emit_load_store): New.
10513         (nds32_emit_post_inc_load_store): New.
10514         (nds32_emit_mem_move): New.
10515         (nds32_emit_mem_move_block): New.
10516         (nds32_expand_movmemsi_loop_unknown_size): New.
10517         (nds32_expand_movmemsi_loop_known_size): New.
10518         (nds32_expand_movmemsi_loop): New.
10519         (nds32_expand_movmemsi_unroll): New.
10520         (nds32_expand_movmemqi): Rename ...
10521         (nds32_expand_movmemsi): ... to this.
10522         * config/nds32/nds32-multiple.md (movmemqi): Rename ...
10523         (movmemsi): ... to this.
10524         * config/nds32/nds32-protos.h (nds32_expand_movmemqi): Rename ...
10525         (nds32_expand_movmemsi): ... to this.
10527 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
10528             Monk Chiang  <sh.chiang04@gmail.com>
10529             Chung-Ju Wu  <jasonwucj@gmail.com>
10531         * config/nds32/nds32-protos.h
10532         (nds32_expand_load_multiple): New arguments.
10533         (nds32_expand_store_multiple): Ditto.
10534         (nds32_valid_multiple_load_store): Rename ...
10535         (nds32_valid_multiple_load_store_p): ... to this.
10536         * config/nds32/nds32-memory-manipulation.c
10537         (nds32_expand_load_multiple): Refine implementation.
10538         (nds32_expand_store_multiple): Ditto.
10539         * config/nds32/nds32-multiple.md
10540         (load_multiple): Update nds32_expand_load_multiple interface.
10541         (store_multiple): Update nds32_expand_store_multiple interface.
10542         * config/nds32/nds32-predicates.c
10543         (nds32_valid_multiple_load_store): Rename ...
10544         (nds32_valid_multiple_load_store_p): ... to this and refine
10545         implementation.
10546         * config/nds32/predicates.md
10547         (nds32_load_multiple_and_update_address_operation): New predicate.
10548         (nds32_store_multiple_and_update_address_operation): New predicate.
10550 2018-03-04  Kito Cheng  <kito.cheng@gmail.com>
10551             Chung-Ju Wu  <jasonwucj@gmail.com>
10553         * config/nds32/nds32.md (type): Add load_multiple and store_multiple.
10554         (combo): New attribute.
10555         * config/nds32/nds32-multiple.md: Refine patterns with new attributes.
10557 2018-03-03  Chung-Ju Wu  <jasonwucj@gmail.com>
10559         * config/nds32/nds32.opt: Change -mcmodel= default value.
10561 2018-03-03  Kito Cheng  <kito.cheng@gmail.com>
10562             Monk Chiang  <sh.chiang04@gmail.com>
10563             Chung-Ju Wu  <jasonwucj@gmail.com>
10565         * config/nds32/constants.md (unspec_element): New enum.
10566         * config/nds32/constraints.md (Umw): New constraint.
10567         * config/nds32/nds32-intrinsic.c: Add more builtin functions.
10568         * config/nds32/nds32-intrinsic.md: Likewise.
10569         * config/nds32/nds32-md-auxiliary.c (nds32_regno_to_enable4): New.
10570         (nds32_valid_smw_lwm_base_p): New.
10571         (nds32_output_smw_single_word): New.
10572         (nds32_output_lmw_single_word): New.
10573         (nds32_expand_unaligned_load): New.
10574         (nds32_expand_unaligned_store): New.
10575         * config/nds32/nds32-protos.h (nds32_valid_smw_lwm_base_p): Declare.
10576         (nds32_output_smw_single_word): Declare.
10577         (nds32_output_lmw_single_word): Declare.
10578         (nds32_expand_unaligned_load): Declare.
10579         (nds32_expand_unaligned_store): Declare.
10580         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_UALOAD_HW,
10581         NDS32_BUILTIN_UALOAD_W, NDS32_BUILTIN_UALOAD_DW,
10582         NDS32_BUILTIN_UASTORE_HW, NDS32_BUILTIN_UASTORE_W,
10583         NDS32_BUILTIN_UASTORE_DW.
10584         * config/nds32/predicates.md (nds32_lmw_smw_base_operand): New
10585         predicate.
10587 2018-03-03  Monk Chiang  <sh.chiang04@gmail.com>
10588             Kito Cheng  <kito.cheng@gmail.com>
10589             Chung-Ju Wu  <jasonwucj@gmail.com>
10591         * config/nds32/nds32-intrinsic.c
10592         (nds32_expand_builtin_null_ftype_reg): Delete.
10593         (nds32_expand_builtin_reg_ftype_imm): Ditto.
10594         (nds32_expand_builtin_null_ftype_reg_imm): Ditto.
10595         (nds32_read_argument): New.
10596         (nds32_legitimize_target): Ditto.
10597         (nds32_legitimize_argument): Ditto.
10598         (nds32_check_constant_argument): Ditto.
10599         (nds32_expand_unop_builtin): Ditto.
10600         (nds32_expand_unopimm_builtin): Ditto.
10601         (nds32_expand_binop_builtin): Ditto.
10602         (nds32_builtin_decl_impl): Ditto.
10603         (builtin_description): Ditto.
10604         (nds32_expand_builtin_impl): Rewrite with new infrastructure.
10605         (nds32_init_builtins_impl): Ditto.
10606         * config/nds32/nds32.c (TARGET_BUILTIN_DECL): Define.
10607         (nds32_builtin_decl): New.
10608         * config/nds32/nds32.h (nds32_builtins): Add NDS32_BUILTIN_COUNT.
10609         * config/nds32/nds32-protos.h (nds32_builtin_decl_impl): Declare.
10611 2018-03-02  Jeff Law  <law@redhat.com>
10613         * reorg.c (stop_search_p): Handle DEBUG_INSN.
10614         (redundant_insn, fill_simple_delay_slots): Likewise.
10615         (fill_slots_from_thread): Likewise.
10616         * resource.c (mark_referenced_resources): Likewise.
10617         (mark_set_resources, find_dead_or_set_registers): Likewise.
10619 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
10621         * substring-locations.h (format_warning_va): Formatting fix for
10622         ATTRIBUTE_GCC_DIAG.
10623         (format_warning_at_substring): Fix up ATTRIBUTE_GCC_DIAG second
10624         argument.
10625         (format_warning_n_va, format_warning_at_substring_n): New prototypes.
10626         * substring-locations.c: Include intl.h.
10627         (format_warning_va): Turned into small wrapper around
10628         format_warning_n_va, renamed to ...
10629         (format_warning_n_va): ... this, add N and PLURAL_GMSGID arguments,
10630         rename GMSGID to SINGULAR_GMSGID, if SINGULAR_GMSGID != PLURAL_GMSGID,
10631         use ngettext.
10632         (format_warning_at_substring_n): New function.
10633         * gimple-ssa-sprintf.c: Remove GCC diagnostic ignored pragma.
10634         (fmtwarn): Add ATTRIBUTE_GCC_DIAG.  Turn into a copy of
10635         format_warning_at_substring with just a shorter name instead of
10636         const function pointer.
10637         (fmtwarn_n): New function.
10638         (maybe_warn, format_directive, parse_directive): Use fmtwarn_n where
10639         appropriate, get rid of all the fmtstr temporaries, move conditionals
10640         with G_() wrapped string literals directly into fmtwarn arguments,
10641         cast dir.len to (int), formatting fixes.
10643 2018-03-02  Thomas Schwinge  <thomas@codesourcery.com>
10645         * doc/invoke.texi: Remove "Cilk Plus" references.
10647 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
10648             Richard Biener  <rguenther@suse.de>
10650         PR ipa/84628
10651         * expr.c (expand_expr_real_1) <case CALL_EXPR>: Don't emit diagnostics
10652         for error or warning attributes if CALL_FROM_THUNK_P is set.
10653         Formatting fixes.
10655 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
10657         PR target/56540
10658         * config/pa/pa.h (TARGET_CPU_CPP_BUILTINS): Predefine
10659         __SIZEOF_128__ macro if HPUX_LONG_DOUBLE_LIBRARY.
10661         PR target/56540
10662         * config/ia64/ia64.h (TARGET_CPU_CPP_BUILTINS): Predefine
10663         __SIZEOF_{FPREG,FLOAT{80,128}}__ macros.
10665         * predict.c (test_prediction_value_range): Use PROB_UNINITIALIZED
10666         instead of -1U in last predictors element's probability member.
10668 2018-03-02  Eric Botcazou  <ebotcazou@adacore.com>
10670         PR ipa/83983
10671         * ipa-devirt.c (odr_subtypes_equivalent_p): Get the ODR type of both
10672         arguments if they are comparable.
10674 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
10676         PR tree-optimization/84634
10677         * tree-vect-stmts.c (vectorizable_store, vectorizable_load): Replace
10678         masks and masked_loop_p with a single loop_masks, making sure it's
10679         null for bb vectorization.
10681 2018-03-02  Richard Sandiford  <richard.sandiford@linaro.org>
10683         * tree-vect-data-refs.c (vect_analyze_data_ref_dependence)
10684         (vect_analyze_data_ref_access): Use loop->safe_len rather than
10685         loop->force_vectorize to check whether there is no alias.
10687 2018-03-02  Jakub Jelinek  <jakub@redhat.com>
10689         PR target/84614
10690         * rtl.h (prev_real_nondebug_insn, next_real_nondebug_insn): New
10691         prototypes.
10692         * emit-rtl.c (next_real_insn, prev_real_insn): Fix up function
10693         comments.
10694         (next_real_nondebug_insn, prev_real_nondebug_insn): New functions.
10695         * cfgcleanup.c (try_head_merge_bb): Use prev_real_nondebug_insn
10696         instead of a loop around prev_real_insn.
10697         * combine.c (move_deaths): Use prev_real_nondebug_insn instead of
10698         prev_real_insn.
10700         PR inline-asm/84625
10701         * config/i386/i386.c (ix86_print_operand): Use conditional
10702         output_operand_lossage instead of gcc_assert if CONST_VECTOR is not
10703         zero vector.
10705 2018-03-02  Richard Biener  <rguenther@suse.de>
10707         PR tree-optimization/84427
10708         * tree-ssa-pre.c (bitmap_remove_expr_from_set): Remove.
10709         (bitmap_set_subtract_values): Rewrite to handle multiple
10710         exprs per value.
10711         (clean): Likewise.
10712         (prune_clobbered_mems): Likewise.
10713         (phi_translate): Take edge instead of pred/phiblock.
10714         (phi_translate_1): Likewise.
10715         (phi_translate_set): Likewise.  Insert all translated
10716         exprs for a value into the set, keeping possibly multiple
10717         expressions per value.
10718         (compute_antic_aux): Adjust for phi_translate changes.
10719         When intersecting union the expressions and prune those
10720         not in the final value set, keeping possibly multiple
10721         expressions per value.  Do not use value-insertion
10722         for unioning ANTIC_OUT U EXP_GEN - TMP_GEN but merge
10723         all expressions.  Add verification that the value-sets
10724         only shrink during iteration.
10725         (compute_partial_antic_aux): Adjust for the phi_translate changes.
10726         (do_pre_regular_insertion): Likewise.
10727         (do_pre_partial_partial_insertion): Likewise.
10729 2018-03-02  Richard Biener  <rguenther@suse.de>
10731         PR target/82005
10732         * config/darwin.c (saved_debug_info_level): New static global.
10733         (darwin_asm_lto_start): Disable debug info generation for LTO out.
10734         (darwin_asm_lto_end): Restore debug info generation settings.
10736 2018-03-01  Martin Liska  <mliska@suse.cz>
10738         PR sanitizer/82484
10739         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
10740         volatile arguments.
10742 2018-03-01  Richard Biener  <rguenther@suse.de>
10744         PR debug/84645
10745         * dwarf2out.c (gen_variable_die): Properly handle late VLA
10746         type annotation with LTO when debug was disabled at compile-time.
10748 2018-03-01  Matthew Fortune  <mfortune@gmail.com>
10750         * config/mips/mips.c (mips_final_prescan_insn): Fix incorrect
10751         XINT with INTVAL.
10752         (mips_final_postscan_insn): Likewise.
10754 2018-03-01  Richard Sandiford  <richard.sandiford@linaro.org>
10756         PR rtl-optimization/84528
10757         * alias.c (init_alias_target): Add commentary.
10758         (init_alias_analysis): Only give HARD_FRAME_POINTER_REGNUM
10759         a unique base value if the frame pointer is not eliminated
10760         to the stack pointer.
10762 2018-03-01  Tom de Vries  <tom@codesourcery.com>
10764         PR rtl-optimization/83327
10765         * lra-int.h (hard_regs_spilled_into): Declare.
10766         * lra.c (hard_regs_spilled_into): Define.
10767         (init_reg_info): Init hard_regs_spilled_into.
10768         * lra-spills.c (assign_spill_hard_regs): Update hard_regs_spilled_into.
10769         * lra-lives.c (make_hard_regno_born, make_hard_regno_dead)
10770         (process_bb_lives): Handle hard_regs_spilled_into.
10771         (lra_create_live_ranges_1): Before doing liveness propagation, clear
10772         regs in all_hard_regs_bitmap if set in hard_regs_spilled_into.
10774 2018-02-28  David Edelsohn  <dje.gcc@gmail.com>
10776         * config.gcc (powerpc-ibm-aix7.1.*): New stanza.
10777         (powerpc-ibm-aix[789]*): Default to AIX 7.2.
10778         * config/rs6000/aix71.h (TARGET_DEFAULT): Revert to Power4 ISA.
10779         * config/rs6000/aix72.h: New file.
10781 2018-02-28  Jakub Jelinek  <jakub@redhat.com>
10783         * gimple-ssa-warn-restrict.c (maybe_diag_overlap): Use warning_n
10784         instead of warning_at with conditional singular and plural messages
10785         where possible.
10787         PR target/52991
10788         * stor-layout.c (update_alignment_for_field): For
10789         targetm.ms_bitfield_layout_p (rli->t), if !is_bitfield
10790         && !DECL_PACKED (field), do the alignment update, just use
10791         only desired_align instead of MAX (type_align, desired_align)
10792         as the alignment.
10793         (place_field): Don't do known_align < desired_align handling
10794         early if targetm.ms_bitfield_layout_p (rli->t) and rli->prev_field
10795         is non-NULL, instead do it after rli->prev_field handling and
10796         only if not within a bitfield word.  For DECL_PACKED (field)
10797         use type_align of BITS_PER_UNIT.
10799 2018-02-28  Eric Botcazou  <ebotcazou@adacore.com>
10801         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Remove
10802         superfluous parentheses and trailing spaces.
10804 2018-02-28  Richard Biener  <rguenther@suse.de>
10806         PR tree-optimization/84584
10807         * graphite-scop-detection.c (scop_detection::add_scop): Discard
10808         SCoPs with fake exit edge.
10810 2018-02-28  Martin Liska  <mliska@suse.cz>
10812         PR testsuite/84597
10813         * timevar.c (timer::print): Fix format to properly print 100%
10814         values.
10816 2018-02-28  Richard Biener  <rguenther@suse.de>
10818         PR middle-end/84607
10819         * genmatch.c (capture_info::walk_match): Do not mark
10820         captured expressions without operands as expr_p given
10821         they act more like predicates and should be subject to
10822         "lost tail" side-effect preserving.
10824 2018-02-28  Alexandre Oliva  <aoliva@redhat.com>
10826         PR rtl-optimization/81611
10827         * auto-inc-dec.c (attempt_change): Move dead note from
10828         mem_insn if it's the next use of regno
10829         (find_address): Take address use of reg holding
10830         non-incremented value.  Add parm to limit search to the named
10831         reg only.
10832         (merge_in_block): Attempt to use a mem insn that is the next
10833         use of the original regno.
10835 2018-02-27  Martin Sebor  <msebor@redhat.com>
10837         PR c++/83871
10838         * gcc/doc/invoke.texi (-Wmissing-attributes): New option.
10839         * gcc/print-tree.c (print_node): Handle DECL_UNINLINABLE.
10841 2018-02-27  Martin Sebor  <msebor@redhat.com>
10843         PR translation/84207
10844         * diagnostic-core.h (warning_n, error_n, inform_n): Change
10845         n argument to unsigned HOST_WIDE_INT.
10846         * diagnostic.c (warning_n, error_n, inform_n): Ditto.
10847         (diagnostic_n_impl): Ditto.  Handle arguments in excess of LONG_MAX.
10848         * gimple-ssa-sprintf.c (format_directive): Simplify inform_n call.
10849         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Use warning_n.
10851 2018-02-27  Richard Biener  <rguenther@suse.de>
10853         PR tree-optimization/84512
10854         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost):
10855         Do not use the estimate returned from record_stmt_cost for
10856         the scalar iteration cost but sum properly using add_stmt_cost.
10858 2018-02-27  Richard Biener  <rguenther@suse.de>
10860         PR tree-optimization/84466
10861         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
10862         Adjust last change to less strictly validate use operands.
10864 2018-02-27  Martin Liska  <mliska@suse.cz>
10866         PR gcov-profile/84548
10867         * gcov.c (process_file): Allow partial overlap and consider it
10868         also as group functions.
10869         (output_lines): Properly calculate range of lines for a group.
10871 2018-02-27  Martin Liska  <mliska@suse.cz>
10873         * timevar.c (timer::print_row): Remove 'usr', 'sys', 'wall' and
10874         'ggc' suffixes.  Change first column width.
10875         (timer::print): Fix formatting of the column.
10877 2018-02-27  Alexandre Oliva  <aoliva@redhat.com>
10879         * tree-ssa-live.c (remove_unused_scope_block_p): Do not
10880         preserve inline entry blocks for the sake of debug inline
10881         entry point markers alone.
10882         (remove_unused_locals): Suggest in comments a better place to
10883         force the preservation of inline entry blocks that are
10884         otherwise unused, but do not preserve them.
10886 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
10888         * config/i386/i386.c (ix86_output_indirect_jmp): Update comments.
10890 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
10892         PR target/84039
10893         * config/i386/constraints.md (Bs): Replace
10894         ix86_indirect_branch_register with
10895         TARGET_INDIRECT_BRANCH_REGISTER.
10896         (Bw): Likewise.
10897         * config/i386/i386.md (indirect_jump): Likewise.
10898         (tablejump): Likewise.
10899         (*sibcall_memory): Likewise.
10900         (*sibcall_value_memory): Likewise.
10901         Peepholes of indirect call and jump via memory: Likewise.
10902         (*sibcall_GOT_32): Disallowed for TARGET_INDIRECT_BRANCH_REGISTER.
10903         (*sibcall_value_GOT_32): Likewise.
10904         * config/i386/predicates.md (indirect_branch_operand): Likewise.
10905         (GOT_memory_operand): Likewise.
10906         (call_insn_operand): Likewise.
10907         (sibcall_insn_operand): Likewise.
10908         (GOT32_symbol_operand): Likewise.
10909         * config/i386/i386.h (TARGET_INDIRECT_BRANCH_REGISTER): New.
10911 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
10913         PR rtl-optimization/83496
10914         * reorg.c (steal_delay_list_from_target): Change REDUNDANT array from
10915         booleans to RTXes.  Call fix_reg_dead_note on every non-null element.
10916         (steal_delay_list_from_fallthrough): Call fix_reg_dead_note on a
10917         redundant insn, if any.
10918         (relax_delay_slots): Likewise.
10919         (update_reg_unused_notes): Rename REDUNDANT_INSN to OTHER_INSN.
10921 2018-02-26  Richard Sandiford  <richard.sandiford@linaro.org>
10923         PR tree-optimization/83965
10924         * tree-vect-patterns.c (vect_reassociating_reduction_p): Assume
10925         that grouped statements are part of a reduction chain.  Return
10926         true if the statement is not marked as a reduction itself but
10927         is part of a group.
10928         (vect_recog_dot_prod_pattern): Don't check whether the statement
10929         is part of a group here.
10930         (vect_recog_sad_pattern): Likewise.
10931         (vect_recog_widen_sum_pattern): Likewise.
10933 2018-02-26  Eric Botcazou  <ebotcazou@adacore.com>
10935         PR debug/84545
10936         * final.c (rest_of_clean_state): Also look for calls inside sequences.
10938 2018-02-26  H.J. Lu  <hongjiu.lu@intel.com>
10940         PR target/84530
10941         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Remove
10942         the bool argument.
10943         (ix86_output_indirect_function_return): New prototype.
10944         (ix86_split_simple_return_pop_internal): Likewise.
10945         * config/i386/i386.c (indirect_return_via_cx): New.
10946         (indirect_return_via_cx_bnd): Likewise.
10947         (indirect_thunk_name): Handle return va CX_REG.
10948         (output_indirect_thunk_function): Create alias for
10949         __x86_return_thunk_[re]cx and __x86_return_thunk_[re]cx_bnd.
10950         (ix86_output_indirect_jmp): Remove the bool argument.
10951         (ix86_output_indirect_function_return): New function.
10952         (ix86_split_simple_return_pop_internal): Likewise.
10953         * config/i386/i386.md (*indirect_jump): Don't pass false
10954         to ix86_output_indirect_jmp.
10955         (*tablejump_1): Likewise.
10956         (simple_return_pop_internal): Change it to define_insn_and_split.
10957         Call ix86_split_simple_return_pop_internal to split it for
10958         -mfunction-return=.
10959         (simple_return_indirect_internal): Call
10960         ix86_output_indirect_function_return instead of
10961         ix86_output_indirect_jmp.
10963 2018-02-26  Jakub Jelinek  <jakub@redhat.com>
10965         PR bootstrap/84405
10966         * vec.h (vec_default_construct): For BROKEN_VALUE_INITIALIZATION use
10967         memset and value initialization afterwards.
10969 2018-02-26  Christophe Lyon  <christophe.lyon@linaro.org>
10971         * Makefile.in (lto-wrapper): Use ALL_LINKERFLAGS.
10973 2018-02-26  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
10975         PR target/84521
10976         * common/config/aarch64/aarch64-common.c
10977         (aarch_option_optimization_table[]): Switch
10978         off fomit-frame-pointer
10980 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
10981             Chung-Ju Wu  <jasonwucj@gmail.com>
10983         * config/nds32/nds32-multiple.md (load_multiple): Disallow
10984         volatile memory.
10985         (store_multiple): Ditto.
10987 2018-02-26  Kito Cheng  <kito.cheng@gmail.com>
10989         * config.gcc: Add --with-cpu support for nds32 target.
10990         * config/nds32/nds32-opts.h (nds32_cpu_type): New.
10991         * config/nds32/nds32.opt: Add -mcpu= option.
10993 2018-02-25  Segher Boessenkool  <segher@kernel.crashing.org>
10995         * config/rs6000/rs6000.opt (mvrsave=no, mvrsave=yes, isel=no,
10996         isel=yes): Warn for these deprecated options.
10998 2018-02-23  David Edelsohn  <dje.gcc@gmail.com>
11000         * config/rs6000/aix71.h (TARGET_DEFAULT): Change to
11001         ISA_2_5_MASKS_EMBEDDED.
11003 2018-02-23  Jakub Jelinek  <jakub@redhat.com>
11005         * ipa-prop.c (ipa_vr_ggc_hash_traits::hash): Hash p->min and
11006         p->max as pointers rather than using iterative_hash_expr.
11008 2018-02-23  Carl Love  <cel@us.ibm.com>
11010         * config/rs6000/rs6000-builtin.def: Change VSIGNED2 and VUNSIGNED2
11011         macro expansions from BU_VSX_2 to BU_P8V_VSX_2 and BU_VSX_OVERLOAD_2 to
11012         BU_P8V_OVERLOAD_2.
11013         * config/rs6000/rs6000-c.c: Change VSX_BUILTIN_VEC_VSIGNED2 to
11014         P8V_BUILTIN_VEC_VSIGNED2.  Change VSX_BUILTIN_VEC_VUNSIGNED2 to
11015         P8V_BUILTIN_VEC_VUNSIGNED2.
11017 2018-02-22  Vladimir Makarov  <vmakarov@redhat.com>
11019         PR target/81572
11020         * lra-int.h (LRA_UNKNOWN_ALT, LRA_NON_CLOBBERED_ALT): New macros.
11021         * lra.c (lra_set_insn_recog_data, lra_update_insn_recog_data): Use
11022         LRA_UNKNOWN_ALT.
11023         * lra-constraints.c (curr_insn_transform): Set up
11024         LRA_NON_CLOBBERED_ALT for moves processed on the fast path.  Use
11025         LRA_UNKNOWN_ALT.
11026         (remove_inheritance_pseudos): Use LRA_UNKNOWN_ALT.
11027         * lra-eliminations.c (spill_pseudos): Ditto.
11028         (process_insn_for_elimination): Ditto.
11029         * lra-lives.c (reg_early_clobber_p): Use the new macros.
11030         * lra-spills.c (spill_pseudos): Use LRA_UNKNOWN_ALT and
11031         LRA_NON_CLOBBERED_ALT.
11033 2018-02-22  Martin Sebor  <msebor@redhat.com>
11035         PR tree-optimization/84480
11036         * gimple-fold.c (gimple_fold_builtin_strcpy): Move warnings
11037         to maybe_diag_stxncpy_trunc.  Call it.
11038         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Integrate warnings
11039         from gimple_fold_builtin_strcpy.  Print inlining stack.
11040         (handle_builtin_stxncpy): Print inlining stack.
11041         * tree-ssa-strlen.h (maybe_diag_stxncpy_trunc): Declare.
11043 2018-02-22  H.J. Lu  <hongjiu.lu@intel.com>
11045         PR target/84176
11046         * config/i386/i386.c (ix86_set_indirect_branch_type): Issue an
11047         error when -mindirect-branch=thunk-extern, -fcf-protection=branch
11048         and -fcheck-pointer-bounds are used together.
11049         (indirect_thunk_prefix): New enum.
11050         (indirect_thunk_need_prefix): New function.
11051         (indirect_thunk_name): Replace need_bnd_p with need_prefix.  Use
11052         "_nt" instead of "_bnd" for NOTRACK prefix.
11053         (output_indirect_thunk): Replace need_bnd_p with need_prefix.
11054         (output_indirect_thunk_function): Likewise.
11055         (): Likewise.
11056         (ix86_code_end): Update output_indirect_thunk_function calls.
11057         (ix86_output_indirect_branch_via_reg): Replace
11058         ix86_bnd_prefixed_insn_p with indirect_thunk_need_prefix.
11059         (ix86_output_indirect_branch_via_push): Likewise.
11060         (ix86_output_function_return): Likewise.
11061         * doc/invoke.texi: Document -mindirect-branch=thunk-extern is
11062         incompatible with -fcf-protection=branch and
11063         -fcheck-pointer-bounds.
11065 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
11067         PR target/83335
11068         * config/aarch64/aarch64.c (aarch64_print_address_internal):
11069         Change gcc_assert call to output_operand_lossage.
11071 2018-02-22  Steve Ellcey  <sellcey@cavium.com>
11073         * doc/extend.texi (__builtin_extend_pointer): Document builtin.
11075 2018-02-22  DJ Delorie  <dj@redhat.com>
11076             Sebastian Perta  <sebastian.perta@renesas.com>
11077             Oleg Endo  <olegendo@gcc.gnu.org>
11079         * config/rx/rx.c (rx_rtx_costs): New function.
11080         (TARGET_RTX_COSTS): Override to use rx_rtx_costs.
11082 2018-02-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
11084         * config/arm/t-multilib: Map Armv8-R to Armv7 multilibs.
11086 2018-02-22  Martin Liska  <mliska@suse.cz>
11088         PR driver/83193
11089         * common/config/arm/arm-common.c (arm_print_hint_for_cpu_option):
11090         Add "native" as a possible value.
11092 2018-02-22  Martin Liska  <mliska@suse.cz>
11094         PR driver/83193
11095         * config/i386/i386.c (ix86_option_override_internal):
11096         Add "native" as a possible value for -march and -mtune.
11098 2018-02-22  Jakub Jelinek  <jakub@redhat.com>
11100         PR target/84502
11101         * stor-layout.c (finalize_type_size): Propagate TYPE_EMPTY_P flag
11102         to all type variants.
11104         PR tree-optimization/84503
11105         * gimple-ssa-store-merging.c (merged_store_group::merge_into): Compute
11106         width as info->bitpos + info->bitsize - start.
11107         (merged_store_group::merge_overlapping): Simplify width computation.
11108         (check_no_overlap): New function.
11109         (imm_store_chain_info::try_coalesce_bswap): Compute expected
11110         start + width and last_order of the group, fail if check_no_overlap
11111         fails.
11112         (imm_store_chain_info::coalesce_immediate_stores): Don't merge info
11113         to group if check_no_overlap fails.
11115 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
11117         * config/rs6000/altivec.md: Delete contraint arguments to
11118         define_expand, define_split, and define_peephole2, and in
11119         define_insn_and_split if always unused.
11120         * config/rs6000/darwin.md: Ditto.
11121         * config/rs6000/dfp.md: Ditto.
11122         * config/rs6000/rs6000.md: Ditto.
11123         * config/rs6000/sync.md: Ditto.
11124         * config/rs6000/vector.md: Ditto.
11125         * config/rs6000/vsx.md: Ditto.
11127 2018-02-21  Segher Boessenkool  <segher@kernel.crashing.org>
11129         * config/rs6000/altivec.md: Write output control strings as braced
11130         blocks instead of double-quoted strings.
11131         * config/rs6000/darwin.md: Ditto.
11132         * config/rs6000/rs6000.md: Ditto.
11133         * config/rs6000/vector.md: Ditto.
11134         * config/rs6000/vsx.md: Ditto.
11136 2018-02-21  Jason Merrill  <jason@redhat.com>
11138         PR c++/84314 - ICE with templates and fastcall attribute.
11139         * attribs.c (build_type_attribute_qual_variant): Remove assert.
11141 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
11143         * ipa-cp.c (determine_versionability): Fix comment typos.
11145 2018-02-21  Jan Hubicka  <hubicka@ucw.cz>
11147         PR c/84229
11148         * ipa-cp.c (determine_versionability): Do not version functions caling
11149         va_arg_pack.
11151 2018-02-21  Martin Liska  <mliska@suse.cz>
11153         PR driver/83193
11154         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch):
11155         Add "native" as a possible value.
11156         * config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT):  Define
11157         the macro when native cpu detection is available.
11159 2018-02-21  Martin Liska  <mliska@suse.cz>
11161         PR driver/83193
11162         * common/config/arm/arm-common.c (arm_print_hint_for_arch_option):
11163         Add "native" as a possible value.
11164         * config/arm/arm.h (HAVE_LOCAL_CPU_DETECT): Define the macro
11165         when native cpu detection is available.
11167 2018-02-21  Jakub Jelinek  <jakub@redhat.com>
11168             Martin Sebor  <msebor@redhat.com>
11170         PR tree-optimization/84478
11171         * gimple-fold.h (get_range_strlen): Add a bool argument defaulted to
11172         false.
11173         * gimple-fold.c (get_range_strlen): Make minlen const and assume it
11174         can't be NULL.  Change FUZZY from bool to int, for 1 add PHI/COND_EXPR
11175         support which is conservatively correct, for 2 only stay conservative
11176         for maxlen.  Formatting and comment capitalization fixes.  Add STRICT
11177         argument to the 2 argument get_range_strlen, adjust 6 arg
11178         get_range_strlen caller and clear minmaxlen[0] and [1] if it returned
11179         false.
11180         (get_maxval_strlen): Adjust 6 arg get_range_strlen caller.
11181         (gimple_fold_builtin_strlen): Pass true as last argument to
11182         get_range_strlen.
11184 2018-02-20  Martin Sebor  <msebor@redhat.com>
11186         PR middle-end/84095
11187         * gimple-ssa-warn-restrict.c (builtin_memref::extend_offset_range): New.
11188         (builtin_memref::set_base_and_offset): Same.  Handle inner references.
11189         (builtin_memref::builtin_memref): Factor out parts into
11190         set_base_and_offset and call it.
11192 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
11194         PR middle-end/84406
11195         * optabs-query.c (find_widening_optab_handler_and_mode): If from_mode
11196         is a scalar_int_mode, assert that to_mode is a scalar_int_mode with
11197         greater precision.  If to_mode is a MODE_PARTIAL_INT, stop the
11198         search at the associated MODE_INT.
11200 2018-02-20  Jeff Law  <law@redhat.com>
11202         PR middle-end/82123
11203         PR tree-optimization/81592
11204         PR middle-end/79257
11205         * gimple-ssa-sprintf.c (format_integer): Query EVRP range analyzer
11206         for range data rather than using global data.
11207         * gimple-ssa-sprintf.c (get_int_range): Query EVRP range analyzer for
11208         range data rather than using global data.
11209         * gimple-ssa-sprintf.c (get_int_range): Accept vr_values parameter
11210         pass it to children as needed.
11211         (struct directive::fmtresult): Similarly.
11212         (struct directive::set_width): Similarly.
11213         (struct directive::set_precision): Similarly.
11214         (format_integer, format_directive, parse_directive): Similarly.
11215         (format_none): Accept unnamed vr_values parameter.
11216         (format_percent, format_floating, format_character): Similarly.
11217         (format_string, format_plain): Similarly.
11218         * gimple-ssa-sprintf.c (sprintf_dom_walker::handle_gimple_call): Query
11219         the EVRP range analyzer for range data rather than using global data.
11220         * gimple-ssa-sprintf.c: Include alloc-pool.h, vr-values.h and
11221         gimple-ssa-evrp-analyze.h
11222         (class sprintf_dom_walker): Add after_dom_children member function.
11223         Add evrp_range_analyzer member.
11224         (sprintf_dom_walker::before_dom_children): Call into the EVRP
11225         range analyzer as needed.
11226         (sprintf_dom_walker::after_dom_children): New member function.
11227         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::enter): Do nothing
11228         if not optimizing.
11229         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
11230         (evrp_range_analyzer::pop_to_marker): Likewise.
11232 2018-02-20  Richard Sandiford  <richard.sandiford@linaro.org>
11234         PR tree-optimization/84419
11235         * internal-fn.c (expand_call_mem_ref): Create a TARGET_MEM_REF
11236         with the required type if its current type is compatible but
11237         different.
11239 2018-02-20  Jakub Jelinek  <jakub@redhat.com>
11241         PR middle-end/82004
11242         * match.pd (pow(C,x) -> exp(log(C)*x)): Delay all folding until
11243         after vectorization.
11245 2018-02-20  Martin Liska  <mliska@suse.cz>
11247         PR driver/83193
11248         * config/aarch64/aarch64.c (aarch64_print_hint_for_core_or_arch): Print
11249         possible values if we don't have a hint.
11251 2018-02-20  Martin Liska  <mliska@suse.cz>
11253         PR c/84310
11254         PR target/79747
11255         * final.c (shorten_branches): Build align_tab array with one
11256         more element.
11257         * opts.c (finish_options): Add alignment option limit check.
11258         (MAX_CODE_ALIGN): Likewise.
11259         (MAX_CODE_ALIGN_VALUE): Likewise.
11260         * doc/invoke.texi: Document maximum allowed option value for
11261         all -falign-* options.
11263 2018-02-19  Jakub Jelinek  <jakub@redhat.com>
11265         PR target/84146
11266         * reg-notes.def (REG_CALL_ARG_LOCATION): New reg note.
11267         * insn-notes.def (NOTE_INSN_CALL_ARG_LOCATION): Remove.
11268         * var-tracking.c (emit_note_insn_var_location): Remove all references
11269         to NOTE_INSN_CALL_ARG_LOCATION.
11270         (emit_notes_in_bb): Emit arguments as REG_CALL_ARG_LOCATION note on
11271         the CALL_INSN rather than separate NOTE_INSN_CALL_ARG_LOCATION note.
11272         Use copy_rtx_if_shared.
11273         * dwarf2out.c (gen_subprogram_die): Use XEXP with 0 instead of
11274         NOTE_VAR_LOCATION on ca_loc->call_arg_loc_note.
11275         (dwarf2out_var_location): Remove handling of
11276         NOTE_INSN_CALL_ARG_LOCATION, instead handle REG_CALL_ARG_LOCATION note
11277         on call_insn.
11278         * final.c (final_scan_insn): Remove all references to
11279         NOTE_INSN_CALL_ARG_LOCATION.
11280         (rest_of_clean_state): Likewise.  Remove REG_CALL_ARG_LOCATION notes
11281         before dumping final insns.
11282         * except.c (emit_note_eh_region_end): Remove all references to
11283         NOTE_INSN_CALL_ARG_LOCATION.
11284         * config/alpha/alpha.c (alpha_pad_function_end): Likewise.
11285         * config/c6x/c6x.c (c6x_gen_bundles): Likewise.
11286         * config/arc/arc.c (hwloop_optimize): Likewise.
11287         * config/arm/arm.c (create_fix_barrier): Likewise.
11288         * config/s390/s390.c (s390_chunkify_start): Likewise.
11289         * config/sh/sh.c (find_barrier): Likewise.
11290         * config/i386/i386.c (rest_of_insert_endbranch,
11291         ix86_seh_fixup_eh_fallthru): Likewise.
11292         * config/xtensa/xtensa.c (hwloop_optimize): Likewise.
11293         * config/iq2000/iq2000.c (final_prescan_insn): Likewise.
11294         * config/frv/frv.c (frv_function_prologue): Likewise.
11295         * emit-rtl.c (try_split): Likewise.  Copy over REG_CALL_ARG_LOCATION
11296         reg note.
11297         (note_outside_basic_block_p): Remove all references to
11298         NOTE_INSN_CALL_ARG_LOCATION.
11299         * gengtype.c (adjust_field_rtx_def): Likewise.
11300         * print-rtl.c (rtx_writer::print_rtx_operand_code_0, print_insn):
11301         Likewise.
11302         * jump.c (cleanup_barriers, delete_related_insns): Likewise.
11303         * cfgrtl.c (force_nonfallthru_and_redirect): Likewise.
11305         PR c++/84444
11306         * builtins.c (builtin_mathfn_code): Don't check if CALL_EXPR_FN (t)
11307         is ADDR_EXPR.
11309         PR tree-optimization/84452
11310         * tree-vect-patterns.c (vect_recog_pow_pattern): Don't call
11311         expand_simd_clones if targetm.simd_clone.compute_vecsize_and_simdlen
11312         is NULL.
11314 2018-02-19  Martin Liska  <mliska@suse.cz>
11316         PR sanitizer/82183
11317         * passes.def: Put pass_sancov_O0 before pass_lower_switch with -O0.
11319 2018-02-19  Martin Liska  <mliska@suse.cz>
11320             Richard Sandiford  <richard.sandiford@linaro.org>
11322         PR tree-optimization/82491
11323         * gimple-fold.c (get_base_constructor): Make earlier bail out
11324         to prevent ubsan.
11326 2018-02-19  Carl Love  <cel@us.ibm.com>
11328         * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from
11329         BU_ALTIVEC_A to BU_P8V_AV_1 and BU_ALTIVEC_OVERLOAD_1 to
11330         BU_P8V_OVERLOAD_1.
11331         * config/rs6000/rs6000-c.c: Change ALTIVEC_BUILTIN_VEC_NEG to
11332         P8V_BUILTIN_VEC_NEG.
11334 2018-02-19  Sebastian Perta  <sebastian.perta@renesas.com>
11336         * config/rl78/rl78.md (movdf): New define expand.
11338 2018-02-19  Martin Liska  <mliska@suse.cz>
11340         PR other/80589
11341         * doc/invoke.texi: Fix typo.
11342         * params.def (PARAM_MAX_LOOP_HEADER_INSNS): Likewise.
11344 2018-02-18  Segher Boessenkool  <segher@kernel.crashing.org>
11346         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
11347         handle rs6000_single_float and rs6000_double_float specially for
11348         e500 family CPUs.
11350 2018-02-16  Jeff Law  <law@redhat.com>
11352         * config/rx/rx.c (add_pop_cfi_notes): New function.;
11353         (pop_regs): Use it.
11355 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
11357         PR ipa/84425
11358         * ipa-inline.c (inline_small_functions): Fix a typo.
11360 2018-02-16  Nathan Sidwell  <nathan@acm.org>
11362         * doc/extend.texi (Backwards Compatibility): Americanize 'behaviour'.
11364 2018-02-16  Carl Love  <cel@us.ibm.com>
11366         * config/rs6000/rs6000-builtin.def: Add BU_P8V_VSX_2 macro definition.
11367         Change FLOAT2 expansions from BU_VSX_2 to BU_P8V_VSX_2 and
11368         from BU_VSX_OVERLOAD_2 to BU_P8V_OVERLOAD_2.
11369         * config/rs6000/rs6000-c.c: Changed macro VSX_BUILTIN_VEC_FLOAT2
11370         expansion to P8V_BUILTIN_VEC_FLOAT2.
11372 2018-02-16  Vladimir Makarov  <vmakarov@redhat.com>
11374         PR rtl-optimization/70023
11375         * lra-constraints.c (inherit_in_ebb): Take hard reg mode of
11376         src_regno into account.
11378 2018-02-16  Carl Love  <cel@us.ibm.com>
11380         * config/rs6000/altivec.h: Remove vec_vextract4b and vec_vinsert4b.
11381         * config/rs6000/rs6000-builtin.def: Remove macro expansion for
11382         VEXTRACT4B, VINSERT4B, VINSERT4B_DI and VEXTRACT4B.
11383         * config/rs6000/rs6000.c: Remove case statements for
11384         P9V_BUILTIN_VEXTRACT4B, P9V_BUILTIN_VEC_VEXTRACT4B,
11385         P9V_BUILTIN_VINSERT4B, P9V_BUILTIN_VINSERT4B_DI,
11386         and P9V_BUILTIN_VEC_VINSERT4B.
11387         * config/rs6000/rs6000-c.c (altivec_expand_builtin): Remove entries for
11388         P9V_BUILTIN_VEC_VEXTRACT4B and P9V_BUILTIN_VEC_VINSERT4B.
11389         * config/rs6000/vsx.md:
11390         * doc/extend.texi: Remove vec_vextract4b, non ABI definitions for
11391         vec_insert4b.
11393 2018-02-16  Carl Love  <cel@us.ibm.com>
11395         * config/rs6000/altivec.h: Add builtin names vec_extract4b
11396         vec_insert4b.
11397         * config/rs6000/rs6000-builtin.def: Add INSERT4B and EXTRACT4B
11398         definitions.
11399         * config/rs6000/rs6000-c.c: Add the definitions for
11400         P9V_BUILTIN_VEC_EXTRACT4B and P9V_BUILTIN_VEC_INSERT4B.
11401         * config/rs6000/rs6000.c (altivec_expand_builtin): Add
11402         P9V_BUILTIN_EXTRACT4B and P9V_BUILTIN_INSERT4B case statements.
11403         * config/rs6000/vsx.md: Add define_insn extract4b.  Add define_expand
11404         definition for insert4b and define insn *insert3b_internal.
11405         * doc/extend.texi: Add documentation for vec_extract4b.
11407 2018-02-16  Nathan Sidwell  <nathan@acm.org>
11409         * doc/extend.texi (Backwards Compatibility): Mention friend
11410         injection.  Note for-scope is deprecated.
11411         * doc/invoke.texi (-ffriend-injection): Deprecate.
11413 2018-02-16  Segher Boessenkool  <segher@kernel.crashing.org>
11415         * combine.c (try_combine): When adjusting LOG_LINKS for the destination
11416         that moved to I2, also allow destinations that are a paradoxical
11417         subreg (instead of a normal reg).
11419 2018-02-16  Oleg Endo  <olegendo@gcc.gnu.org>
11421         PR target/83831
11422         * config/rx/rx.c (rx_fuse_in_memory_bitop): Convert shift operand
11423         to QImode.
11425 2018-02-16  Richard Biener  <rguenther@suse.de>
11427         PR tree-optimization/84037
11428         PR tree-optimization/84016
11429         PR target/82862
11430         * config/i386/i386.c (ix86_builtin_vectorization_cost):
11431         Adjust vec_construct for the fact we need additional higher latency
11432         128bit inserts for AVX256 and AVX512 vector builds.
11433         (ix86_add_stmt_cost): Scale vector construction cost for
11434         elementwise loads.
11436 2018-02-16  Richard Biener  <rguenther@suse.de>
11438         PR tree-optimization/84417
11439         * tree-ssa.c (non_rewritable_mem_ref_base): Properly constrain
11440         the MEM_REF offset when conversion to BIT_FIELD_REF is desired.
11441         (non_rewritable_lvalue_p): Likewise, use poly-ints.
11443 2018-02-16  Martin Liska  <mliska@suse.cz>
11445         PR sanitizer/84307
11446         * internal-fn.def (ASAN_CHECK): Set proper flags.
11447         (ASAN_MARK): Likewise.
11449 2018-02-16  Julia Koval  <julia.koval@intel.com>
11451         * config/i386/i386.c (ix86_option_override_internal): Remove PTA_CLWB
11452         from PTA_CANNONLAKE.
11454 2018-02-16  Jakub Jelinek  <jakub@redhat.com>
11456         PR target/84272
11457         * config/aarch64/cortex-a57-fma-steering.c (fma_forest::merge_forest):
11458         Use ++iter rather than iter++ for std::list iterators.
11459         (func_fma_steering::dfs): Likewise.  Don't delete nodes right away,
11460         defer deleting them until all nodes in the forest are processed.  Do
11461         free even leaf nodes.  Change to_process into auto_vec.
11463         PR bootstrap/84405
11464         * system.h (BROKEN_VALUE_INITIALIZATION): Define for GCC < 4.3.
11465         * vec.h (vec_default_construct): Use memset instead of placement new
11466         if BROKEN_VALUE_INITIALIZATION is defined.
11467         * hash-table.h (hash_table<Descriptor, Allocator>::empty_slow): Use
11468         memset instead of value initialization if BROKEN_VALUE_INITIALIZATION
11469         is defined.
11471         PR rtl-optimization/83723
11472         * lra-int.h (lra_substitute_pseudo): Add DEBUG_P argument.
11473         * lra.c (lra_substitute_pseudo): Likewise.  If true, use
11474         gen_rtx_raw_SUBREG instead of gen_rtx_SUBREG.  Pass DEBUG_P to
11475         recursive calls.
11476         (lra_substitute_pseudo_within_insn): Adjust lra_substitute_pseudo
11477         callers.
11478         * lra-constraints.c (inherit_reload_reg, split_reg): Likewise.
11480 2018-02-16  Eric Botcazou  <ebotcazou@adacore.com>
11482         PR rtl-optimization/81443
11483         * rtlanal.c (num_sign_bit_copies1) <SUBREG>: Do not propagate results
11484         from inner REGs to paradoxical SUBREGs.
11486 2018-02-16  Richard Biener  <rguenther@suse.de>
11488         PR tree-optimization/84399
11489         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
11490         For operands we can analyze at their definition make sure we can
11491         analyze them at each use as well.
11493 2018-02-16  Richard Biener  <rguenther@suse.de>
11495         PR tree-optimization/84190
11496         * tree-ssa.c (non_rewritable_mem_ref_base): Do not touch
11497         volatile accesses if the decl isn't volatile.
11499 2018-02-15  Jason Merrill  <jason@redhat.com>
11501         PR c++/84314 - ICE with templates and fastcall attribute.
11502         * attribs.c (build_type_attribute_qual_variant): Don't clobber
11503         TYPE_CANONICAL on an existing type.
11505 2018-02-15  Jakub Jelinek  <jakub@redhat.com>
11507         PR tree-optimization/84383
11508         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Don't look at
11509         dstoff nor call operand_equal_p if dstbase is NULL.
11511         PR tree-optimization/84334
11512         * match.pd ((A +- CST1) +- CST2 -> A + CST3): If A is
11513         also a CONSTANT_CLASS_P, punt.
11515 2018-02-14  Jim Wilson  <jimw@sifive.com>
11517         * config/riscv/riscv.c (riscv_first_stack_step): Move locals after
11518         first SMALL_OPERAND check.  New local min_second_step.  Move assert
11519         to where locals are set.  Add TARGET_RVC support.
11520         * config/riscv/riscv.h (C_SxSP_BITS, SWSP_REACH, SDSP_REACH): New.
11522 2018-02-14  Indu Bhagat  <indu.bhagat@oracle.com>
11524         * doc/invoke.texi: Correct -Wformat-overflow code sample.
11526 2018-02-14  Martin Sebor  <msebor@redhat.com>
11528         PR tree-optimization/83698
11529         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For
11530         arrays constrain the offset range to their bounds.
11531         (builtin_access::strcat_overlap): Adjust the bounds of overlap offset.
11532         (builtin_access::overlap): Avoid setting the size of overlap if it's
11533         already been set.
11534         (maybe_diag_overlap): Also consider arrays when deciding what values
11535         of offsets to include in diagnostics.
11537 2018-02-14  Martin Sebor  <msebor@redhat.com>
11539         PR c/84108
11540         * attribs.c (diag_attr_exclusions): Consider the exclusion(s)
11541         that correspond to the kind of a declaration.
11543 2018-02-14  John David Anglin  <danglin@gcc.gnu.org>
11545         PR target/83984
11546         * config/pa/pa.md: Load address of PIC label using the linkage table
11547         if the label is nonlocal.
11549 2018-02-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
11551         * config/rs6000/rs6000.c (rs6000_option_override_internal): Issue
11552         warning message if user requests -maltivec=be.
11553         * doc/invoke.texi: Document deprecation of -maltivec=be.
11555 2018-02-14  Will Schmidt  <will_schmidt@vnet.ibm.com>
11557         PR target/84220
11558         * config/rs6000/rs6000-c.c: Update definitions for
11559         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SLDW,
11560         VEC_XXSLDWI and ALTIVEC_BUILTIN_VEC_XXPERMDI builtins.
11562 2018-02-14  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
11564         PR target/84239
11565         * config/i386/cetintrin.h: Remove _rdssp[d|q] and
11566         add _get_ssp intrinsics. Remove argument from
11567         __builtin_ia32_rdssp[d|q].
11568         * config/i386/i386-builtin-types.def: Add UINT_FTYPE_VOID.
11569         * config/i386/i386-builtin.def: Remove argument from
11570         __builtin_ia32_rdssp[d|q].
11571         * config/i386/i386.c: Use UINT_FTYPE_VOID. Use
11572         ix86_expand_special_args_builtin for _rdssp[d|q].
11573         * config/i386/i386.md: Remove argument from rdssp[si|di] insn.
11574         Clear register before usage.
11575         * doc/extend.texi: Remove argument from __builtin_ia32_rdssp[d|q].
11576         Add documentation for new _get_ssp and _inc_ssp intrinsics.
11578 2018-02-14  Richard Sandiford  <richard.sandiford@linaro.org>
11580         PR tree-optimization/84357
11581         * tree-data-ref.c (object_address_invariant_in_loop_p): Check
11582         operand 1 of an ARRAY_REF too.
11584 2018-02-14  Oleg Endo  <olegendo@gcc.gnu.org>
11586         PR target/83831
11587         * config/rx/rx-protos.h (rx_reg_dead_or_unused_after_insn,
11588         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
11589         declarations.
11590         (set_of_reg): New struct.
11591         (rx_find_set_of_reg, rx_find_use_of_reg): New functions.
11592         * config/rx/rx.c (rx_reg_dead_or_unused_after_insn,
11593         rx_copy_reg_dead_or_unused_notes, rx_fuse_in_memory_bitop): New
11594         functions.
11595         * config/rx/rx.md (andsi3, iorsi3, xorsi3): Convert to insn_and_split.
11596         Split into bitclr, bitset, bitinvert patterns if appropriate.
11597         (*bitset, *bitinvert, *bitclr): Convert to named insn_and_split and
11598         use rx_fuse_in_memory_bitop.
11599         (*bitset_in_memory, *bitinvert_in_memory, *bitclr_in_memory): Convert
11600         to named insn, correct maximum insn length.
11602 2018-02-14  Jozef Lawrynowicz  <jozefl.gcc@gmail.com>
11604         PR target/79242
11605         * machmode.def: Define a complex mode for PARTIAL_INT.
11606         * genmodes.c (complex_class): Return MODE_COMPLEX_INT for
11607         MODE_PARTIAL_INT.
11608         * doc/rtl.texi: Document CSPImode.
11609         * config/msp430/msp430.c (msp430_hard_regno_nregs): Add CPSImode
11610         handling.
11611         (msp430_hard_regno_nregs_with_padding): Likewise.
11613 2018-02-13  Peter Bergner  <bergner@vnet.ibm.com>
11615         PR target/84279
11616         * config/rs6000/rs6000.c (mem_operand_gpr): Disallow altivec addresses.
11618 2018-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
11620         PR rtl-optimization/84169
11621         * combine.c (try_combine): New variable split_i2i3.  Set it to true if
11622         we generated a parallel as new i3 and we split that to new i2 and i3
11623         instructions.  Handle split_i2i3 similar to swap_i2i3: scan the
11624         LOG_LINKs of i3 to see which of those need to link to i2 now.  Link
11625         those to i2, not i1.  Partially rewrite this scan code.
11627 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
11629         PR c/82210
11630         * stor-layout.c (place_field): For variable length fields, adjust
11631         offset_align afterwards not just based on the field's alignment,
11632         but also on the size.
11634         PR middle-end/84309
11635         * match.pd (pow(C,x) -> exp(log(C)*x)): Use exp2s and log2s instead
11636         of exps and logs in the use_exp2 case.
11638 2018-02-13  Jeff Law  <law@redhat.com>
11640         * config/rl/rl78.c (rl78_attribute_table): Fix terminator and
11641         entry for "vector".
11643         * config/rl78/rl78.c (rl78_handle_func_attribute): Mark
11644         ARGS as unused.
11646 2018-02-13  Alexandre Oliva  <aoliva@redhat.com>
11648         PR debug/84342
11649         PR debug/84319
11650         * common.opt (gas-loc-support, gas-locview-support): New.
11651         (ginline-points, ginternal-reset-location-views): New.
11652         * doc/invoke.texi: Document them.  Use @itemx where intended.
11653         (gvariable-location-views): Adjust.
11654         * target.def (reset_location_view): New.
11655         * doc/tm.texi.in (DWARF2_ASM_VIEW_DEBUG_INFO): New.
11656         (TARGET_RESET_LOCATION_VIEW): New.
11657         * doc/tm.texi: Rebuilt.
11658         * dwarf2out.c (dwarf2out_default_as_loc_support): New.
11659         (dwarf2out_default_as_locview_support): New.
11660         (output_asm_line_debug_info): Use option variables.
11661         (dwarf2out_maybe_output_loclist_view_pair): Likewise.
11662         (output_loc_list): Likewise.
11663         (add_high_low_attributes): Check option variables.
11664         Don't output entry view attribute in strict mode.
11665         (gen_inlined_subroutine_die): Check option variables.
11666         (dwarf2out_inline_entry): Likewise.
11667         (init_sections_and_labels): Likewise.
11668         (dwarf2out_early_finish): Likewise.
11669         (maybe_reset_location_view): New, from...
11670         (dwarf2out_var_location): ... here.  Call it.
11671         * debug.h (dwarf2out_default_as_loc_support): Declare.
11672         (dwarf2out_default_as_locview_support): Declare.
11673         * hooks.c (hook_int_rtx_insn_0): New.
11674         * hooks.h (hook_int_rtx_insn_0): Declare.
11675         * toplev.c (process_options): Take -gas-loc-support and
11676         -gas-locview-support from dwarf2out.  Enable
11677         -gvariable-location-views by default only with locview
11678         assembler support.  Enable -ginternal-reset-location-views by
11679         default only if the target defines the corresponding hook.
11680         Enable -ginline-points by default if location views are
11681         enabled; force it disabled if statement frontiers are
11682         disabled.
11683         * tree-inline.c (expand_call_inline): Check option variables.
11684         * tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
11686 2018-02-13  Richard Sandiford  <richard.sandiford@linaro.org>
11688         PR tree-optimization/84321
11689         * tree-vrp.c (intersect_range_with_nonzero_bits): Fix VR_ANTI_RANGE
11690         handling.  Also check whether the anti-range contains any values
11691         that satisfy the mask; switch to a VR_RANGE if not.
11693 2018-02-13  Paolo Bonzini  <bonzini@gnu.org>
11695         PR sanitizer/84340
11696         * internal-fn.def (ASAN_CHECK, ASAN_MARK): Revert changes to fnspec.
11698 2018-02-13  Martin Jambor  <mjambor@suse.cz>
11700         PR c++/83990
11701         * ipa-param-manipulation.c (ipa_modify_call_arguments): Use location
11702         of call statements, also set location of a load to a temporary.
11704 2018-02-13  Sebastian Perta  <sebastian.perta@renesas.com>
11706         * config/rl78/rl78.c (add_vector_labels): New function.
11707         * config/rl78/rl78.c (rl78_handle_vector_attribute): New function.
11708         * config/rl78/rl78.c (rl78_start_function): Call add_vector_labels.
11709         * config/rl78/rl78.c (rl78_handle_func_attribute): Removed the assert
11710         which checks that no arguments are passed.
11711         * config/rl78/rl78.c (rl78_attribute_table): Add "vector" attribute.
11712         * doc/extend.texi: Documentation for the new attribute.
11714 2018-02-13  Andreas Schwab  <schwab@suse.de>
11716         * config/riscv/linux.h (CPP_SPEC): Define.
11718 2018-02-13  Jakub Jelinek  <jakub@redhat.com>
11720         PR target/84335
11721         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Pass
11722         OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2 instead of
11723         OPTION_MASK_ISA_AES as first argument to def_builtin_const
11724         for AES builtins.  Pass OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2
11725         instead of OPTION_MASK_ISA_PCLMUL as first argument to
11726         def_builtin_const for __builtin_ia32_pclmulqdq128 builtin.
11727         * config/i386/wmmintrin.h: If __SSE2__ is not defined, enable it
11728         temporarily for AES and PCLMUL builtins.
11730         PR tree-optimization/84339
11731         * gimple-fold.c (get_range_strlen): Set *FLEXP to true when handling
11732         ARRAY_REF where first operand is array_at_struct_end_p COMPONENT_REF.
11733         Formatting fixes.
11735         PR middle-end/84309
11736         * match.pd (pow(C,x) -> exp(log(C)*x)): Optimize instead into
11737         exp2(log2(C)*x) if C is a power of 2 and c99 runtime is available.
11738         * generic-match-head.c (canonicalize_math_after_vectorization_p): New
11739         inline function.
11740         * gimple-match-head.c (canonicalize_math_after_vectorization_p): New
11741         inline function.
11742         * omp-simd-clone.h: New file.
11743         * omp-simd-clone.c: Include omp-simd-clone.h.
11744         (expand_simd_clones): No longer static.
11745         * tree-vect-patterns.c: Include fold-const-call.h, attribs.h,
11746         cgraph.h and omp-simd-clone.h.
11747         (vect_recog_pow_pattern): Optimize pow(C,x) to exp(log(C)*x).
11748         (vect_recog_widen_shift_pattern): Formatting fix.
11749         (vect_pattern_recog_1): Don't check optab for calls.
11751         PR target/84336
11752         * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
11753         operands[2] into a REG before using gen_lowpart on it.
11755 2018-02-12  Jeff Law  <law@redhat.com>
11757         PR target/83760
11758         * config/sh/sh.c (find_barrier): Consider a sibling call
11759         a barrier as well.
11761         * cse.c (try_back_substitute_reg): Move any REG_ARGS_SIZE note when
11762         successfully back substituting a reg.
11764 2018-02-12  Richard Biener  <rguenther@suse.de>
11766         PR tree-optimization/84037
11767         * tree-vect-slp.c (vect_analyze_slp_cost): Add visited
11768         parameter, move visited init to caller.
11769         (vect_slp_analyze_operations): Separate cost from validity
11770         check, initialize visited once for all instances.
11771         (vect_schedule_slp): Analyze map to CSE vectorized nodes once
11772         for all instances.
11773         * tree-vect-stmts.c (vect_model_simple_cost): Make early
11774         out an assert.
11775         (vect_model_promotion_demotion_cost): Likewise.
11776         (vectorizable_bswap): Guard cost modeling with !slp_node
11777         instead of !PURE_SLP_STMT to avoid double-counting on hybrid
11778         SLP stmts.
11779         (vectorizable_call): Likewise.
11780         (vectorizable_conversion): Likewise.
11781         (vectorizable_assignment): Likewise.
11782         (vectorizable_shift): Likewise.
11783         (vectorizable_operation): Likewise.
11784         (vectorizable_store): Likewise.
11785         (vectorizable_load): Likewise.
11786         (vectorizable_condition): Likewise.
11787         (vectorizable_comparison): Likewise.
11789 2018-02-12  Paolo Bonzini  <bonzini@gnu.org>
11791         PR sanitizer/84307
11792         * internal-fn.def (ASAN_CHECK): Fix fnspec to account for return value.
11793         (ASAN_MARK): Fix fnspec to account for return value, change pointer
11794         argument from 'R' to 'W' so that the pointed-to datum is clobbered.
11796 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
11798         PR middle-end/83665
11799         * params.def (inline-min-speedup): Increase from 8 to 15.
11800         (max-inline-insns-auto): Decrease from 40 to 30.
11801         * ipa-split.c (consider_split): Add some buffer for function to
11802         be considered inlining candidate.
11803         * invoke.texi (max-inline-insns-auto, inline-min-speedup): UPdate
11804         default values.
11806 2018-02-12  Richard Biener  <rguenther@suse.de>
11808         PR tree-optimization/84037
11809         * tree-vect-slp.c (vect_build_slp_tree_2): Try swapping the
11810         matched stmts if we cannot swap the non-matched ones.
11812 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
11814         * config/i386/avx512fintrin.h (_mm_mask_scalef_round_sd,
11815         _mm_maskz_scalef_round_sd, _mm_mask_scalef_round_ss,
11816         _mm_maskz_scalef_round_ss): New intrinsics.
11817         (__builtin_ia32_scalefsd_round, __builtin_ia32_scalefss_round): Fix.
11818         * config/i386/i386-builtin.def (__builtin_ia32_scalefsd_round,
11819         __builtin_ia32_scalefss_round): Remove.
11820         (__builtin_ia32_scalefsd_mask_round,
11821         __builtin_ia32_scalefss_mask_round): New intrinsics.
11822         * config/i386/sse.md (vmscalef<mode><round_name>): Renamed to ...
11823         (vmscalef<mode><mask_scalar_name><round_scalar_name>): ... this.
11824         ((match_operand:VF_128 2 "<round_nimm_predicate>"
11825         "<round_constraint>")): Changed to ...
11826         ((match_operand:VF_128 2 "<round_scalar_nimm_predicate>"
11827         "<round_scalar_constraint>")): ... this.
11828         ("vscalef<ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|
11829         %0, %1, %2<round_op3>}"): Changed to ...
11830         ("vscalef<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%2, %1,
11831         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %1,
11832         %2<round_scalar_mask_op3>}"): ... this.
11833         * config/i386/subst.md (round_scalar_nimm_predicate): New.
11835 2018-02-12  Olga Makhotina  <olga.makhotina@intel.com>
11837         * config/i386/avx512fintrin.h (_mm_mask_sqrt_round_sd)
11838         (_mm_maskz_sqrt_round_sd, _mm_mask_sqrt_round_ss)
11839         (_mm_maskz_sqrt_round_ss): New intrinsics.
11840         (__builtin_ia32_sqrtsd_round, __builtin_ia32_sqrtss_round): Remove.
11841         (__builtin_ia32_sqrtsd_mask_round)
11842         (__builtin_ia32_sqrtss_mask_round): New builtins.
11843         * config/i386/i386-builtin.def (__builtin_ia32_sqrtsd_round)
11844         (__builtin_ia32_sqrtss_round): Remove.
11845         (__builtin_ia32_sqrtsd_mask_round)
11846         (__builtin_ia32_sqrtss_mask_round): New builtins.
11847         * config/i386/sse.md (vmsqrt<mode>2<round_name>): Renamed to ...
11848         (vmsqrt<mode>2<mask_scalar_name><round_scalar_name>): ... this.
11849         ((match_operand:VF_128 1 "vector_operand"
11850         "xBm,<round_constraint>")): Changed to ...
11851         ((match_operand:VF_128 1 "vector_operand"
11852         "xBm,<round_scalar_constraint>")): ... this.
11853         (vsqrt<ssescalarmodesuffix>\t{<round_op3>%1, %2, %0|
11854         %0, %2, %<iptr>1<round_op3>}): Changed to ...
11855         (vsqrt<ssescalarmodesuffix>\t{<round_scalar_mask_op3>%1, %2,
11856         %0<mask_scalar_operand3>|%0<mask_scalar_operand3>, %2,
11857         %<iptr>1<round_scalar_mask_op3>}): ... this.
11858         ((set_attr "prefix" "<round_prefix>")): Changed to ...
11859         ((set_attr "prefix" "<round_scalar_prefix>")): ... this.
11861 2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>
11863         PR target/84266
11864         * config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
11865         Cast vec_cmpeq result to correct type.
11866         * config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
11867         Cast vec_cmpgt result to correct type.
11869 2018-02-11  Alexandre Oliva  <aoliva@redhat.com>
11871         * final.c (final_scan_insn_1): Renamed from...
11872         (final_scan_insn): ... this.  New wrapper, to recover
11873         seen from the outermost call in recursive ones.
11874         * config/sparc/sparc.c (output_return): Drop seen from call.
11875         (output_sibcall): Likewise.
11876         * config/visium/visium.c (output_branch): Likewise.
11878 2018-02-10  John David Anglin  <danglin@gcc.gnu.org>
11880         * config/pa/pa.c (hppa_profile_hook): Mark SYMBOL_REF for _mcount as
11881         function label.
11883 2018-02-10  Alan Modra  <amodra@gmail.com>
11885         PR target/84300
11886         * config/rs6000/rs6000.md (split_stack_return): Remove (use ..).
11887         Specify LR as an input.
11889 2018-02-10  Jakub Jelinek  <jakub@redhat.com>
11891         PR sanitizer/83987
11892         * omp-low.c (maybe_remove_omp_member_access_dummy_vars,
11893         remove_member_access_dummy_vars): New functions.
11894         (lower_omp_for, lower_omp_taskreg, lower_omp_target,
11895         lower_omp_1, execute_lower_omp): Use them.
11897         PR rtl-optimization/84308
11898         * shrink-wrap.c (spread_components): Release todo vector.
11900 2018-02-09  Vladimir Makarov  <vmakarov@redhat.com>
11902         PR rtl-optimization/57193
11903         * ira-color.c (struct allocno_color_data): Add member
11904         conflict_allocno_hard_prefs.
11905         (update_conflict_allocno_hard_prefs): New.
11906         (bucket_allocno_compare_func): Add a preference based on
11907         conflict_allocno_hard_prefs.
11908         (push_allocno_to_stack): Update conflict_allocno_hard_prefs.
11909         (color_allocnos): Remove a dead code.  Initiate
11910         conflict_allocno_hard_prefs.  Call update_costs_from_prefs.
11912 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
11914         PR target/84226
11915         * config/rs6000/vsx.md (p9_xxbrq_v16qi): Change input operand
11916         constraint from =wa to wa.  Avoid a subreg on the output operand,
11917         instead use a pseudo and subreg it in a move.
11918         (p9_xxbrd_<mode>): Changed to ...
11919         (p9_xxbrd_v2di): ... this insn, without VSX_D iterator.
11920         (p9_xxbrd_v2df): New expander.
11921         (p9_xxbrw_<mode>): Changed to ...
11922         (p9_xxbrw_v4si): ... this insn, without VSX_W iterator.
11923         (p9_xxbrw_v4sf): New expander.
11925 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
11927         * config/rx/rx.md (movsicc): Update expander to be matched by GCC.
11929 2018-02-09  Peter Bergner  <bergner@vnet.ibm.com>
11931         PR target/83926
11932         * config/rs6000/vsx.md (vsx_mul_v2di): Handle generating a 64-bit
11933         multiply in 32-bit mode.
11934         (vsx_div_v2di): Handle generating a 64-bit signed divide in 32-bit mode.
11935         (vsx_udiv_v2di): Handle generating a 64-bit unsigned divide in 32-bit
11936         mode.
11938 2018-02-09  Sebastian Perta  <sebastian.perta@renesas.com>
11940         * config/rx/constraints.md (CALL_OP_SYMBOL_REF): Added new constraint
11941         to allow or block "symbol_ref" depending on the value of TARGET_JSR.
11942         * config/rx/rx.md (call_internal): Use CALL_OP_SYMBOL_REF.
11943         * config/rx/rx.md (call_value_internal): Use CALL_OP_SYMBOL_REF.
11945 2018-02-09  Pierre-Marie de Rodat  <derodat@adacore.com>
11947         PR lto/84213
11948         * dwarf2out.c (is_trivial_indirect_ref): New function.
11949         (dwarf2out_late_global_decl): Do not generate a location
11950         attribute for variables that have a non-trivial DECL_VALUE_EXPR
11951         and that are not defined in the current unit.
11953 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
11955         * optabs.c (prepare_cmp_insn): Try harder to emit a direct comparison
11956         instead of a libcall for UNORDERED.
11958 2018-02-09  Tamar Christina  <tamar.christina@arm.com>
11960         PR target/82641
11961         * config/arm/arm-c.c (arm_cpu_builtins): Un-define __ARM_FEATURE_LDREX,
11962         __ARM_ARCH_PROFILE, __ARM_ARCH_ISA_THUMB, __ARM_FP and __ARM_NEON_FP.
11964 2018-02-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
11966         PR target/PR84295
11967         * config/s390/s390.c (s390_set_current_function): Invoke
11968         s390_indirect_branch_settings also if fndecl didn't change.
11970 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
11972         * config/rs6000/rs6000.md (blockage): Set length to zero.
11974 2018-02-09  Eric Botcazou  <ebotcazou@adacore.com>
11976         * expr.c (optimize_bitfield_assignment_op): Remove obsolete assertion.
11978 2018-02-09  Jakub Jelinek  <jakub@redhat.com>
11980         PR sanitizer/84285
11981         * gcc.c (STATIC_LIBASAN_LIBS, STATIC_LIBTSAN_LIBS,
11982         STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS): Handle -static like
11983         -static-lib*san.
11985         PR debug/84252
11986         * var-tracking.c (vt_add_function_parameter): Punt for non-onepart
11987         PARALLEL incoming that failed vt_get_decl_and_offset check.
11989         PR middle-end/84237
11990         * output.h (bss_initializer_p): Add NAMED argument, defaulted to false.
11991         * varasm.c (bss_initializer_p): Add NAMED argument, if true, ignore
11992         TREE_READONLY bit.
11993         (get_variable_section): For decls in named .bss* sections pass true as
11994         second argument to bss_initializer_p.
11996 2018-02-09  Marek Polacek  <polacek@redhat.com>
11997             Jakub Jelinek  <jakub@redhat.com>
11999         PR c++/83659
12000         * fold-const.c (fold_indirect_ref_1): Use VECTOR_TYPE_P macro.
12001         Formatting fixes.  Verify first that tree_fits_poly_int64_p (op01).
12002         Sync some changes from cxx_fold_indirect_ref.
12004 2018-02-09  Alexandre Oliva  <aoliva@redhat.com>
12006         * cfgexpand.c (expand_gimple_basic_block): Handle inline entry
12007         markers.
12008         * dwarf2out.c (dwarf2_debug_hooks): Enable inline_entry hook.
12009         (BLOCK_INLINE_ENTRY_LABEL): New.
12010         (dwarf2out_var_location): Disregard inline entry markers.
12011         (inline_entry_data): New struct.
12012         (inline_entry_data_hasher): New hashtable type.
12013         (inline_entry_data_hasher::hash): New.
12014         (inline_entry_data_hasher::equal): New.
12015         (inline_entry_data_table): New variable.
12016         (add_high_low_attributes): Add DW_AT_entry_pc and
12017         DW_AT_GNU_entry_view attributes if a pending entry is found
12018         in inline_entry_data_table.  Add old entry_pc attribute only
12019         if debug nonbinding markers are disabled.
12020         (gen_inlined_subroutine_die): Set BLOCK_DIE if nonbinding
12021         markers are enabled.
12022         (block_within_block_p, dwarf2out_inline_entry): New.
12023         (dwarf2out_finish): Check that no entries remained in
12024         inline_entry_data_table.
12025         * final.c (reemit_insn_block_notes): Handle inline entry notes.
12026         (final_scan_insn, notice_source_line): Likewise.
12027         (rest_of_clean_state): Skip inline entry markers.
12028         * gimple-pretty-print.c (dump_gimple_debug): Handle inline entry
12029         markers.
12030         * gimple.c (gimple_build_debug_inline_entry): New.
12031         * gimple.h (enum gimple_debug_subcode): Add
12032         GIMPLE_DEBUG_INLINE_ENTRY.
12033         (gimple_build_debug_inline_entry): Declare.
12034         (gimple_debug_inline_entry_p): New.
12035         (gimple_debug_nonbind_marker_p): Adjust.
12036         * insn-notes.def (INLINE_ENTRY): New.
12037         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
12038         inline entry marker notes.
12039         (print_insn): Likewise.
12040         * rtl.h (NOTE_MARKER_P): Add INLINE_ENTRY support.
12041         (INSN_DEBUG_MARKER_KIND): Likewise.
12042         (GEN_RTX_DEBUG_MARKER_INLINE_ENTRY_PAT): New.
12043         * tree-inline.c (expand_call_inline): Build and insert
12044         debug_inline_entry stmt.
12045         * tree-ssa-live.c (remove_unused_scope_block_p): Preserve
12046         inline entry blocks early, if nonbind markers are enabled.
12047         (dump_scope_block): Dump fragment info.
12048         * var-tracking.c (reemit_marker_as_note): Handle inline entry note.
12049         * doc/gimple.texi (gimple_debug_inline_entry_p): New.
12050         (gimple_build_debug_inline_entry): New.
12051         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers):
12052         Enable/disable inline entry points too.
12053         * doc/rtl.texi (NOTE_INSN_INLINE_ENTRY): New.
12054         (DEBUG_INSN): Describe inline entry markers.
12056         * common.opt (gvariable-location-views): New.
12057         (gvariable-location-views=incompat5): New.
12058         * config.in: Rebuilt.
12059         * configure: Rebuilt.
12060         * configure.ac: Test assembler for view support.
12061         * dwarf2asm.c (dw2_asm_output_symname_uleb128): New.
12062         * dwarf2asm.h (dw2_asm_output_symname_uleb128): Declare.
12063         * dwarf2out.c (var_loc_view): New typedef.
12064         (struct dw_loc_list_struct): Add vl_symbol, vbegin, vend.
12065         (dwarf2out_locviews_in_attribute): New.
12066         (dwarf2out_locviews_in_loclist): New.
12067         (dw_val_equal_p): Compare val_view_list of dw_val_class_view_lists.
12068         (enum dw_line_info_opcode): Add LI_adv_address.
12069         (struct dw_line_info_table): Add view.
12070         (RESET_NEXT_VIEW, RESETTING_VIEW_P): New macros.
12071         (DWARF2_ASM_VIEW_DEBUG_INFO): Define default.
12072         (zero_view_p): New variable.
12073         (ZERO_VIEW_P): New macro.
12074         (output_asm_line_debug_info): New.
12075         (struct var_loc_node): Add view.
12076         (add_AT_view_list, AT_loc_list): New.
12077         (add_var_loc_to_decl): Add view param.  Test it against last.
12078         (new_loc_list): Add view params.  Record them.
12079         (AT_loc_list_ptr): Handle loc and view lists.
12080         (view_list_to_loc_list_val_node): New.
12081         (print_dw_val): Handle dw_val_class_view_list.
12082         (size_of_die): Likewise.
12083         (value_format): Likewise.
12084         (loc_list_has_views): New.
12085         (gen_llsym): Set vl_symbol too.
12086         (maybe_gen_llsym, skip_loc_list_entry): New.
12087         (dwarf2out_maybe_output_loclist_view_pair): New.
12088         (output_loc_list): Output view list or entries too.
12089         (output_view_list_offset): New.
12090         (output_die): Handle dw_val_class_view_list.
12091         (output_dwarf_version): New.
12092         (output_compilation_unit_header): Use it.
12093         (output_skeleton_debug_sections): Likewise.
12094         (output_rnglists, output_line_info): Likewise.
12095         (output_pubnames, output_aranges): Update version comments.
12096         (output_one_line_info_table): Output view numbers in asm comments.
12097         (dw_loc_list): Determine current endview, pass it to new_loc_list.
12098         Call maybe_gen_llsym.
12099         (loc_list_from_tree_1): Adjust.
12100         (add_AT_location_description): Create view list attribute if
12101         needed, check it's absent otherwise.
12102         (convert_cfa_to_fb_loc_list): Adjust.
12103         (maybe_emit_file): Call output_asm_line_debug_info for test.
12104         (dwarf2out_var_location): Reset views as needed.  Precompute
12105         add_var_loc_to_decl args.  Call get_attr_min_length only if we have the
12106         attribute.  Set view.
12107         (new_line_info_table): Reset next view.
12108         (set_cur_line_info_table): Call output_asm_line_debug_info for test.
12109         (dwarf2out_source_line): Likewise.  Output view resets and labels to
12110         the assembler, or select appropriate line info opcodes.
12111         (prune_unused_types_walk_attribs): Handle dw_val_class_view_list.
12112         (optimize_string_length): Catch it.  Adjust.
12113         (resolve_addr): Copy vl_symbol along with ll_symbol.  Handle
12114         dw_val_class_view_list, and remove it if no longer needed.
12115         (hash_loc_list): Hash view numbers.
12116         (loc_list_hasher::equal): Compare them.
12117         (optimize_location_lists): Check whether a view list symbol is
12118         needed, and whether the locview attribute is present, and
12119         whether they match.  Remove the locview attribute if no longer
12120         needed.
12121         (index_location_lists): Call skip_loc_list_entry for test.
12122         (dwarf2out_finish): Call output_asm_line_debug_info for test.
12123         Use output_dwarf_version.
12124         * dwarf2out.h (enum dw_val_class): Add dw_val_class_view_list.
12125         (struct dw_val_node): Add val_view_list.
12126         * final.c (SEEN_NEXT_VIEW): New.
12127         (set_next_view_needed): New.
12128         (clear_next_view_needed): New.
12129         (maybe_output_next_view): New.
12130         (final_start_function): Rename to...
12131         (final_start_function_1): ... this.  Take pointer to FIRST,
12132         add SEEN parameter.  Emit param bindings in the initial view.
12133         (final_start_function): Reintroduce SEEN-less interface.
12134         (final): Rename to...
12135         (final_1): ... this.  Take SEEN parameter.  Output final pending
12136         next view at the end.
12137         (final): Reintroduce seen-less interface.
12138         (final_scan_insn): Output pending next view before switching
12139         sections or ending a block.  Mark the next view as needed when
12140         outputting variable locations.  Notify debug backend of section
12141         changes, and of location view changes.
12142         (rest_of_handle_final): Adjust.
12143         * toplev.c (process_options): Autodetect value for debug variable
12144         location views option.  Warn on incompat5 without -gdwarf-5.
12145         * doc/invoke.texi (gvariable-location-views): New.
12146         (gvariable-location-views=incompat5): New.
12147         (gno-variable-location-views): New.
12149 2018-02-08  David Malcolm  <dmalcolm@redhat.com>
12151         PR tree-optimization/84136
12152         * tree-cfg.c (find_taken_edge_computed_goto): Remove assertion
12153         that the result of find_edge is non-NULL.
12155 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
12157         PR target/83008
12158         * config/i386/x86-tune-costs.h (skylake_cost): Fix cost of
12159         storing integer register in SImode.  Fix cost of 256 and 512
12160         byte aligned SSE register store.
12162 2018-02-08  Sergey Shalnov  <sergey.shalnov@intel.com>
12164         * config/i386/i386.c (ix86_multiplication_cost): Fix
12165         multiplication cost for TARGET_AVX512DQ.
12167 2018-02-08  Marek Polacek  <polacek@redhat.com>
12169         PR tree-optimization/84238
12170         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
12171         get_range_strlen.
12173 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
12175         PR tree-optimization/84265
12176         * tree-vect-stmts.c (vectorizable_store): Don't treat
12177         VMAT_CONTIGUOUS accesses as grouped.
12178         (vectorizable_load): Likewise.
12180 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
12182         PR tree-optimization/81635
12183         * wide-int.h (wi::round_down_for_mask, wi::round_up_for_mask): Declare.
12184         * wide-int.cc (wi::round_down_for_mask, wi::round_up_for_mask)
12185         (test_round_for_mask): New functions.
12186         (wide_int_cc_tests): Call test_round_for_mask.
12187         * tree-vrp.h (intersect_range_with_nonzero_bits): Declare.
12188         * tree-vrp.c (intersect_range_with_nonzero_bits): New function.
12189         * tree-data-ref.c (split_constant_offset_1): Use it to refine the
12190         range returned by get_range_info.
12192 2018-02-08  Jan Hubicka  <hubicka@ucw.cz>
12194         PR ipa/81360
12195         * cgraph.h (symtab_node::output_to_lto_symbol_table_p): Declare
12196         * symtab.c: Include builtins.h
12197         (symtab_node::output_to_lto_symbol_table_p): Move here
12198         from lto-streamer-out.c:output_symbol_p.
12199         * lto-streamer-out.c (write_symbol): Turn early exit to assert.
12200         (output_symbol_p): Move all logic to symtab.c
12201         (produce_symtab): Update.
12203 2018-02-08  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12205         * config/s390/s390-opts.h (enum indirect_branch): Define.
12206         * config/s390/s390-protos.h (s390_return_addr_from_memory)
12207         (s390_indirect_branch_via_thunk)
12208         (s390_indirect_branch_via_inline_thunk): Add function prototypes.
12209         (enum s390_indirect_branch_type): Define.
12210         * config/s390/s390.c (struct s390_frame_layout, struct
12211         machine_function): Remove.
12212         (indirect_branch_prez10thunk_mask, indirect_branch_z10thunk_mask)
12213         (indirect_branch_table_label_no, indirect_branch_table_name):
12214         Define variables.
12215         (INDIRECT_BRANCH_NUM_OPTIONS): Define macro.
12216         (enum s390_indirect_branch_option): Define.
12217         (s390_return_addr_from_memory): New function.
12218         (s390_handle_string_attribute): New function.
12219         (s390_attribute_table): Add new attribute handler.
12220         (s390_execute_label): Handle UNSPEC_EXECUTE_JUMP patterns.
12221         (s390_indirect_branch_via_thunk): New function.
12222         (s390_indirect_branch_via_inline_thunk): New function.
12223         (s390_function_ok_for_sibcall): When jumping via thunk disallow
12224         sibling call optimization for non z10 compiles.
12225         (s390_emit_call): Force indirect branch target to be a single
12226         register.  Add r1 clobber for non-z10 compiles.
12227         (s390_emit_epilogue): Emit return jump via return_use expander.
12228         (s390_reorg): Handle JUMP_INSNs as execute targets.
12229         (s390_option_override_internal): Perform validity checks for the
12230         new command line options.
12231         (s390_indirect_branch_attrvalue): New function.
12232         (s390_indirect_branch_settings): New function.
12233         (s390_set_current_function): Invoke s390_indirect_branch_settings.
12234         (s390_output_indirect_thunk_function):  New function.
12235         (s390_code_end): Implement target hook.
12236         (s390_case_values_threshold): Implement target hook.
12237         (TARGET_ASM_CODE_END, TARGET_CASE_VALUES_THRESHOLD): Define target
12238         macros.
12239         * config/s390/s390.h (struct s390_frame_layout)
12240         (struct machine_function): Move here from s390.c.
12241         (TARGET_INDIRECT_BRANCH_NOBP_RET)
12242         (TARGET_INDIRECT_BRANCH_NOBP_JUMP)
12243         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_THUNK)
12244         (TARGET_INDIRECT_BRANCH_NOBP_JUMP_INLINE_THUNK)
12245         (TARGET_INDIRECT_BRANCH_NOBP_CALL)
12246         (TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
12247         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EXRL)
12248         (TARGET_INDIRECT_BRANCH_THUNK_NAME_EX)
12249         (TARGET_INDIRECT_BRANCH_TABLE): Define macros.
12250         * config/s390/s390.md (UNSPEC_EXECUTE_JUMP)
12251         (INDIRECT_BRANCH_THUNK_REGNUM): Define constants.
12252         (mnemonic attribute): Add values which aren't recognized
12253         automatically.
12254         ("*cjump_long", "*icjump_long", "*basr", "*basr_r"): Disable
12255         pattern for branch conversion.  Fix mnemonic attribute.
12256         ("*c<code>", "*sibcall_br", "*sibcall_value_br", "*return"): Emit
12257         indirect branch via thunk if requested.
12258         ("indirect_jump", "<code>"): Expand patterns for branch conversion.
12259         ("*indirect_jump"): Disable for branch conversion using out of
12260         line thunks.
12261         ("indirect_jump_via_thunk<mode>_z10")
12262         ("indirect_jump_via_thunk<mode>")
12263         ("indirect_jump_via_inlinethunk<mode>_z10")
12264         ("indirect_jump_via_inlinethunk<mode>", "*casesi_jump")
12265         ("casesi_jump_via_thunk<mode>_z10", "casesi_jump_via_thunk<mode>")
12266         ("casesi_jump_via_inlinethunk<mode>_z10")
12267         ("casesi_jump_via_inlinethunk<mode>", "*basr_via_thunk<mode>_z10")
12268         ("*basr_via_thunk<mode>", "*basr_r_via_thunk_z10")
12269         ("*basr_r_via_thunk", "return<mode>_prez10"): New pattern.
12270         ("*indirect2_jump"): Disable for branch conversion.
12271         ("casesi_jump"): Turn into expander and expand patterns for branch
12272         conversion.
12273         ("return_use"): New expander.
12274         ("*return"): Emit return via thunk and rename it to ...
12275         ("*return<mode>"): ... this one.
12276         * config/s390/s390.opt: Add new options and and enum for the
12277         option values.
12279 2018-02-08  Richard Sandiford  <richard.sandiford@linaro.org>
12281         * lra-constraints.c (match_reload): Unconditionally use
12282         gen_lowpart_SUBREG, rather than selecting between that
12283         and equivalent gen_rtx_SUBREG code.
12285 2018-02-08  Richard Biener  <rguenther@suse.de>
12287         PR tree-optimization/84233
12288         * tree-ssa-phiprop.c (propagate_with_phi): Use separate
12289         changed flag instead of boguously re-using phi_inserted.
12291 2018-02-08  Martin Jambor  <mjambor@suse.cz>
12293         * hsa-gen.c (get_symbol_for_decl): Set program allocation for
12294         static local variables.
12296 2018-02-08  Richard Biener  <rguenther@suse.de>
12298         PR tree-optimization/84278
12299         * tree-vect-stmts.c (vectorizable_store): When looking for
12300         smaller vector types to perform grouped strided loads/stores
12301         make sure the mode is supported by the target.
12302         (vectorizable_load): Likewise.
12304 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
12306         * config/aarch64/aarch64.c (aarch64_components_for_bb):
12307         Increase LDP/STP opportunities by adding adjacent callee-saves.
12309 2018-02-08  Wilco Dijkstra  <wdijkstr@arm.com>
12311         PR rtl-optimization/84068
12312         PR rtl-optimization/83459
12313         * haifa-sched.c (rank_for_schedule): Fix SCHED_PRESSURE_MODEL sorting.
12315 2018-02-08  Aldy Hernandez  <aldyh@redhat.com>
12317         PR tree-optimization/84224
12318         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Remove assert.
12319         * calls.c (gimple_alloca_call_p): Only return TRUE when we have
12320         non-zero arguments.
12322 2018-02-07  Iain Sandoe  <iain@codesourcery.com>
12324         PR target/84113
12325         * config/rs6000/altivec.md (*restore_world): Remove LR use.
12326         * config/rs6000/predicates.md (restore_world_operation): Adjust op
12327         count, remove one USE.
12329 2018-02-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
12331         * doc/install.texi (Configuration): Document the
12332         --with-long-double-format={ibm,ieee} PowerPC configuration
12333         options.
12335         PR target/84154
12336         * config/rs6000/rs6000.md (fix_trunc<SFDF:mode><QHI:mode>2):
12337         Convert from define_expand to be define_insn_and_split.  Rework
12338         float/double/_Float128 conversions to QI/HI/SImode to work with
12339         both ISA 2.07 (power8) or ISA 3.0 (power9).  Fix regression where
12340         conversions to QI/HImode types did a store and then a load to
12341         truncate the value.  For conversions to VSX registers, don't split
12342         the insn, instead emit the code directly.  Use the code iterator
12343         any_fix to combine signed and unsigned conversions.
12344         (fix<uns>_trunc<SFDF:mode>si2_p8): Likewise.
12345         (fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
12346         (fix_trunc<IEEE128:mode><QHI:mode>2): Likewise.
12347         (fix<uns>_trunc<SFDF:mode><QHI:mode>2): Likewise.
12348         (fix_<mode>di2_hw): Likewise.
12349         (fixuns_<mode>di2_hw): Likewise.
12350         (fix_<mode>si2_hw): Likewise.
12351         (fixuns_<mode>si2_hw): Likewise.
12352         (fix<uns>_<IEEE128:mode><SDI:mode>2_hw): Likewise.
12353         (fix<uns>_trunc<IEEE128:mode><QHI:mode>2): Likewise.
12354         (fctiw<u>z_<mode>_smallint): Rename fctiw<u>z_<mode>_smallint to
12355         fix<uns>_trunc<SFDF:mode>si2_p8.
12356         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Delete, no longer used.
12357         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
12358         (fix<uns>_<mode>_mem): Likewise.
12359         (fctiw<u>z_<mode>_mem): Likewise.
12360         (fix<uns>_<mode>_mem): Likewise.
12361         (fix<uns>_trunc<SFDF:mode><QHSI:mode>2_mem): On ISA 3.0, prevent
12362         the register allocator from doing a direct move to the GPRs to do
12363         a store, and instead use the ISA 3.0 store byte/half-word from
12364         vector register instruction.  For IEEE 128-bit floating point,
12365         also optimize stores of 32-bit ints.
12366         (fix<uns>_trunc<IEEE128:mode><QHSI:mode>2_mem): Likewise.
12368 2018-02-07  Alan Hayward  <alan.hayward@arm.com>
12370         * genextract.c (push_pathstr_operand): New function to support
12371         [a-zA-Z].
12372         (walk_rtx): Call push_pathstr_operand.
12373         (print_path): Support [a-zA-Z].
12375 2018-02-07  Richard Biener  <rguenther@suse.de>
12377         PR tree-optimization/84037
12378         * tree-vectorizer.h (struct _loop_vec_info): Add ivexpr_map member.
12379         (cse_and_gimplify_to_preheader): Declare.
12380         (vect_get_place_in_interleaving_chain): Likewise.
12381         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
12382         ivexpr_map.
12383         (_loop_vec_info::~_loop_vec_info): Delete it.
12384         (cse_and_gimplify_to_preheader): New function.
12385         * tree-vect-slp.c (vect_get_place_in_interleaving_chain): Export.
12386         * tree-vect-stmts.c (vectorizable_store): CSE base and steps.
12387         (vectorizable_load): Likewise.  For grouped stores always base
12388         the IV on the first element.
12389         * tree-vect-loop-manip.c (vect_loop_versioning): Unshare versioning
12390         condition before gimplifying.
12392 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
12394         * tree-eh.c (operation_could_trap_helper_p): Ignore honor_trapv for
12395         *DIV_EXPR and *MOD_EXPR.
12397 2018-02-07  H.J. Lu  <hongjiu.lu@intel.com>
12399         PR target/84248
12400         * config/i386/i386.c (ix86_option_override_internal): Mask out
12401         the CF_SET bit when checking -fcf-protection.
12403 2018-02-07  Tom de Vries  <tom@codesourcery.com>
12405         PR libgomp/84217
12406         * omp-expand.c (expand_oacc_collapse_init): Ensure diff_type is large
12407         enough.
12409 2018-02-07  Richard Biener  <rguenther@suse.de>
12411         PR tree-optimization/84204
12412         * tree-chrec.c (chrec_fold_plus_1): Remove size limiting in
12413         this place.
12415         PR tree-optimization/84205
12416         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Also
12417         special-case isl_ast_op_zdiv_r.
12419         PR tree-optimization/84223
12420         * graphite-scop-detection.c (gather_bbs::before_dom_children):
12421         Only add conditions from within the region.
12422         (gather_bbs::after_dom_children): Adjust.
12424 2018-02-07  Georg-Johann Lay  <avr@gjlay.de>
12426         PR target/84209
12427         * config/avr/avr.h (GENERAL_REGNO_P, GENERAL_REG_P): New macros.
12428         * config/avr/avr.md: Only post-reload split REG-REG moves if
12429         either register is GENERAL_REG_P.
12431 2018-02-07  Jakub Jelinek  <jakub@redhat.com>
12433         PR tree-optimization/84235
12434         * tree-ssa-scopedtables.c
12435         (avail_exprs_stack::simplify_binary_operation): Fir MINUS_EXPR, punt
12436         if the subtraction is performed in floating point type where NaNs are
12437         honored.  For *DIV_EXPR, punt for ALL_FRACT_MODE_Ps where we can't
12438         build 1.  Formatting fix.
12440 2018-02-06  Jakub Jelinek  <jakub@redhat.com>
12442         PR target/84146
12443         * config/i386/i386.c (rest_of_insert_endbranch): Only skip
12444         NOTE_INSN_CALL_ARG_LOCATION after a call, not anything else,
12445         and skip it regardless of bb boundaries.  Use CALL_P macro,
12446         don't test INSN_P (insn) together with CALL_P or JUMP_P check
12447         unnecessarily, formatting fix.
12449 2018-02-06  Michael Collison  <michael.collison@arm.com>
12451         * config/arm/thumb2.md:
12452         (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
12453         (*thumb_mov_notscc): Ditto.
12455 2018-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
12457         PR target/84154
12458         * config/rs6000/rs6000.md (su code attribute): Use "u" for
12459         unsigned_fix, not "s".
12461 2018-02-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
12463         * configure.ac (gcc_fn_eh_frame_ro): New function.
12464         (gcc_cv_as_cfi_directive): Check both 32 and 64-bit assembler for
12465         correct .eh_frame permissions.
12466         * configure: Regenerate.
12468 2018-02-06  Andrew Jenner  <andrew@codeourcery.com>
12470         * doc/invoke.texi: Add section for the PowerPC SPE backend. Remove
12471         irrelevant options.
12473 2018-02-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12475         * config/rs6000/rs6000.c (rs6000_option_override_internal):
12476         Display warning message for -mno-speculate-indirect-jumps.
12478 2018-02-06  Andrew Jenner  <andrew@codesourcery.com>
12480         * config/powerpcspe/powerpcspe.opt: (msimple-fpu, mfpu) Add
12481         Undocumented.
12482         * config/powerpcspe/sysv4.opt (mbit-align): Likewise.
12484 2018-02-06  Aldy Hernandez  <aldyh@redhat.com>
12486         PR tree-optimization/84225
12487         * tree-eh.c (find_trapping_overflow): Only call
12488         operation_no_trapping_overflow when ANY_INTEGRAL_TYPE_P.
12490 2018-02-06  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
12492         PR target/84145
12493         * config/i386/i386.c: Reimplement the check of possible options
12494         -mibt/-mshstk conbination. Change error messages.
12495         * doc/invoke.texi: Fix a typo: remove extra '='.
12497 2018-02-06  Marek Polacek  <polacek@redhat.com>
12499         PR tree-optimization/84228
12500         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Skip debug statements.
12502 2018-02-06  Tamar Christina  <tamar.christina@arm.com>
12504         PR target/82641
12505         * config/arm/arm.c (arm_print_asm_arch_directives): Record already
12506         emitted arch directives.
12507         * config/arm/arm-c.c (arm_cpu_builtins): Undefine __ARM_ARCH and
12508         __ARM_FEATURE_COPROC before changing architectures.
12510 2018-02-06  Richard Biener  <rguenther@suse.de>
12512         * config/i386/i386.c (print_reg): Fix typo.
12513         (ix86_loop_unroll_adjust): Do not unroll beyond the original nunroll.
12515 2018-02-06  Eric Botcazou  <ebotcazou@adacore.com>
12517         * configure: Regenerate.
12519 2018-02-05  Martin Sebor  <msebor@redhat.com>
12521         PR tree-optimization/83369
12522         * tree-ssa-ccp.c (pass_post_ipa_warn::execute): Use %G to print
12523         inlining context.
12525 2018-02-05  Martin Liska  <mliska@suse.cz>
12527         * doc/invoke.texi: Cherry-pick upstream r323995.
12529 2018-02-05  Richard Sandiford  <richard.sandiford@linaro.org>
12531         * ira.c (ira_init_register_move_cost): Adjust comment.
12533 2018-02-05  Martin Liska  <mliska@suse.cz>
12535         PR gcov-profile/84137
12536         * doc/gcov.texi: Fix typo in documentation.
12538 2018-02-05  Martin Liska  <mliska@suse.cz>
12540         PR gcov-profile/83879
12541         * doc/gcov.texi: Document necessity of --dynamic-list-data when
12542         using dlopen functionality.
12544 2018-02-05  Olga Makhotina  <olga.makhotina@intel.com>
12546         * config/i386/avx512dqintrin.h (_mm_mask_range_sd, _mm_maskz_range_sd,
12547         _mm_mask_range_round_sd, _mm_maskz_range_round_sd, _mm_mask_range_ss,
12548         _mm_maskz_range_ss, _mm_mask_range_round_ss,
12549         _mm_maskz_range_round_ss): New intrinsics.
12550         (__builtin_ia32_rangesd128_round)
12551         (__builtin_ia32_rangess128_round): Remove.
12552         (__builtin_ia32_rangesd128_mask_round,
12553         __builtin_ia32_rangess128_mask_round): New builtins.
12554         * config/i386/i386-builtin.def (__builtin_ia32_rangesd128_round,
12555         __builtin_ia32_rangess128_round): Remove.
12556         (__builtin_ia32_rangesd128_mask_round,
12557         __builtin_ia32_rangess128_mask_round): New builtins.
12558         * config/i386/sse.md (ranges<mode><round_saeonly_name>): Renamed to ...
12559         (ranges<mode><mask_scalar_name><round_saeonly_scalar_name>): ... this.
12560         ((match_operand:VF_128 2 "<round_saeonly_nimm_predicate>"
12561         "<round_saeonly_constraint>")): Changed to ...
12562         ((match_operand:VF_128 2 "<round_saeonly_scalar_nimm_predicate>"
12563         "<round_saeonly_scalar_constraint>")): ... this.
12564         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
12565         %0, %1, %2<round_saeonly_op4>, %3}"): Changed to ...
12566         ("vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2,
12567         %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1,
12568         %2<round_saeonly_scalar_mask_op4>, %3}"): ... this.
12570 2018-02-02  Andrew Jenner  <andrew@codesourcery.com>
12572         * config/powerpcspe/powerpcspe.opt: Add Undocumented to irrelevant
12573         options.
12574         * config/powerpcspe/powerpcspe-tables.opt (rs6000_cpu_opt_value):
12575         Remove all values except native, 8540 and 8548.
12577 2018-02-02  H.J. Lu  <hongjiu.lu@intel.com>
12579         * config/i386/i386.c (ix86_output_function_return): Pass
12580         INVALID_REGNUM, instead of -1, as invalid register number to
12581         indirect_thunk_name and output_indirect_thunk.
12583 2018-02-02  Julia Koval  <julia.koval@intel.com>
12585         * config.gcc: Add -march=icelake.
12586         * config/i386/driver-i386.c (host_detect_local_cpu): Detect icelake.
12587         * config/i386/i386-c.c (ix86_target_macros_internal): Handle icelake.
12588         * config/i386/i386.c (processor_costs): Add m_ICELAKE.
12589         (PTA_ICELAKE, PTA_AVX512VNNI, PTA_GFNI, PTA_VAES, PTA_AVX512VBMI2,
12590         PTA_VPCLMULQDQ, PTA_RDPID, PTA_AVX512BITALG): New.
12591         (processor_target_table): Add icelake.
12592         (ix86_option_override_internal): Handle new PTAs.
12593         (get_builtin_code_for_version): Handle icelake.
12594         (M_INTEL_COREI7_ICELAKE): New.
12595         (fold_builtin_cpu): Handle icelake.
12596         * config/i386/i386.h (TARGET_ICELAKE, PROCESSOR_ICELAKE): New.
12597         * doc/invoke.texi: Add -march=icelake.
12599 2018-02-02  Julia Koval  <julia.koval@intel.com>
12601         * config/i386/i386.c (ix86_option_override_internal): Change flags type
12602         to wide_int_bitmask.
12603         * wide-int-bitmask.h: New.
12605 2018-02-02  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
12607         PR target/84066
12608         * config/i386/i386.md: Replace Pmode with word_mode in
12609         builtin_setjmp_setup and builtin_longjmp to support x32.
12611 2018-02-01  Peter Bergner  <bergner@vnet.ibm.com>
12613         PR target/56010
12614         PR target/83743
12615         * config/rs6000/driver-rs6000.c: #include "diagnostic.h".
12616         #include "opts.h".
12617         (rs6000_supported_cpu_names): New static variable.
12618         (linux_cpu_translation_table): Likewise.
12619         (elf_platform) <cpu>: Define new static variable and use it.
12620         Translate kernel AT_PLATFORM name to canonical name if needed.
12621         Error if platform name is unknown.
12623 2018-02-01  Aldy Hernandez  <aldyh@redhat.com>
12625         PR target/84089
12626         * config/pa/predicates.md (base14_operand): Handle E_VOIDmode.
12628 2018-02-01  Jeff Law  <law@redhat.com>
12630         PR target/84128
12631         * config/i386/i386.c (release_scratch_register_on_entry): Add new
12632         OFFSET and RELEASE_VIA_POP arguments.  Use SP+OFFSET to restore
12633         the scratch if RELEASE_VIA_POP is false.
12634         (ix86_adjust_stack_and_probe_stack_clash): Un-constify SIZE.
12635         If we have to save a temporary register, decrement SIZE appropriately.
12636         Pass new arguments to release_scratch_register_on_entry.
12637         (ix86_adjust_stack_and_probe): Likewise.
12638         (ix86_emit_probe_stack_range): Pass new arguments to
12639         release_scratch_register_on_entry.
12641 2018-02-01  Uros Bizjak  <ubizjak@gmail.com>
12643         PR rtl-optimization/84157
12644         * combine.c (change_zero_ext): Use REG_P predicate in
12645         front of HARD_REGISTER_P predicate.
12647 2018-02-01  Georg-Johann Lay  <avr@gjlay.de>
12649         * config/avr/avr.c (avr_option_override): Move disabling of
12650         -fdelete-null-pointer-checks to...
12651         * common/config/avr/avr-common.c (avr_option_optimization_table):
12652         ...here.
12654 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
12656         PR tree-optimization/81635
12657         * tree-data-ref.c (split_constant_offset_1): For types that
12658         wrap on overflow, try to use range info to prove that wrapping
12659         cannot occur.
12661 2018-02-01  Renlin Li  <renlin.li@arm.com>
12663         PR target/83370
12664         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
12665         TAILCALL_ADDR_REGS.
12666         (aarch64_register_move_cost): Likewise.
12667         * config/aarch64/aarch64.h (reg_class): Rename CALLER_SAVE_REGS to
12668         TAILCALL_ADDR_REGS.
12669         (REG_CLASS_NAMES): Likewise.
12670         (REG_CLASS_CONTENTS): Rename CALLER_SAVE_REGS to
12671         TAILCALL_ADDR_REGS. Remove IP registers.
12672         * config/aarch64/aarch64.md (Ucs): Update register constraint.
12674 2018-02-01  Richard Biener  <rguenther@suse.de>
12676         * domwalk.h (dom_walker::dom_walker): Add additional constructor
12677         for specifying RPO order and allow NULL for that.
12678         * domwalk.c (dom_walker::dom_walker): Likewise.
12679         (dom_walker::walk): Handle NULL RPO order.
12680         * tree-into-ssa.c (rewrite_dom_walker): Do not walk dom children
12681         in RPO order.
12682         (rewrite_update_dom_walker): Likewise.
12683         (mark_def_dom_walker): Likewise.
12685 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
12687         * config/aarch64/aarch64-protos.h (aarch64_split_sve_subreg_move)
12688         (aarch64_maybe_expand_sve_subreg_move): Declare.
12689         * config/aarch64/aarch64.md (UNSPEC_REV_SUBREG): New unspec.
12690         * config/aarch64/predicates.md (aarch64_any_register_operand): New
12691         predicate.
12692         * config/aarch64/aarch64-sve.md (mov<mode>): Optimize subreg moves
12693         that are semantically a reverse operation.
12694         (*aarch64_sve_mov<mode>_subreg_be): New pattern.
12695         * config/aarch64/aarch64.c (aarch64_maybe_expand_sve_subreg_move):
12696         (aarch64_replace_reg_mode, aarch64_split_sve_subreg_move): New
12697         functions.
12698         (aarch64_can_change_mode_class): For big-endian, forbid changes
12699         between two SVE modes if they have different element sizes.
12701 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
12703         * config/aarch64/aarch64.c (aarch64_expand_sve_const_vector): Prefer
12704         the TImode handling for big-endian targets.
12706 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
12708         * config/aarch64/aarch64-sve.md (sve_ld1rq): Replace with...
12709         (*sve_ld1rq<Vesize>): ... this new pattern.  Handle all element sizes,
12710         not just bytes.
12711         * config/aarch64/aarch64.c (aarch64_expand_sve_widened_duplicate):
12712         Remove BSWAP handing for big-endian targets and use the form of
12713         LD1RQ appropariate for the mode.
12715 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
12717         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Handle
12718         all CONST_VECTOR_DUPLICATE_P vectors, not just those with a single
12719         duplicated element.
12721 2018-02-01  Richard Sandiford  <richard.sandiford@linaro.org>
12723         PR tearget/83845
12724         * config/aarch64/aarch64.c (aarch64_secondary_reload): Tighten
12725         check for operands that need to go through aarch64_sve_reload_be.
12727 2018-02-01  Jakub Jelinek  <jakub@redhat.com>
12729         PR tree-optimization/81661
12730         PR tree-optimization/84117
12731         * tree-eh.h (rewrite_to_non_trapping_overflow): Declare.
12732         * tree-eh.c: Include gimplify.h.
12733         (find_trapping_overflow, replace_trapping_overflow,
12734         rewrite_to_non_trapping_overflow): New functions.
12735         * tree-vect-loop.c: Include tree-eh.h.
12736         (vect_get_loop_niters): Use rewrite_to_non_trapping_overflow.
12737         * tree-data-ref.c: Include tree-eh.h.
12738         (get_segment_min_max): Use rewrite_to_non_trapping_overflow.
12740 2018-01-31  Uros Bizjak  <ubizjak@gmail.com>
12742         PR rtl-optimization/84123
12743         * combine.c (change_zero_ext): Check if hard register satisfies
12744         can_change_dest_mode before calling gen_lowpart_SUBREG.
12746 2018-01-31  Vladimir Makarov  <vmakarov@redhat.com>
12748         PR target/82444
12749         * ira.c (ira_init_register_move_cost): Remove assert.
12751 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
12753         PR rtl-optimization/84071
12754         * doc/tm.texi.in (WORD_REGISTER_OPERATIONS): Add explicit case.
12755         * doc/tm.texi: Regenerate.
12757 2018-01-31  Richard Biener  <rguenther@suse.de>
12759         PR tree-optimization/84132
12760         * tree-data-ref.c (analyze_miv_subscript): Properly
12761         check whether evolution_function_is_affine_multivariate_p
12762         before calling gcd_of_steps_may_divide_p.
12764 2018-01-31  Julia Koval  <julia.koval@intel.com>
12766         PR target/83618
12767         * config/i386/i386.c (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
12768         * config/i386/i386.md (rdpid_rex64) New.
12769         (rdpid): Make 32bit only.
12771 2018-01-29  Aldy Hernandez  <aldyh@redhat.com>
12773         PR lto/84105
12774         * tree-pretty-print.c (dump_generic_node): Handle a TYPE_NAME with
12775         an IDENTIFIER_NODE for FUNCTION_TYPE's.
12777 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
12779         Revert
12780         2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
12782         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
12784 2018-01-31  Eric Botcazou  <ebotcazou@adacore.com>
12786         PR rtl-optimization/84071
12787         * combine.c (record_dead_and_set_regs_1): Record the source unmodified
12788         for a paradoxical SUBREG on a WORD_REGISTER_OPERATIONS target.
12790 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
12792         * config/arc/arc.c (arc_handle_aux_attribute): New function.
12793         (arc_attribute_table): Add 'aux' attribute.
12794         (arc_in_small_data_p): Consider aux like variables.
12795         (arc_is_aux_reg_p): New function.
12796         (arc_asm_output_aligned_decl_local): Ignore 'aux' like variables.
12797         (arc_get_aux_arg): New function.
12798         (prepare_move_operands): Handle aux-register access.
12799         (arc_handle_aux_attribute): New function.
12800         * doc/extend.texi (ARC Variable attributes): Add subsection.
12802 2018-01-31  Claudiu Zissulescu  <claziss@synopsys.com>
12804         * config/arc/arc-protos.h (arc_is_uncached_mem_p): Function proto.
12805         * config/arc/arc.c (arc_handle_uncached_attribute): New function.
12806         (arc_attribute_table): Add 'uncached' attribute.
12807         (arc_print_operand): Print '.di' flag for uncached memory
12808         accesses.
12809         (arc_in_small_data_p): Do not consider for small data the uncached
12810         types.
12811         (arc_is_uncached_mem_p): New function.
12812         * config/arc/predicates.md (compact_store_memory_operand): Check
12813         for uncached memory accesses.
12814         (nonvol_nonimm_operand): Likewise.
12815         * gcc/doc/extend.texi (ARC Type Attribute): New subsection.
12817 2018-01-31  Jakub Jelinek  <jakub@redhat.com>
12819         PR c/84100
12820         * common.opt (falign-functions=, falign-jumps=, falign-labels=,
12821         falign-loops=): Add Optimization flag.
12823 2018-01-30  Jeff Law  <law@redhat.com>
12825         PR target/84064
12826         * i386.c (ix86_adjust_stack_and_probe_stack_clash): New argument
12827         INT_REGISTERS_SAVED.  Check it prior to calling
12828         get_scratch_register_on_entry.
12829         (ix86_adjust_stack_and_probe): Similarly.
12830         (ix86_emit_probe_stack_range): Similarly.
12831         (ix86_expand_prologue): Corresponding changes.
12833 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
12835         PR target/40411
12836         * config/sol2.h (STARTFILE_ARCH_SPEC): Use -std=c*,
12837         -std=iso9899:199409 instead of -pedantic to select values-Xc.o.
12839 2018-01-30  Vladimir Makarov  <vmakarov@redhat.com>
12841         PR target/84112
12842         * lra-constraints.c (curr_insn_transform): Process AND in the
12843         address.
12845 2018-01-30  Jakub Jelinek  <jakub@redhat.com>
12847         PR rtl-optimization/83986
12848         * sched-deps.c (sched_analyze_insn): For frame related insns, add anti
12849         dependence against last_pending_memory_flush in addition to
12850         pending_jump_insns.
12852 2018-01-30  Alexandre Oliva  <aoliva@redhat.com>
12854         PR tree-optimization/81611
12855         * tree-ssa-dom.c (simple_iv_increment_p): Skip intervening
12856         copies.
12858 2018-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
12860         PR target/83758
12861         * config/rs6000/rs6000.c (rs6000_internal_arg_pointer): Only return
12862         a reg rtx.
12864 2018-01-30  Richard Biener  <rguenther@suse.de>
12865             Jakub Jelinek  <jakub@redhat.com>
12867         PR tree-optimization/84111
12868         * tree-ssa-loop-ivcanon.c (tree_unroll_loops_completely_1): Skip
12869         inner loops added during recursion, as they don't have up-to-date
12870         SSA form.
12872 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
12874         PR ipa/81360
12875         * ipa-inline.c (can_inline_edge_p): Break out late tests to...
12876         (can_inline_edge_by_limits_p): ... here.
12877         (can_early_inline_edge_p, check_callers,
12878         update_caller_keys, update_callee_keys, recursive_inlining,
12879         add_new_edges_to_heap, speculation_useful_p,
12880         inline_small_functions,
12881         inline_small_functions, flatten_function,
12882         inline_to_all_callers_1): Update.
12884 2018-01-30  Jan Hubicka  <hubicka@ucw.cz>
12886         * profile-count.c (profile_count::combine_with_ipa_count): Handle
12887         zeros correctly.
12889 2018-01-30  Richard Biener  <rguenther@suse.de>
12891         PR tree-optimization/83008
12892         * tree-vect-slp.c (vect_analyze_slp_cost_1): Properly cost
12893         invariant and constant vector uses in stmts when they need
12894         more than one stmt.
12896 2018-01-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
12898         PR bootstrap/84017
12899         * configure.ac (gcc_cv_as_shf_merge): Disable on Solaris 10/x86.
12900         * configure: Regenerate.
12902 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
12904         * config/aarch64/aarch64-sve.md (*vec_extract<mode><Vel>_0): New
12905         pattern.
12906         (*vec_extract<mode><Vel>_v128): Require a nonzero lane number.
12907         Use gen_rtx_REG rather than gen_lowpart.
12909 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
12911         * lra-constraints.c (match_reload): Use subreg_lowpart_offset
12912         rather than 0 when creating partial subregs.
12914 2018-01-30  Richard Sandiford  <richard.sandiford@linaro.org>
12916         * vec-perm-indices.c (vec_perm_indices::series_p): Give examples
12917         of usage.
12919 2018-01-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
12921         PR target/81550
12922         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): If DFmode
12923         and SFmode can go in Altivec registers (-mcpu=power7 for DFmode,
12924         -mcpu=power8 for SFmode) don't set the PRE_INCDEC or PRE_MODIFY
12925         flags.  This restores the settings used before the 2017-07-24.
12926         Turning off pre increment/decrement/modify allows IVOPTS to
12927         optimize DF/SF loops where the index is an int.
12929 2018-01-29  Richard Biener  <rguenther@suse.de>
12930             Kelvin Nilsen  <kelvin@gcc.gnu.org>
12932         PR bootstrap/80867
12933         * tree-vect-stmts.c (vectorizable_call): Don't call
12934         targetm.vectorize_builtin_md_vectorized_function if callee is
12935         NULL.
12937 2018-01-22  Carl Love  <cel@us.ibm.com>
12939         * doc/extend.tex: Fix typo in second arg in
12940         __builtin_bcdadd_{lt|eq|gt|ov} and __builtin_bcdsub_{lt|eq|gt|ov}.
12942 2018-01-29  Richard Biener  <rguenther@suse.de>
12944         PR tree-optimization/84086
12945         * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
12946         (flush_ssaname_freelist): When SSA names were released reset
12947         the SCEV hash table.
12949 2018-01-29  Richard Biener  <rguenther@suse.de>
12951         PR tree-optimization/84057
12952         * tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
12953         removed paths when removing edges.
12955 2018-01-27  H.J. Lu  <hongjiu.lu@intel.com>
12957         * doc/invoke.texi: Replace -mfunction-return==@var{choice} with
12958         -mfunction-return=@var{choice}.
12960 2018-01-27  Bernd Edlinger  <bernd.edlinger@hotmail.de>
12962         PR diagnostic/84034
12963         * diagnostic-show-locus.c (get_line_width_without_trailing_whitespace):
12964         Handle CR like TAB.
12965         (layout::print_source_line): Likewise.
12966         (test_get_line_width_without_trailing_whitespace): Add test cases.
12968 2018-01-27  Jakub Jelinek  <jakub@redhat.com>
12970         PR middle-end/84040
12971         * sched-deps.c (sched_macro_fuse_insns): Return immediately for
12972         debug insns.
12974 2018-01-26  Jim Wilson  <jimw@sifive.com>
12976         * config/riscv/riscv.h (MAX_FIXED_MODE_SIZE): New.
12978         * config/riscv/elf.h (LIB_SPEC): Don't include -lgloss when nosys.specs
12979         specified.
12981 2018-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
12983         * config/aarch64/aarch64.md: Add peepholes for CMP + SUB -> SUBS
12984         and CMP + SUB-immediate -> SUBS.
12986 2018-01-26  Martin Sebor  <msebor@redhat.com>
12988         PR tree-optimization/83896
12989         * tree-ssa-strlen.c (get_string_len): Rename...
12990         (get_string_cst_length): ...to this.  Return HOST_WIDE_INT.
12991         Avoid assuming length is constant.
12992         (handle_char_store): Use HOST_WIDE_INT for string length.
12994 2018-01-26  Uros Bizjak  <ubizjak@gmail.com>
12996         PR target/81763
12997         * config/i386/i386.md (*andndi3_doubleword): Add earlyclobber
12998         to (=&r,r,rm) alternative. Add (=r,0,rm) and (=r,r,0) alternatives.
13000 2018-01-26  Richard Biener  <rguenther@suse.de>
13002         PR rtl-optimization/84003
13003         * dse.c (record_store): Only record redundant stores when
13004         the earlier store aliases at least all accesses the later one does.
13006 2018-01-26  Jakub Jelinek  <jakub@redhat.com>
13008         PR rtl-optimization/83985
13009         * dce.c (deletable_insn_p): Return false for separate shrink wrapping
13010         REG_CFA_RESTORE insns.
13011         (delete_unmarked_insns): Don't ignore separate shrink wrapping
13012         REG_CFA_RESTORE insns here.
13014         PR c/83989
13015         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Don't
13016         use SSA_NAME_VAR as base for SSA_NAMEs with non-NULL SSA_NAME_VAR.
13018 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13020         * config/arc/arc-arch.h (arc_tune_attr): Add ARC_TUNE_CORE_3.
13021         * config/arc/arc.c (arc_sched_issue_rate): Use ARC_TUNE_... .
13022         (arc_init): Likewise.
13023         (arc_override_options): Likewise.
13024         (arc_file_start): Choose Tag_ARC_CPU_variation based on arc_tune
13025         value.
13026         (hwloop_fail): Use TARGET_DBNZ when we want to check for dbnz insn
13027         support.
13028         * config/arc/arc.h (TARGET_DBNZ): Define.
13029         * config/arc/arc.md (attr tune): Add core_3, use ARC_TUNE_... to
13030         properly set the tune attribute.
13031         (dbnz): Use TARGET_DBNZ guard.
13032         * config/arc/arc.opt (mtune): Add core3 option.
13034 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13036         * config/arc/arc.c (arc_delegitimize_address_0): Refactored to
13037         recognize new pic like addresses.
13038         (arc_delegitimize_address): Clean up.
13040 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13042         * config/arc/arc-arches.def: Option mrf16 valid for all
13043         architectures.
13044         * config/arc/arc-c.def (__ARC_RF16__): New predefined macro.
13045         * config/arc/arc-cpus.def (em_mini): New cpu with rf16 on.
13046         * config/arc/arc-options.def (FL_RF16): Add mrf16 option.
13047         * config/arc/arc-tables.opt: Regenerate.
13048         * config/arc/arc.c (arc_conditional_register_usage): Handle
13049         reduced register file case.
13050         (arc_file_start): Set must have build attributes.
13051         * config/arc/arc.h (MAX_ARC_PARM_REGS): Conditional define using
13052         mrf16 option value.
13053         * config/arc/arc.opt (mrf16): Add new option.
13054         * config/arc/elf.h (ATTRIBUTE_PCS): Define.
13055         * config/arc/genmultilib.awk: Handle new mrf16 option.
13056         * config/arc/linux.h (ATTRIBUTE_PCS): Define.
13057         * config/arc/t-multilib: Regenerate.
13058         * doc/invoke.texi (ARC Options): Document mrf16 option.
13060 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13062         * config/arc/arc-protos.h: Add arc_is_secure_call_p proto.
13063         * config/arc/arc.c (arc_handle_secure_attribute): New function.
13064         (arc_attribute_table): Add 'secure_call' attribute.
13065         (arc_print_operand): Print secure call operand.
13066         (arc_function_ok_for_sibcall): Don't optimize tail calls when
13067         secure.
13068         (arc_is_secure_call_p): New function.  * config/arc/arc.md
13069         (call_i): Add support for sjli instruction.
13070         (call_value_i): Likewise.
13071         * config/arc/constraints.md (Csc): New constraint.
13073 2018-01-26  Claudiu Zissulescu  <claziss@synopsys.com>
13074             John Eric Martin  <John.Martin@emmicro-us.com>
13076         * config/arc/arc-protos.h: Add arc_is_jli_call_p proto.
13077         * config/arc/arc.c (_arc_jli_section): New struct.
13078         (arc_jli_section): New type.
13079         (rc_jli_sections): New static variable.
13080         (arc_handle_jli_attribute): New function.
13081         (arc_attribute_table): Add jli_always and jli_fixed attribute.
13082         (arc_file_end): New function.
13083         (TARGET_ASM_FILE_END): Define.
13084         (arc_print_operand): Reuse 'S' letter for JLI output instruction.
13085         (arc_add_jli_section): New function.
13086         (jli_call_scan): Likewise.
13087         (arc_reorg): Call jli_call_scan.
13088         (arc_output_addsi): Remove 'S' from printing asm operand.
13089         (arc_is_jli_call_p): New function.
13090         * config/arc/arc.md (movqi_insn): Remove 'S' from printing asm
13091         operand.
13092         (movhi_insn): Likewise.
13093         (movsi_insn): Likewise.
13094         (movsi_set_cc_insn): Likewise.
13095         (loadqi_update): Likewise.
13096         (load_zeroextendqisi_update): Likewise.
13097         (load_signextendqisi_update): Likewise.
13098         (loadhi_update): Likewise.
13099         (load_zeroextendhisi_update): Likewise.
13100         (load_signextendhisi_update): Likewise.
13101         (loadsi_update): Likewise.
13102         (loadsf_update): Likewise.
13103         (movsicc_insn): Likewise.
13104         (bset_insn): Likewise.
13105         (bxor_insn): Likewise.
13106         (bclr_insn): Likewise.
13107         (bmsk_insn): Likewise.
13108         (bicsi3_insn): Likewise.
13109         (cmpsi_cc_c_insn): Likewise.
13110         (movsi_ne): Likewise.
13111         (movsi_cond_exec): Likewise.
13112         (clrsbsi2): Likewise.
13113         (norm_f): Likewise.
13114         (normw): Likewise.
13115         (swap): Likewise.
13116         (divaw): Likewise.
13117         (flag): Likewise.
13118         (sr): Likewise.
13119         (kflag): Likewise.
13120         (ffs): Likewise.
13121         (ffs_f): Likewise.
13122         (fls): Likewise.
13123         (call_i): Remove 'S' asm letter, add jli instruction.
13124         (call_value_i): Likewise.
13125         * config/arc/arc.op (mjli-always): New option.
13126         * config/arc/constraints.md (Cji): New constraint.
13127         * config/arc/fpx.md (addsf3_fpx): Remove 'S' from printing asm
13128         operand.
13129         (subsf3_fpx): Likewise.
13130         (mulsf3_fpx): Likewise.
13131         * config/arc/simdext.md (vendrec_insn): Remove 'S' from printing
13132         asm operand.
13133         * doc/extend.texi (ARC): Document 'jli-always' and 'jli-fixed'
13134         function attrbutes.
13135         * doc/invoke.texi (ARC): Document mjli-always option.
13137 2018-01-26  Sebastian Perta  <sebastian.perta@renesas.com>
13139         * config/rl78/rl78.c (rl78_addsi3_internal): If operand 2 is const
13140         avoid addition with 0 and use incw and decw where possible.
13142 2018-01-26  Richard Biener  <rguenther@suse.de>
13144         PR tree-optimization/81082
13145         * fold-const.c (fold_plusminus_mult_expr): Do not perform the
13146         association if it requires casting to unsigned.
13147         * match.pd ((A * C) +- (B * C) -> (A+-B)): New patterns derived
13148         from fold_plusminus_mult_expr to catch important cases late when
13149         range info is available.
13151 2018-01-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
13153         * config/i386/sol2.h (USE_HIDDEN_LINKONCE): Remove.
13154         * configure.ac (hidden_linkonce): New test.
13155         * configure: Regenerate.
13156         * config.in: Regenerate.
13158 2018-01-26  Julia Koval  <julia.koval@intel.com>
13160         * config/i386/avx512bitalgintrin.h (_mm512_bitshuffle_epi64_mask,
13161         _mm512_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
13162         _mm256_mask_bitshuffle_epi64_mask, _mm_bitshuffle_epi64_mask,
13163         _mm_mask_bitshuffle_epi64_mask): Fix type.
13164         * config/i386/i386-builtin-types.def (UHI_FTYPE_V2DI_V2DI_UHI,
13165         USI_FTYPE_V4DI_V4DI_USI): Remove.
13166         * config/i386/i386-builtin.def (__builtin_ia32_vpshufbitqmb512_mask,
13167         __builtin_ia32_vpshufbitqmb256_mask,
13168         __builtin_ia32_vpshufbitqmb128_mask): Fix types.
13169         * config/i386/i386.c (ix86_expand_args_builtin): Remove old types.
13170         * config/i386/sse.md (VI1_AVX512VLBW): Change types.
13172 2018-01-26  Alan Modra  <amodra@gmail.com>
13174         PR target/84033
13175         * config/rs6000/rs6000-p8swap.c (rtx_is_swappable_p): Exclude
13176         UNSPEC_VBPERMQ.  Sort other unspecs.
13178 2018-01-25  David Edelsohn  <dje.gcc@gmail.com>
13180         * doc/invoke.texi (PowerPC Options): Document 'native' cpu type.
13182 2018-01-25  Jan Hubicka  <hubicka@ucw.cz>
13184         PR middle-end/83055
13185         * predict.c (drop_profile): Do not push/pop cfun; update also
13186         node->count.
13187         (handle_missing_profiles): Fix logic looking for zero profiles.
13189 2018-01-25  Jakub Jelinek  <jakub@redhat.com>
13191         PR middle-end/83977
13192         * ipa-fnsummary.c (compute_fn_summary): Clear can_change_signature
13193         on functions with #pragma omp declare simd or functions with simd
13194         attribute.
13195         * omp-simd-clone.c (expand_simd_clones): Revert 2018-01-24 change.
13196         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
13197         Remove trailing \n from warning_at calls.
13199 2018-01-25  Tom de Vries  <tom@codesourcery.com>
13201         PR target/84028
13202         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
13203         for neutered workers.
13205 2018-01-24  Joseph Myers  <joseph@codesourcery.com>
13207         PR target/68467
13208         * config/m68k/m68k.c (m68k_promote_function_mode): New function.
13209         (TARGET_PROMOTE_FUNCTION_MODE): New macro.
13211 2018-01-24  Jeff Law  <law@redhat.com>
13213         PR target/83994
13214         * i386.c (get_probe_interval): Move to earlier point.
13215         (ix86_compute_frame_layout): If -fstack-clash-protection and
13216         the frame is larger than the probe interval, then use pushes
13217         to save registers rather than reg->mem moves.
13218         (ix86_expand_prologue): Remove conditional for int_registers_saved
13219         assertion.
13221 2018-01-24  Vladimir Makarov  <vmakarov@redhat.com>
13223         PR target/84014
13224         * ira-build.c (setup_min_max_allocno_live_range_point): Set up
13225         min/max for never referenced object.
13227 2018-01-24  Jakub Jelinek  <jakub@redhat.com>
13229         PR middle-end/83977
13230         * tree.c (free_lang_data_in_decl): Don't clear DECL_ABSTRACT_ORIGIN
13231         here.
13232         * omp-low.c (create_omp_child_function): Remove "omp declare simd"
13233         attributes from DECL_ATTRIBUTES (decl) without affecting
13234         DECL_ATTRIBUTES (current_function_decl).
13235         * omp-simd-clone.c (expand_simd_clones): Ignore DECL_ARTIFICIAL
13236         functions with non-NULL DECL_ABSTRACT_ORIGIN.
13238 2018-01-24  Richard Sandiford  <richard.sandiford@linaro.org>
13240         PR tree-optimization/83979
13241         * fold-const.c (fold_comparison): Use constant_boolean_node
13242         instead of boolean_{true,false}_node.
13244 2018-01-24  Jan Hubicka  <hubicka@ucw.cz>
13246         * ipa-profile.c (ipa_propagate_frequency_1): Fix logic skipping calls
13247         with zero counts.
13249 2018-01-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13251         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
13252         Simplify the clause that sets the length attribute.
13253         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
13254         (*sibcall_nonlocal_sysv<mode>): Clean up code block; simplify the
13255         clause that sets the length attribute.
13256         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
13258 2018-01-24  Tom de Vries  <tom@codesourcery.com>
13260         PR target/83589
13261         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG_2): Define to 1.
13262         (nvptx_pc_set, nvptx_condjump_label): New function. Copy from jump.c.
13263         Add strict parameter.
13264         (prevent_branch_around_nothing): Insert dummy insn between branch to
13265         label and label with no ptx insn inbetween.
13266         * config/nvptx/nvptx.md (define_insn "fake_nop"): New insn.
13268 2018-01-24  Tom de Vries  <tom@codesourcery.com>
13270         PR target/81352
13271         * config/nvptx/nvptx.c (nvptx_single): Add exit insn after noreturn call
13272         for neutered threads in warp.
13273         * config/nvptx/nvptx.md (define_insn "exit"): New insn.
13275 2018-01-24  Richard Biener  <rguenther@suse.de>
13277         PR tree-optimization/83176
13278         * tree-chrec.c (chrec_fold_plus_1): Handle (signed T){(T) .. }
13279         operands.
13281 2018-01-24  Richard Biener  <rguenther@suse.de>
13283         PR tree-optimization/82819
13284         * graphite-isl-ast-to-gimple.c (binary_op_to_tree): Avoid
13285         code generating pluses that are no-ops in the target precision.
13287 2018-01-24  Richard Biener  <rguenther@suse.de>
13289         PR middle-end/84000
13290         * tree-cfg.c (replace_loop_annotate): Handle annot_expr_parallel_kind.
13292 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
13294         * cfgcleanup.c (try_crossjump_to_edge): Use combine_with_count
13295         to merge probabilities.
13296         * predict.c (probably_never_executed): Also mark as cold functions
13297         with global 0 profile and guessed local profile.
13298         * profile-count.c (profile_probability::combine_with_count): New
13299         member function.
13300         * profile-count.h (profile_probability::operator*,
13301         profile_probability::operator*=, profile_probability::operator/,
13302         profile_probability::operator/=): Reduce precision to adjusted
13303         and set value to guessed on contradictory divisions.
13304         (profile_probability::combine_with_freq): Remove.
13305         (profile_probability::combine_wiht_count): Declare.
13306         (profile_count::force_nonzero):: Set to adjusted.
13307         (profile_count::probability_in):: Set quality to adjusted.
13308         * tree-ssa-tail-merge.c (replace_block_by): Use
13309         combine_with_count.
13311 2018-01-23  Andrew Waterman  <andrew@sifive.com>
13312             Jim Wilson  <jimw@sifive.com>
13314         * config/riscv/riscv.c (riscv_stack_boundary): New.
13315         (riscv_option_override): Set riscv_stack_boundary.  Handle
13316         riscv_preferred_stack_boundary_arg.
13317         * config/riscv/riscv.h (MIN_STACK_BOUNDARY, ABI_STACK_BOUNDARY): New.
13318         (BIGGEST_ALIGNMENT): Set to STACK_BOUNDARY.
13319         (STACK_BOUNDARY): Set to riscv_stack_boundary.
13320         (RISCV_STACK_ALIGN): Use STACK_BOUNDARY.
13321         * config/riscv/riscv.opt (mpreferred-stack-boundary): New.
13322         * doc/invoke.tex (RISC-V Options): Add -mpreferred-stack-boundary.
13324 2018-01-23  H.J. Lu  <hongjiu.lu@intel.com>
13326         PR target/83905
13327         * config/i386/i386.c (ix86_expand_prologue): Use cost reference
13328         of struct ix86_frame.
13329         (ix86_expand_epilogue): Likewise.  Add a local variable for
13330         the reg_save_offset field in struct ix86_frame.
13332 2018-01-23  Bin Cheng  <bin.cheng@arm.com>
13334         PR tree-optimization/82604
13335         * tree-loop-distribution.c (enum partition_kind): New enum item
13336         PKIND_PARTIAL_MEMSET.
13337         (partition_builtin_p): Support above new enum item.
13338         (generate_code_for_partition): Ditto.
13339         (compute_access_range): Differentiate cases that equality can be
13340         proven at all loops, the innermost loops or no loops.
13341         (classify_builtin_st, classify_builtin_ldst): Adjust call to above
13342         function.  Set PKIND_PARTIAL_MEMSET for partition appropriately.
13343         (finalize_partitions, distribute_loop): Don't fuse partition of
13344         PKIND_PARTIAL_MEMSET kind when distributing 3-level loop nest.
13345         (prepare_perfect_loop_nest): Distribute 3-level loop nest only if
13346         parloop is enabled.
13348 2018-01-23  Martin Liska  <mliska@suse.cz>
13350         * predict.def (PRED_INDIR_CALL): Set probability to PROB_EVEN in
13351         order to ignore the predictor.
13352         (PRED_POLYMORPHIC_CALL): Likewise.
13353         (PRED_RECURSIVE_CALL): Likewise.
13355 2018-01-23  Martin Liska  <mliska@suse.cz>
13357         * tree-profile.c (tree_profiling): Print function header to
13358         aware reader which function we are working on.
13359         * value-prof.c (gimple_find_values_to_profile): Do not print
13360         not interesting value histograms.
13362 2018-01-23  Martin Liska  <mliska@suse.cz>
13364         * profile-count.h (enum profile_quality): Add
13365         profile_uninitialized as the first value. Do not number values
13366         as they are zero based.
13367         (profile_count::verify): Update sanity check.
13368         (profile_probability::verify): Likewise.
13370 2018-01-23  Nathan Sidwell  <nathan@acm.org>
13372         * doc/invoke.texi (ffor-scope): Deprecate.
13374 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
13376         PR tree-optimization/83510
13377         * domwalk.c (set_all_edges_as_executable): New function.
13378         (dom_walker::dom_walker): Convert bool param
13379         "skip_unreachable_blocks" to enum reachability.  Move setup of
13380         edge flags to set_all_edges_as_executable and only do it when
13381         reachability is REACHABLE_BLOCKS.
13382         * domwalk.h (enum dom_walker::reachability): New enum.
13383         (dom_walker::dom_walker): Convert bool param
13384         "skip_unreachable_blocks" to enum reachability.
13385         (set_all_edges_as_executable): New decl.
13386         * graphite-scop-detection.c  (gather_bbs::gather_bbs): Convert
13387         from false for "skip_unreachable_blocks" to ALL_BLOCKS for
13388         "reachability".
13389         * tree-ssa-dom.c (dom_opt_dom_walker::dom_opt_dom_walker): Likewise,
13390         but converting true to REACHABLE_BLOCKS.
13391         * tree-ssa-sccvn.c (sccvn_dom_walker::sccvn_dom_walker): Likewise.
13392         * tree-vrp.c
13393         (check_array_bounds_dom_walker::check_array_bounds_dom_walker):
13394         Likewise, but converting it to REACHABLE_BLOCKS_PRESERVING_FLAGS.
13395         (vrp_dom_walker::vrp_dom_walker): Likewise, but converting it to
13396         REACHABLE_BLOCKS.
13397         (vrp_prop::vrp_finalize): Call set_all_edges_as_executable
13398         if check_all_array_refs will be called.
13400 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
13402         * tree.c (selftest::test_location_wrappers): Add more test
13403         coverage.
13405 2018-01-23  David Malcolm  <dmalcolm@redhat.com>
13407         * sbitmap.c (selftest::test_set_range): Fix memory leaks.
13408         (selftest::test_bit_in_range): Likewise.
13410 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
13412         PR testsuite/83888
13413         * doc/sourcebuild.texi (vect_float): Say that the selector
13414         only describes the situation when -funsafe-math-optimizations is on.
13415         (vect_float_strict): Document.
13417 2018-01-23  Richard Sandiford  <richard.sandiford@linaro.org>
13419         PR tree-optimization/83965
13420         * tree-vect-patterns.c (vect_reassociating_reduction_p): New function.
13421         (vect_recog_dot_prod_pattern, vect_recog_sad_pattern): Use it
13422         instead of checking only for a reduction.
13423         (vect_recog_widen_sum_pattern): Likewise.
13425 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
13427         * predict.c (probably_never_executed): Only use precise profile info.
13428         (compute_function_frequency): Skip after inlining hack since we now
13429         have quality checking.
13431 2018-01-23  Jan Hubicka  <hubicka@ucw.cz>
13433         * profile-count.h (profile_probability::very_unlikely,
13434         profile_probability::unlikely, profile_probability::even): Set
13435         precision to guessed.
13437 2018-01-23  Richard Biener  <rguenther@suse.de>
13439         PR tree-optimization/83963
13440         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
13441         Properly terminate dominator walk when crossing the exit edge not
13442         when visiting its source block.
13444 2018-01-23  Jakub Jelinek  <jakub@redhat.com>
13446         PR c++/83918
13447         * tree.c (maybe_wrap_with_location): Use NON_LVALUE_EXPR rather than
13448         VIEW_CONVERT_EXPR to wrap CONST_DECLs.
13450 2018-01-22  Jakub Jelinek  <jakub@redhat.com>
13452         PR tree-optimization/83957
13453         * omp-expand.c (expand_omp_for_generic): Ignore virtual PHIs.  Remove
13454         semicolon after for body surrounded by braces.
13456         PR tree-optimization/83081
13457         * profile-count.h (profile_probability::split): New method.
13458         * dojump.c (do_jump_1) <case TRUTH_ANDIF_EXPR, case TRUTH_ORIF_EXPR>:
13459         Use profile_probability::split.
13460         (do_compare_rtx_and_jump): Fix adjustment of probabilities
13461         when splitting a single conditional jump into 2.
13463 2018-01-22  David Malcolm  <dmalcolm@redhat.com>
13465         PR tree-optimization/69452
13466         * tree-ssa-loop-im.c (class move_computations_dom_walker): Remove
13467         decl.
13469 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
13471         * config/rl78/rl78-expand.md (bswaphi2): New define_expand.
13472         * config/rl78/rl78-virt.md (*bswaphi2_virt): New define_insn.
13473         * config/rl78/rl78-real.md (*bswaphi2_real): New define_insn.
13475 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
13477         * config/rl78/rl78-protos.h (rl78_split_movdi): New function
13478         declaration.
13479         * config/rl78/rl78.md (movdi): New define_expand.
13480         * config/rl78/rl78.c (rl78_split_movdi): New function.
13482 2018-01-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
13484         PR target/83862
13485         * config/rs6000/rs6000-protos.h (rs6000_split_signbit): Delete,
13486         no longer used.
13487         * config/rs6000/rs6000.c (rs6000_split_signbit): Likewise.
13488         * config/rs6000/rs6000.md (signbit<mode>2): Change code for IEEE
13489         128-bit to produce an UNSPEC move to get the double word with the
13490         signbit and then a shift directly to do signbit.
13491         (signbit<mode>2_dm): Replace old IEEE 128-bit signbit
13492         implementation with a new version that just does either a direct
13493         move or a regular move.  Move memory interface to separate insns.
13494         Move insns so they are next to the expander.
13495         (signbit<mode>2_dm_mem_be): New combiner insns to combine load
13496         with signbit move.  Split big and little endian case.
13497         (signbit<mode>2_dm_mem_le): Likewise.
13498         (signbit<mode>2_dm_<su>ext): Delete, no longer used.
13499         (signbit<mode>2_dm2): Likewise.
13501 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
13503         * config/rl78/rl78.md (anddi3): New define_expand.
13505 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
13507         * config/rl78/rl78.md (umindi3): New define_expand.
13509 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
13511         * config/rl78/rl78.md (smindi3): New define_expand.
13513 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
13515         * config/rl78/rl78.md (smaxdi3): New define_expand.
13517 2018-01-22  Carl Love  <cel@us.ibm.com>
13519         * config/rs6000/rs6000-builtin.def (ST_ELEMREV_V1TI, LD_ELEMREV_V1TI,
13520         LVX_V1TI): Add macro expansion.
13521         * config/rs6000/rs6000-c.c (altivec_builtin_types): Add argument
13522         definitions for VSX_BUILTIN_VEC_XST_BE, VSX_BUILTIN_VEC_ST,
13523         VSX_BUILTIN_VEC_XL, LD_ELEMREV_V1TI builtins.
13524         * config/rs6000/rs6000-p8swap.c (insn_is_swappable_p);
13525         Change check to determine if the instruction is a byte reversing
13526         entry.  Fix typo in comment.
13527         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case entry
13528         for VSX_BUILTIN_ST_ELEMREV_V1TI and VSX_BUILTIN_LD_ELEMREV_V1TI.
13529         Add def_builtin calls for new builtins.
13530         * config/rs6000/vsx.md (vsx_st_elemrev_v1ti, vsx_ld_elemrev_v1ti):
13531         Add define_insn expansion.
13533 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
13535         * config/rl78/rl78.md (umaxdi3): New define_expand.
13537 2018-01-22  Sebastian Perta  <sebastian.perta@renesas.com>
13539         * config/rl78/rl78.c (rl78_note_reg_set): Fixed dead reg check
13540         for non-QImode registers.
13542 2018-01-22  Richard Biener  <rguenther@suse.de>
13544         PR tree-optimization/83963
13545         * graphite-scop-detection.c (scop_detection::get_sese): Delay
13546         including the loop exit block.
13547         (scop_detection::merge_sese): Likewise.
13548         (scop_detection::add_scop): Do it here instead.
13550 2018-01-22  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13552         * doc/sourcebuild.texi (arm_softfloat): Document.
13554 2018-01-21  John David Anglin  <danglin@gcc.gnu.org>
13556         PR gcc/77734
13557         * config/pa/pa.c (pa_function_ok_for_sibcall): Use
13558         targetm.binds_local_p instead of TREE_PUBLIC to check local binding.
13559         Move TARGET_PORTABLE_RUNTIME check after TARGET_64BIT check.
13561 2018-01-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13562             David Edelsohn  <dje.gcc@gmail.com>
13564         PR target/83946
13565         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
13566         Change "crset eq" to "crset 2".
13567         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
13568         (*call_indirect_aix<mode>_nospec): Likewise.
13569         (*call_value_indirect_aix<mode>_nospec): Likewise.
13570         (*call_indirect_elfv2<mode>_nospec): Likewise.
13571         (*call_value_indirect_elfv2<mode>_nospec): Likewise.
13572         (*sibcall_nonlocal_sysv<mode>): Change "crset eq" to "crset 2";
13573         change assembly output from . to $.
13574         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
13575         (indirect_jump<mode>_nospec): Change assembly output from . to $.
13576         (*tablejump<mode>_internal1_nospec): Likewise.
13578 2018-01-21  Oleg Endo  <olegendo@gcc.gnu.org>
13580         PR target/80870
13581         * config/sh/sh_optimize_sett_clrt.cc:
13582         Use INCLUDE_ALGORITHM and INCLUDE_VECTOR instead of direct includes.
13584 2018-01-20  Richard Sandiford  <richard.sandiford@linaro.org>
13586         PR tree-optimization/83940
13587         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): Set
13588         offset_dt to vect_constant_def rather than vect_unknown_def_type.
13589         (vect_check_load_store_mask): Add a mask_dt_out parameter and
13590         use it to pass back the definition type.
13591         (vect_check_store_rhs): Likewise rhs_dt_out.
13592         (vect_build_gather_load_calls): Add a mask_dt argument and use
13593         it instead of a call to vect_is_simple_use.
13594         (vectorizable_store): Update calls to vect_check_load_store_mask
13595         and vect_check_store_rhs.  Use the dt returned by the latter instead
13596         of scatter_src_dt.  Use the cached mask_dt and gs_info.offset_dt
13597         instead of calls to vect_is_simple_use.  Pass the scalar rather
13598         than the vector operand to vect_is_simple_use when handling
13599         second and subsequent copies of an rhs value.
13600         (vectorizable_load): Update calls to vect_check_load_store_mask
13601         and vect_build_gather_load_calls.  Use the cached mask_dt and
13602         gs_info.offset_dt instead of calls to vect_is_simple_use.
13604 2018-01-20  Jakub Jelinek  <jakub@redhat.com>
13606         PR middle-end/83945
13607         * tree-emutls.c: Include gimplify.h.
13608         (lower_emutls_2): New function.
13609         (lower_emutls_1): If ADDR_EXPR is a gimple invariant and walk_tree
13610         with lower_emutls_2 callback finds some TLS decl in it, unshare_expr
13611         it before further processing.
13613         PR target/83930
13614         * simplify-rtx.c (simplify_binary_operation_1) <case UMOD>: Use
13615         UINTVAL (trueop1) instead of INTVAL (op1).
13617 2018-01-19  Jakub Jelinek  <jakub@redhat.com>
13619         PR debug/81570
13620         PR debug/83728
13621         * dwarf2cfi.c (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define to
13622         INCOMING_FRAME_SP_OFFSET if not defined.
13623         (scan_trace): Add ENTRY argument.  If true and
13624         DEFAULT_INCOMING_FRAME_SP_OFFSET != INCOMING_FRAME_SP_OFFSET,
13625         emit a note to adjust the CFA offset.
13626         (create_cfi_notes): Adjust scan_trace callers.
13627         (create_cie_data): Use DEFAULT_INCOMING_FRAME_SP_OFFSET rather than
13628         INCOMING_FRAME_SP_OFFSET in the CIE.
13629         * config/i386/i386.h (DEFAULT_INCOMING_FRAME_SP_OFFSET): Define.
13630         * config/stormy16/stormy16.h (DEFAULT_INCOMING_FRAME_SP_OFFSET):
13631         Likewise.
13632         * doc/tm.texi.in (DEFAULT_INCOMING_FRAME_SP_OFFSET): Document.
13633         * doc/tm.texi: Regenerated.
13635 2018-01-19  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13637         PR rtl-optimization/83147
13638         * lra-constraints.c (remove_inheritance_pseudos): Use
13639         lra_substitute_pseudo_within_insn.
13641 2018-01-19  Tom de Vries  <tom@codesourcery.com>
13642             Cesar Philippidis  <cesar@codesourcery.com>
13644         PR target/83920
13645         * config/nvptx/nvptx.c (nvptx_single): Fix jit workaround.
13647 2018-01-19  Cesar Philippidis  <cesar@codesourcery.com>
13649         PR target/83790
13650         * config/nvptx/nvptx.c (output_init_frag): Don't use generic address
13651         spaces for function labels.
13653 2018-01-19  Martin Liska  <mliska@suse.cz>
13655         * predict.def (PRED_LOOP_EXIT): Change from 85 to 89.
13656         (PRED_LOOP_EXIT_WITH_RECURSION): Change from 72 to 78.
13657         (PRED_LOOP_EXTRA_EXIT): Change from 83 to 67.
13658         (PRED_OPCODE_POSITIVE): Change from 64 to 59.
13659         (PRED_TREE_OPCODE_POSITIVE): Change from 64 to 59.
13660         (PRED_CONST_RETURN): Change from 69 to 65.
13661         (PRED_NULL_RETURN): Change from 91 to 71.
13662         (PRED_LOOP_IV_COMPARE_GUESS): Change from 98 to 64.
13663         (PRED_LOOP_GUARD): Change from 66 to 73.
13665 2018-01-19  Martin Liska  <mliska@suse.cz>
13667         * predict.c (predict_insn_def): Add new assert.
13668         (struct branch_predictor): Change type to signed integer.
13669         (test_prediction_value_range): Amend test to cover
13670         PROB_UNINITIALIZED.
13671         * predict.def (PRED_LOOP_ITERATIONS): Use the new constant.
13672         (PRED_LOOP_ITERATIONS_GUESSED): Likewise.
13673         (PRED_LOOP_ITERATIONS_MAX): Likewise.
13674         (PRED_LOOP_IV_COMPARE): Likewise.
13675         * predict.h (PROB_UNINITIALIZED): Define new constant.
13677 2018-01-19  Martin Liska  <mliska@suse.cz>
13679         * predict.c (dump_prediction): Add new format for
13680         analyze_brprob.py script which is enabled with -details
13681         suboption.
13682         * profile-count.h (precise_p): New function.
13684 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
13686         PR tree-optimization/83922
13687         * tree-vect-loop.c (vect_verify_full_masking): Return false if
13688         there are no statements that need masking.
13689         (vect_active_double_reduction_p): New function.
13690         (vect_analyze_loop_operations): Use it when handling phis that
13691         are not in the loop header.
13693 2018-01-19  Richard Sandiford  <richard.sandiford@linaro.org>
13695         PR tree-optimization/83914
13696         * tree-vect-loop.c (vectorizable_induction): Don't convert
13697         init_expr or apply the peeling adjustment for inductions
13698         that are nested within the vectorized loop.
13700 2018-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
13702         * config/arm/thumb2.md (*thumb2_negsi2_short): Use RSB mnemonic
13703         instead of NEG.
13705 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
13707         PR sanitizer/81715
13708         PR testsuite/83882
13709         * function.h (gimplify_parameters): Add gimple_seq * argument.
13710         * function.c: Include gimple.h and options.h.
13711         (gimplify_parameters): Add cleanup argument, add CLOBBER stmts
13712         for the added local temporaries if needed.
13713         * gimplify.c (gimplify_body): Adjust gimplify_parameters caller,
13714         if there are any parameter cleanups, wrap whole body into a
13715         try/finally with the cleanups.
13717 2018-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
13719         PR target/82964
13720         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
13721         Use GET_MODE_CLASS for scalar floating point.
13723 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
13725         PR ipa/82256
13726         patch by PaX Team
13727         * cgraphclones.c (cgraph_node::create_version_clone_with_body):
13728         Fix call of call_cgraph_insertion_hooks.
13730 2018-01-18  Martin Sebor  <msebor@redhat.com>
13732         * doc/invoke.texi (-Wclass-memaccess): Tweak text.
13734 2018-01-18  Jan Hubicka  <hubicka@ucw.cz>
13736         PR ipa/83619
13737         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Update edge
13738         frequencies.
13740 2018-01-18  Boris Kolpackov  <boris@codesynthesis.com>
13742         PR other/70268
13743         * common.opt: (-ffile-prefix-map): New option.
13744         * opts.c (common_handle_option): Defer it.
13745         * opts-global.c (handle_common_deferred_options): Handle it.
13746         * debug.h (remap_debug_filename, add_debug_prefix_map): Move to...
13747         * file-prefix-map.h: New file.
13748         (remap_debug_filename, add_debug_prefix_map): ...here.
13749         (add_macro_prefix_map, add_file_prefix_map, remap_macro_filename): New.
13750         * final.c (debug_prefix_map, add_debug_prefix_map
13751         remap_debug_filename): Move to...
13752         * file-prefix-map.c: New file.
13753         (file_prefix_map, add_prefix_map, remap_filename) ...here and rename,
13754         generalize, get rid of alloca(), use strrchr() instead of strchr().
13755         (add_macro_prefix_map, add_debug_prefix_map, add_file_prefix_map):
13756         Implement in terms of add_prefix_map().
13757         (remap_macro_filename, remap_debug_filename): Implement in term of
13758         remap_filename().
13759         * Makefile.in (OBJS, PLUGIN_HEADERS): Add new files.
13760         * builtins.c (fold_builtin_FILE): Call remap_macro_filename().
13761         * dbxout.c: Include file-prefix-map.h.
13762         * varasm.c: Likewise.
13763         * vmsdbgout.c: Likewise.
13764         * xcoffout.c: Likewise.
13765         * dwarf2out.c: Likewise plus omit new options from DW_AT_producer.
13766         * doc/cppopts.texi (-fmacro-prefix-map): Document.
13767         * doc/invoke.texi (-ffile-prefix-map): Document.
13768         (-fdebug-prefix-map): Update description.
13770 2018-01-18  Martin Liska  <mliska@suse.cz>
13772         * config/i386/i386.c (indirect_thunk_name): Document that also
13773         lfence is emitted.
13774         (output_indirect_thunk): Document why both instructions
13775         (pause and lfence) are generated.
13777 2018-01-18  Richard Biener  <rguenther@suse.de>
13779         PR tree-optimization/83887
13780         * graphite-scop-detection.c
13781         (scop_detection::get_nearest_dom_with_single_entry): Remove.
13782         (scop_detection::get_nearest_pdom_with_single_exit): Likewise.
13783         (scop_detection::merge_sese): Re-implement with a flood-fill
13784         algorithm that properly finds a SESE region if it exists.
13786 2018-01-18  Jakub Jelinek  <jakub@redhat.com>
13788         PR c/61240
13789         * match.pd ((P + A) - P, P - (P + A), (P + A) - (P + B)): For
13790         pointer_diff optimizations use view_convert instead of convert.
13792 2018-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13794         * config/rs6000/rs6000.md (*call_indirect_nonlocal_sysv<mode>):
13795         Generate different code for -mno-speculate-indirect-jumps.
13796         (*call_value_indirect_nonlocal_sysv<mode>): Likewise.
13797         (*call_indirect_aix<mode>): Disable for
13798         -mno-speculate-indirect-jumps.
13799         (*call_indirect_aix<mode>_nospec): New define_insn.
13800         (*call_value_indirect_aix<mode>): Disable for
13801         -mno-speculate-indirect-jumps.
13802         (*call_value_indirect_aix<mode>_nospec): New define_insn.
13803         (*sibcall_nonlocal_sysv<mode>): Generate different code for
13804         -mno-speculate-indirect-jumps.
13805         (*sibcall_value_nonlocal_sysv<mode>): Likewise.
13807 2018-01-17  Michael Meissner  <meissner@linux.vnet.ibm.com>
13809         * config/rs6000/rs6000.c (rs6000_emit_move): If we load or store a
13810         long double type, set the flags for noting the default long double
13811         type, even if we don't pass or return a long double type.
13813 2018-01-17  Jan Hubicka  <hubicka@ucw.cz>
13815         PR ipa/83051
13816         * ipa-inline.c (flatten_function): Do not overwrite final inlining
13817         failure.
13819 2018-01-17  Will Schmidt  <will_schmidt@vnet.ibm.com>
13821         * config/rs6000/rs6000.c (rs6000_gimple_builtin): Add gimple folding
13822         support for merge[hl].
13823         (fold_mergehl_helper): New helper function.
13824         (tree-vector-builder.h): New #include for tree_vector_builder usage.
13825         * config/rs6000/altivec.md (altivec_vmrghw_direct): Add xxmrghw insn.
13826         (altivec_vmrglw_direct): Add xxmrglw insn.
13828 2018-01-17  Andrew Waterman  <andrew@sifive.com>
13830         * config/riscv/riscv.c (riscv_conditional_register_usage): If
13831         UNITS_PER_FP_ARG is 0, set call_used_regs to 1 for all FP regs.
13833 2018-01-17  David Malcolm  <dmalcolm@redhat.com>
13835         PR lto/83121
13836         * ipa-devirt.c (add_type_duplicate): When comparing memory layout,
13837         call the lto_location_cache before reading the
13838         DECL_SOURCE_LOCATION of the types.
13840 2018-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
13841             Richard Sandiford  <richard.sandiford@linaro.org>
13843         * config/aarch64/aarch64.md (movti_aarch64): Use Uti constraint.
13844         * config/aarch64/aarch64.c (aarch64_mov128_immediate): New function.
13845         (aarch64_legitimate_constant_p): Just support CONST_DOUBLE
13846         SF/DF/TF mode to avoid creating illegal CONST_WIDE_INT immediates.
13847         * config/aarch64/aarch64-protos.h (aarch64_mov128_immediate):
13848         Add declaration.
13849         * config/aarch64/constraints.md (aarch64_movti_operand):
13850         Limit immediates.
13851         * config/aarch64/predicates.md (Uti): Add new constraint.
13853 2018-01-17 Carl Love  <cel@us.ibm.com>
13855         * config/rs6000/vsx.md (define_expand xl_len_r,
13856         define_expand stxvl, define_expand *stxvl): Add match_dup argument.
13857         (define_insn): Add, match_dup 1 argument to define_insn stxvll and
13858         lxvll.
13859         (define_expand, define_insn): Move the shift left from  the
13860         define_insn to the define_expand for lxvl and stxvl instructions.
13861         * config/rs6000/rs6000-builtin.def (BU_P9V_64BIT_VSX_2): Change LXVL
13862         and XL_LEN_R definitions to PURE.
13864 2018-01-17  Uros Bizjak  <ubizjak@gmail.com>
13866         * config/i386/i386.c (indirect_thunk_name): Declare regno
13867         as unsigned int.  Compare regno with INVALID_REGNUM.
13868         (output_indirect_thunk): Ditto.
13869         (output_indirect_thunk_function): Ditto.
13870         (ix86_code_end): Declare regno as unsigned int.  Use INVALID_REGNUM
13871         in the call to output_indirect_thunk_function.
13873 2018-01-17  Richard Sandiford  <richard.sandiford@linaro.org>
13875         PR middle-end/83884
13876         * expr.c (expand_expr_real_1): Use the size of GET_MODE (op0)
13877         rather than the size of inner_type to determine the stack slot size
13878         when handling VIEW_CONVERT_EXPRs on strict-alignment targets.
13880 2018-01-16  Sebastian Peryt  <sebastian.peryt@intel.com>
13882         PR target/83546
13883         * config/i386/i386.c (ix86_option_override_internal): Add PTA_RDRND
13884         to PTA_SILVERMONT.
13886 2018-01-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
13888         * config.gcc (powerpc*-linux*-*): Add support for 64-bit little
13889         endian Linux systems to optionally enable multilibs for selecting
13890         the long double type if the user configured an explicit type.
13891         * config/rs6000/rs6000.h (TARGET_IEEEQUAD_MULTILIB): Indicate we
13892         have no long double multilibs if not defined.
13893         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
13894         warn if the user used -mabi={ieee,ibm}longdouble and we built
13895         multilibs for long double.
13896         * config/rs6000/linux64.h (MULTILIB_DEFAULTS_IEEE): Define as the
13897         appropriate multilib option.
13898         (MULTILIB_DEFAULTS): Add MULTILIB_DEFAULTS_IEEE to the default
13899         multilib options.
13900         * config/rs6000/t-ldouble-linux64le-ibm: New configuration files
13901         for building long double multilibs.
13902         * config/rs6000/t-ldouble-linux64le-ieee: Likewise.
13904 2018-01-16  John David Anglin  <danglin@gcc.gnu.org>
13906         * config.gcc (hppa*-*-linux*): Change callee copies ABI to caller
13907         copies.
13909         * config/pa.h (MALLOC_ABI_ALIGNMENT): Set 32-bit alignment default to
13910         64 bits.
13911         * config/pa/pa32-linux.h (MALLOC_ABI_ALIGNMENT): Set alignment to
13912         128 bits.
13914         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Cleanup type and mode
13915         variables.
13917         * config/pa/pa.c (pa_function_arg_size): Apply CEIL to GET_MODE_SIZE
13918         return value.
13920 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
13922         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): For an
13923         ADDR_EXPR, do not count the offset of a COMPONENT_REF twice.
13925 2018-01-16  Kelvin Nilsen  <kelvin@gcc.gnu.org>
13927         * config/rs6000/rs6000-p8swap.c (rs6000_gen_stvx): Generate
13928         different rtl trees depending on TARGET_64BIT.
13929         (rs6000_gen_lvx): Likewise.
13931 2018-01-16  Eric Botcazou  <ebotcazou@adacore.com>
13933         * config/visium/visium.md (nop): Tweak comment.
13934         (hazard_nop): Likewise.
13936 2018-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13938         * config/rs6000/rs6000.c (rs6000_opt_vars): Add entry for
13939         -mspeculate-indirect-jumps.
13940         * config/rs6000/rs6000.md (*call_indirect_elfv2<mode>): Disable
13941         for -mno-speculate-indirect-jumps.
13942         (*call_indirect_elfv2<mode>_nospec): New define_insn.
13943         (*call_value_indirect_elfv2<mode>): Disable for
13944         -mno-speculate-indirect-jumps.
13945         (*call_value_indirect_elfv2<mode>_nospec): New define_insn.
13946         (indirect_jump): Emit different RTL for
13947         -mno-speculate-indirect-jumps.
13948         (*indirect_jump<mode>): Disable for
13949         -mno-speculate-indirect-jumps.
13950         (*indirect_jump<mode>_nospec): New define_insn.
13951         (tablejump): Emit different RTL for
13952         -mno-speculate-indirect-jumps.
13953         (tablejumpsi): Disable for -mno-speculate-indirect-jumps.
13954         (tablejumpsi_nospec): New define_expand.
13955         (tablejumpdi): Disable for -mno-speculate-indirect-jumps.
13956         (tablejumpdi_nospec): New define_expand.
13957         (*tablejump<mode>_internal1): Disable for
13958         -mno-speculate-indirect-jumps.
13959         (*tablejump<mode>_internal1_nospec): New define_insn.
13960         * config/rs6000/rs6000.opt (mspeculate-indirect-jumps): New
13961         option.
13963 2018-01-16  Artyom Skrobov tyomitch@gmail.com
13965         * caller-save.c (insert_save): Drop unnecessary parameter.  All
13966         callers updated.
13968 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
13969             Richard Biener  <rguenth@suse.de>
13971         PR libgomp/83590
13972         * gimplify.c (gimplify_one_sizepos): For is_gimple_constant (expr)
13973         return early, inline manually is_gimple_sizepos.  Make sure if we
13974         call gimplify_expr we don't end up with a gimple constant.
13975         * tree.c (variably_modified_type_p): Don't return true for
13976         is_gimple_constant (_t).  Inline manually is_gimple_sizepos.
13977         * gimplify.h (is_gimple_sizepos): Remove.
13979 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
13981         PR tree-optimization/83857
13982         * tree-vect-loop.c (vect_analyze_loop_operations): Don't call
13983         vectorizable_live_operation for pure SLP statements.
13984         (vectorizable_live_operation): Handle PHIs.
13986 2018-01-16  Richard Biener  <rguenther@suse.de>
13988         PR tree-optimization/83867
13989         * tree-vect-stmts.c (vect_transform_stmt): Precompute
13990         nested_in_vect_loop_p since the scalar stmt may get invalidated.
13992 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
13994         PR c/83844
13995         * stor-layout.c (handle_warn_if_not_align): Use byte_position and
13996         multiple_of_p instead of unchecked tree_to_uhwi and UHWI check.
13997         If off is not INTEGER_CST, issue a may not be aligned warning
13998         rather than isn't aligned.  Use isn%'t rather than isn't.
13999         * fold-const.c (multiple_of_p) <case BIT_AND_EXPR>: Don't fall through
14000         into MULT_EXPR.
14001         <case MULT_EXPR>: Improve the case when bottom and one of the
14002         MULT_EXPR operands are INTEGER_CSTs and bottom is multiple of that
14003         operand, in that case check if the other operand is multiple of
14004         bottom divided by the INTEGER_CST operand.
14006 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
14008         PR target/83858
14009         * config/pa/pa.h (FUNCTION_ARG_SIZE): Delete.
14010         * config/pa/pa-protos.h (pa_function_arg_size): Declare.
14011         * config/pa/som.h (ASM_DECLARE_FUNCTION_NAME): Use
14012         pa_function_arg_size instead of FUNCTION_ARG_SIZE.
14013         * config/pa/pa.c (pa_function_arg_advance): Likewise.
14014         (pa_function_arg, pa_arg_partial_bytes): Likewise.
14015         (pa_function_arg_size): New function.
14017 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
14019         * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
14020         in a separate statement.
14022 2018-01-16  Richard Sandiford  <richard.sandiford@linaro.org>
14024         PR tree-optimization/83847
14025         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Don't
14026         group gathers and scatters.
14028 2018-01-16  Jakub Jelinek  <jakub@redhat.com>
14030         PR rtl-optimization/86620
14031         * params.def (max-sched-ready-insns): Bump minimum value to 1.
14033         PR rtl-optimization/83213
14034         * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn
14035         to last if both are JUMP_INSNs.
14037         PR tree-optimization/83843
14038         * gimple-ssa-store-merging.c
14039         (imm_store_chain_info::output_merged_store): Handle bit_not_p on
14040         store_immediate_info for bswap/nop orig_stores.
14042 2018-01-15  Andrew Waterman  <andrew@sifive.com>
14044         * config/riscv/riscv.c (riscv_rtx_costs) <MULT>: Increase cost if
14045         !TARGET_MUL.
14046         <UDIV>: Increase cost if !TARGET_DIV.
14048 2018-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
14050         * config/rs6000/rs6000.md (define_attr "type"): Remove delayed_cr.
14051         (define_attr "cr_logical_3op"): New.
14052         (cceq_ior_compare): Adjust.
14053         (cceq_ior_compare_complement): Adjust.
14054         (*cceq_rev_compare): Adjust.
14055         * config/rs6000/rs6000.c (rs6000_adjust_cost): Adjust.
14056         (is_cracked_insn): Adjust.
14057         (insn_must_be_first_in_group): Adjust.
14058         * config/rs6000/40x.md: Adjust.
14059         * config/rs6000/440.md: Adjust.
14060         * config/rs6000/476.md: Adjust.
14061         * config/rs6000/601.md: Adjust.
14062         * config/rs6000/603.md: Adjust.
14063         * config/rs6000/6xx.md: Adjust.
14064         * config/rs6000/7450.md: Adjust.
14065         * config/rs6000/7xx.md: Adjust.
14066         * config/rs6000/8540.md: Adjust.
14067         * config/rs6000/cell.md: Adjust.
14068         * config/rs6000/e300c2c3.md: Adjust.
14069         * config/rs6000/e500mc.md: Adjust.
14070         * config/rs6000/e500mc64.md: Adjust.
14071         * config/rs6000/e5500.md: Adjust.
14072         * config/rs6000/e6500.md: Adjust.
14073         * config/rs6000/mpc.md: Adjust.
14074         * config/rs6000/power4.md: Adjust.
14075         * config/rs6000/power5.md: Adjust.
14076         * config/rs6000/power6.md: Adjust.
14077         * config/rs6000/power7.md: Adjust.
14078         * config/rs6000/power8.md: Adjust.
14079         * config/rs6000/power9.md: Adjust.
14080         * config/rs6000/rs64.md: Adjust.
14081         * config/rs6000/titan.md: Adjust.
14083 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14085         * config/i386/predicates.md (indirect_branch_operand): Rewrite
14086         ix86_indirect_branch_register logic.
14088 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14090         * config/i386/constraints.md (Bs): Update
14091         ix86_indirect_branch_register check.  Don't check
14092         ix86_indirect_branch_register with GOT_memory_operand.
14093         (Bw): Likewise.
14094         * config/i386/predicates.md (GOT_memory_operand): Don't check
14095         ix86_indirect_branch_register here.
14096         (GOT32_symbol_operand): Likewise.
14098 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14100         * config/i386/predicates.md (constant_call_address_operand):
14101         Rewrite ix86_indirect_branch_register logic.
14102         (sibcall_insn_operand): Likewise.
14104 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14106         * config/i386/constraints.md (Bs): Replace
14107         ix86_indirect_branch_thunk_register with
14108         ix86_indirect_branch_register.
14109         (Bw): Likewise.
14110         * config/i386/i386.md (indirect_jump): Likewise.
14111         (tablejump): Likewise.
14112         (*sibcall_memory): Likewise.
14113         (*sibcall_value_memory): Likewise.
14114         Peepholes of indirect call and jump via memory: Likewise.
14115         * config/i386/i386.opt: Likewise.
14116         * config/i386/predicates.md (indirect_branch_operand): Likewise.
14117         (GOT_memory_operand): Likewise.
14118         (call_insn_operand): Likewise.
14119         (sibcall_insn_operand): Likewise.
14120         (GOT32_symbol_operand): Likewise.
14122 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
14124         PR middle-end/83837
14125         * omp-expand.c (expand_omp_atomic_pipeline): Use loaded_val
14126         type rather than type addr's type points to.
14127         (expand_omp_atomic_mutex): Likewise.
14128         (expand_omp_atomic): Likewise.
14130 2018-01-15  H.J. Lu  <hongjiu.lu@intel.com>
14132         PR target/83839
14133         * config/i386/i386.c (output_indirect_thunk_function): Use
14134         ASM_OUTPUT_LABEL, instead of ASM_OUTPUT_DEF, for TARGET_MACHO
14135         for  __x86_return_thunk.
14137 2018-01-15  Richard Biener  <rguenther@suse.de>
14139         PR middle-end/83850
14140         * expmed.c (extract_bit_field_1): Fix typo.
14142 2018-01-15  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
14144         PR target/83687
14145         * config/arm/iterators.md (VF): New mode iterator.
14146         * config/arm/neon.md (neon_vabd<mode>_2): Use the above.
14147         Remove integer-related logic from pattern.
14148         (neon_vabd<mode>_3): Likewise.
14150 2018-01-15  Jakub Jelinek  <jakub@redhat.com>
14152         PR middle-end/82694
14153         * common.opt (fstrict-overflow): No longer an alias.
14154         (fwrapv-pointer): New option.
14155         * tree.h (TYPE_OVERFLOW_WRAPS, TYPE_OVERFLOW_UNDEFINED): Define
14156         also for pointer types based on flag_wrapv_pointer.
14157         * opts.c (common_handle_option) <case OPT_fstrict_overflow>: Set
14158         opts->x_flag_wrap[pv] to !value, clear opts->x_flag_trapv if
14159         opts->x_flag_wrapv got set.
14160         * fold-const.c (fold_comparison, fold_binary_loc): Revert 2017-08-01
14161         changes, just use TYPE_OVERFLOW_UNDEFINED on pointer type instead of
14162         POINTER_TYPE_OVERFLOW_UNDEFINED.
14163         * match.pd: Likewise in address comparison pattern.
14164         * doc/invoke.texi: Document -fwrapv and -fstrict-overflow.
14166 2018-01-15  Richard Biener  <rguenther@suse.de>
14168         PR lto/83804
14169         * tree.c (free_lang_data_in_type): Always unlink TYPE_DECLs
14170         from TYPE_FIELDS.  Free TYPE_BINFO if not used by devirtualization.
14171         Reset type names to their identifier if their TYPE_DECL doesn't
14172         have linkage (and thus is used for ODR and devirt).
14173         (save_debug_info_for_decl): Remove.
14174         (save_debug_info_for_type): Likewise.
14175         (add_tree_to_fld_list): Adjust.
14176         * tree-pretty-print.c (dump_generic_node): Make dumping of
14177         type names more robust.
14179 2018-01-15  Richard Biener  <rguenther@suse.de>
14181         * BASE-VER: Bump to 8.0.1.
14183 2018-01-14  Martin Sebor  <msebor@redhat.com>
14185         PR other/83508
14186         * builtins.c (check_access): Avoid warning when the no-warning bit
14187         is set.
14189 2018-01-14  Cory Fields  <cory-nospam-@coryfields.com>
14191         * tree-ssa-loop-im.c (sort_bbs_in_loop_postorder_cmp): Stabilize sort.
14192         * ira-color (allocno_hard_regs_compare): Likewise.
14194 2018-01-14  Nathan Rossi  <nathan@nathanrossi.com>
14196         PR target/83013
14197         * config/microblaze/microblaze.c (microblaze_asm_output_ident):
14198         Use .pushsection/.popsection.
14200 2018-01-14  Martin Sebor  <msebor@redhat.com>
14202         PR c++/81327
14203         * doc/invoke.texi (-Wlass-memaccess): Document suppression by casting.
14205 2018-01-14  Jakub Jelinek  <jakub@redhat.com>
14207         * config.gcc (i[34567]86-*-*): Remove one duplicate gfniintrin.h
14208         entry from extra_headers.
14209         (x86_64-*-*): Remove two duplicate gfniintrin.h entries from
14210         extra_headers, make the list bitwise identical to the i?86-*-* one.
14212 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
14214         * config/i386/i386.c (ix86_set_indirect_branch_type): Disallow
14215         -mcmodel=large with -mindirect-branch=thunk,
14216         -mindirect-branch=thunk-extern, -mfunction-return=thunk and
14217         -mfunction-return=thunk-extern.
14218         * doc/invoke.texi: Document -mcmodel=large is incompatible with
14219         -mindirect-branch=thunk, -mindirect-branch=thunk-extern,
14220         -mfunction-return=thunk and -mfunction-return=thunk-extern.
14222 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
14224         * config/i386/i386.c (print_reg): Print the name of the full
14225         integer register without '%'.
14226         (ix86_print_operand): Handle 'V'.
14227         * doc/extend.texi: Document 'V' modifier.
14229 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
14231         * config/i386/constraints.md (Bs): Disallow memory operand for
14232         -mindirect-branch-register.
14233         (Bw): Likewise.
14234         * config/i386/predicates.md (indirect_branch_operand): Likewise.
14235         (GOT_memory_operand): Likewise.
14236         (call_insn_operand): Likewise.
14237         (sibcall_insn_operand): Likewise.
14238         (GOT32_symbol_operand): Likewise.
14239         * config/i386/i386.md (indirect_jump): Call convert_memory_address
14240         for -mindirect-branch-register.
14241         (tablejump): Likewise.
14242         (*sibcall_memory): Likewise.
14243         (*sibcall_value_memory): Likewise.
14244         Disallow peepholes of indirect call and jump via memory for
14245         -mindirect-branch-register.
14246         (*call_pop): Replace m with Bw.
14247         (*call_value_pop): Likewise.
14248         (*sibcall_pop_memory): Replace m with Bs.
14249         * config/i386/i386.opt (mindirect-branch-register): New option.
14250         * doc/invoke.texi: Document -mindirect-branch-register option.
14252 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
14254         * config/i386/i386-protos.h (ix86_output_function_return): New.
14255         * config/i386/i386.c (ix86_set_indirect_branch_type): Also
14256         set function_return_type.
14257         (indirect_thunk_name): Add ret_p to indicate thunk for function
14258         return.
14259         (output_indirect_thunk_function): Pass false to
14260         indirect_thunk_name.
14261         (ix86_output_indirect_branch_via_reg): Likewise.
14262         (ix86_output_indirect_branch_via_push): Likewise.
14263         (output_indirect_thunk_function): Create alias for function
14264         return thunk if regno < 0.
14265         (ix86_output_function_return): New function.
14266         (ix86_handle_fndecl_attribute): Handle function_return.
14267         (ix86_attribute_table): Add function_return.
14268         * config/i386/i386.h (machine_function): Add
14269         function_return_type.
14270         * config/i386/i386.md (simple_return_internal): Use
14271         ix86_output_function_return.
14272         (simple_return_internal_long): Likewise.
14273         * config/i386/i386.opt (mfunction-return=): New option.
14274         (indirect_branch): Mention -mfunction-return=.
14275         * doc/extend.texi: Document function_return function attribute.
14276         * doc/invoke.texi: Document -mfunction-return= option.
14278 2018-01-14  H.J. Lu  <hongjiu.lu@intel.com>
14280         * config/i386/i386-opts.h (indirect_branch): New.
14281         * config/i386/i386-protos.h (ix86_output_indirect_jmp): Likewise.
14282         * config/i386/i386.c (ix86_using_red_zone): Disallow red-zone
14283         with local indirect jump when converting indirect call and jump.
14284         (ix86_set_indirect_branch_type): New.
14285         (ix86_set_current_function): Call ix86_set_indirect_branch_type.
14286         (indirectlabelno): New.
14287         (indirect_thunk_needed): Likewise.
14288         (indirect_thunk_bnd_needed): Likewise.
14289         (indirect_thunks_used): Likewise.
14290         (indirect_thunks_bnd_used): Likewise.
14291         (INDIRECT_LABEL): Likewise.
14292         (indirect_thunk_name): Likewise.
14293         (output_indirect_thunk): Likewise.
14294         (output_indirect_thunk_function): Likewise.
14295         (ix86_output_indirect_branch_via_reg): Likewise.
14296         (ix86_output_indirect_branch_via_push): Likewise.
14297         (ix86_output_indirect_branch): Likewise.
14298         (ix86_output_indirect_jmp): Likewise.
14299         (ix86_code_end): Call output_indirect_thunk_function if needed.
14300         (ix86_output_call_insn): Call ix86_output_indirect_branch if
14301         needed.
14302         (ix86_handle_fndecl_attribute): Handle indirect_branch.
14303         (ix86_attribute_table): Add indirect_branch.
14304         * config/i386/i386.h (machine_function): Add indirect_branch_type
14305         and has_local_indirect_jump.
14306         * config/i386/i386.md (indirect_jump): Set has_local_indirect_jump
14307         to true.
14308         (tablejump): Likewise.
14309         (*indirect_jump): Use ix86_output_indirect_jmp.
14310         (*tablejump_1): Likewise.
14311         (simple_return_indirect_internal): Likewise.
14312         * config/i386/i386.opt (mindirect-branch=): New option.
14313         (indirect_branch): New.
14314         (keep): Likewise.
14315         (thunk): Likewise.
14316         (thunk-inline): Likewise.
14317         (thunk-extern): Likewise.
14318         * doc/extend.texi: Document indirect_branch function attribute.
14319         * doc/invoke.texi: Document -mindirect-branch= option.
14321 2018-01-14  Jan Hubicka  <hubicka@ucw.cz>
14323         PR ipa/83051
14324         * ipa-inline.c (edge_badness): Tolerate roundoff errors.
14326 2018-01-14  Richard Sandiford  <richard.sandiford@linaro.org>
14328         * ipa-inline.c (want_inline_small_function_p): Return false if
14329         inlining has already failed with CIF_FINAL_ERROR.
14330         (update_caller_keys): Call want_inline_small_function_p before
14331         can_inline_edge_p.
14332         (update_callee_keys): Likewise.
14334 2018-01-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
14336         * config/rs6000/rs6000-p8swap.c (rs6000_sum_of_two_registers_p):
14337         New function.
14338         (rs6000_quadword_masked_address_p): Likewise.
14339         (quad_aligned_load_p): Likewise.
14340         (quad_aligned_store_p): Likewise.
14341         (const_load_sequence_p): Add comment to describe the outer-most loop.
14342         (mimic_memory_attributes_and_flags): New function.
14343         (rs6000_gen_stvx): Likewise.
14344         (replace_swapped_aligned_store): Likewise.
14345         (rs6000_gen_lvx): Likewise.
14346         (replace_swapped_aligned_load): Likewise.
14347         (replace_swapped_load_constant): Capitalize argument name in
14348         comment describing this function.
14349         (rs6000_analyze_swaps): Add a third pass to search for vector loads
14350         and stores that access quad-word aligned addresses and replace
14351         with stvx or lvx instructions when appropriate.
14352         * config/rs6000/rs6000-protos.h (rs6000_sum_of_two_registers_p):
14353         New function prototype.
14354         (rs6000_quadword_masked_address_p): Likewise.
14355         (rs6000_gen_lvx): Likewise.
14356         (rs6000_gen_stvx): Likewise.
14357         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode>): For modes
14358         VSX_D (V2DF, V2DI), modify this split to select lvx instruction
14359         when memory address is aligned.
14360         (*vsx_le_perm_load_<mode>): For modes VSX_W (V4SF, V4SI), modify
14361         this split to select lvx instruction when memory address is aligned.
14362         (*vsx_le_perm_load_v8hi): Modify this split to select lvx
14363         instruction when memory address is aligned.
14364         (*vsx_le_perm_load_v16qi): Likewise.
14365         (four unnamed splitters): Modify to select the stvx instruction
14366         when memory is aligned.
14368 2018-01-13  Jan Hubicka  <hubicka@ucw.cz>
14370         * predict.c (determine_unlikely_bbs): Handle correctly BBs
14371         which appears in the queue multiple times.
14373 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14374             Alan Hayward  <alan.hayward@arm.com>
14375             David Sherwood  <david.sherwood@arm.com>
14377         * tree-vectorizer.h (vec_lower_bound): New structure.
14378         (_loop_vec_info): Add check_nonzero and lower_bounds.
14379         (LOOP_VINFO_CHECK_NONZERO): New macro.
14380         (LOOP_VINFO_LOWER_BOUNDS): Likewise.
14381         (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Check lower_bounds too.
14382         * tree-data-ref.h (dr_with_seg_len): Add access_size and align
14383         fields.  Make seg_len the distance travelled, not including the
14384         access size.
14385         (dr_direction_indicator): Declare.
14386         (dr_zero_step_indicator): Likewise.
14387         (dr_known_forward_stride_p): Likewise.
14388         * tree-data-ref.c: Include stringpool.h, tree-vrp.h and
14389         tree-ssanames.h.
14390         (runtime_alias_check_p): Allow runtime alias checks with
14391         variable strides.
14392         (operator ==): Compare access_size and align.
14393         (prune_runtime_alias_test_list): Rework for new distinction between
14394         the access_size and seg_len.
14395         (create_intersect_range_checks_index): Likewise.  Cope with polynomial
14396         segment lengths.
14397         (get_segment_min_max): New function.
14398         (create_intersect_range_checks): Use it.
14399         (dr_step_indicator): New function.
14400         (dr_direction_indicator): Likewise.
14401         (dr_zero_step_indicator): Likewise.
14402         (dr_known_forward_stride_p): Likewise.
14403         * tree-loop-distribution.c (data_ref_segment_size): Return
14404         DR_STEP * (niters - 1).
14405         (compute_alias_check_pairs): Update call to the dr_with_seg_len
14406         constructor.
14407         * tree-vect-data-refs.c (vect_check_nonzero_value): New function.
14408         (vect_preserves_scalar_order_p): New function, split out from...
14409         (vect_analyze_data_ref_dependence): ...here.  Check for zero steps.
14410         (vect_vfa_segment_size): Return DR_STEP * (length_factor - 1).
14411         (vect_vfa_access_size): New function.
14412         (vect_vfa_align): Likewise.
14413         (vect_compile_time_alias): Take access_size_a and access_b arguments.
14414         (dump_lower_bound): New function.
14415         (vect_check_lower_bound): Likewise.
14416         (vect_small_gap_p): Likewise.
14417         (vectorizable_with_step_bound_p): Likewise.
14418         (vect_prune_runtime_alias_test_list): Ignore cross-iteration
14419         depencies if the vectorization factor is 1.  Convert the checks
14420         for nonzero steps into checks on the bounds of DR_STEP.  Try using
14421         a bunds check for variable steps if the minimum required step is
14422         relatively small. Update calls to the dr_with_seg_len
14423         constructor and to vect_compile_time_alias.
14424         * tree-vect-loop-manip.c (vect_create_cond_for_lower_bounds): New
14425         function.
14426         (vect_loop_versioning): Call it.
14427         * tree-vect-loop.c (vect_analyze_loop_2): Clear LOOP_VINFO_LOWER_BOUNDS
14428         when retrying.
14429         (vect_estimate_min_profitable_iters): Account for any bounds checks.
14431 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14432             Alan Hayward  <alan.hayward@arm.com>
14433             David Sherwood  <david.sherwood@arm.com>
14435         * doc/sourcebuild.texi (vect_scatter_store): Document.
14436         * optabs.def (scatter_store_optab, mask_scatter_store_optab): New
14437         optabs.
14438         * doc/md.texi (scatter_store@var{m}, mask_scatter_store@var{m}):
14439         Document.
14440         * genopinit.c (main): Add supports_vec_scatter_store and
14441         supports_vec_scatter_store_cached to target_optabs.
14442         * gimple.h (gimple_expr_type): Handle IFN_SCATTER_STORE and
14443         IFN_MASK_SCATTER_STORE.
14444         * internal-fn.def (SCATTER_STORE, MASK_SCATTER_STORE): New internal
14445         functions.
14446         * internal-fn.h (internal_store_fn_p): Declare.
14447         (internal_fn_stored_value_index): Likewise.
14448         * internal-fn.c (scatter_store_direct): New macro.
14449         (expand_scatter_store_optab_fn): New function.
14450         (direct_scatter_store_optab_supported_p): New macro.
14451         (internal_store_fn_p): New function.
14452         (internal_gather_scatter_fn_p): Handle IFN_SCATTER_STORE and
14453         IFN_MASK_SCATTER_STORE.
14454         (internal_fn_mask_index): Likewise.
14455         (internal_fn_stored_value_index): New function.
14456         (internal_gather_scatter_fn_supported_p): Adjust operand numbers
14457         for scatter stores.
14458         * optabs-query.h (supports_vec_scatter_store_p): Declare.
14459         * optabs-query.c (supports_vec_scatter_store_p): New function.
14460         * tree-vectorizer.h (vect_get_store_rhs): Declare.
14461         * tree-vect-data-refs.c (vect_analyze_data_ref_access): Return
14462         true for scatter stores.
14463         (vect_gather_scatter_fn_p): Handle scatter stores too.
14464         (vect_check_gather_scatter): Consider using scatter stores if
14465         supports_vec_scatter_store_p.
14466         * tree-vect-patterns.c (vect_try_gather_scatter_pattern): Handle
14467         scatter stores too.
14468         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
14469         internal_fn_stored_value_index.
14470         (check_load_store_masking): Handle scatter stores too.
14471         (vect_get_store_rhs): Make public.
14472         (vectorizable_call): Use internal_store_fn_p.
14473         (vectorizable_store): Handle scatter store internal functions.
14474         (vect_transform_stmt): Compare GROUP_STORE_COUNT with GROUP_SIZE
14475         when deciding whether the end of the group has been reached.
14476         * config/aarch64/aarch64.md (UNSPEC_ST1_SCATTER): New unspec.
14477         * config/aarch64/aarch64-sve.md (scatter_store<mode>): New expander.
14478         (mask_scatter_store<mode>): New insns.
14480 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14481             Alan Hayward  <alan.hayward@arm.com>
14482             David Sherwood  <david.sherwood@arm.com>
14484         * tree-vectorizer.h (vect_gather_scatter_fn_p): Declare.
14485         * tree-vect-data-refs.c (vect_gather_scatter_fn_p): Make public.
14486         * tree-vect-stmts.c (vect_truncate_gather_scatter_offset): New
14487         function.
14488         (vect_use_strided_gather_scatters_p): Take a masked_p argument.
14489         Use vect_truncate_gather_scatter_offset if we can't treat the
14490         operation as a normal gather load or scatter store.
14491         (get_group_load_store_type): Take the gather_scatter_info
14492         as argument.  Try using a gather load or scatter store for
14493         single-element groups.
14494         (get_load_store_type): Update calls to get_group_load_store_type
14495         and vect_use_strided_gather_scatters_p.
14497 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14498             Alan Hayward  <alan.hayward@arm.com>
14499             David Sherwood  <david.sherwood@arm.com>
14501         * tree-vectorizer.h (vect_create_data_ref_ptr): Take an extra
14502         optional tree argument.
14503         * tree-vect-data-refs.c (vect_check_gather_scatter): Check for
14504         null target hooks.
14505         (vect_create_data_ref_ptr): Take the iv_step as an optional argument,
14506         but continue to use the current value as a fallback.
14507         (bump_vector_ptr): Use operand_equal_p rather than tree_int_cst_compare
14508         to compare the updates.
14509         * tree-vect-stmts.c (vect_use_strided_gather_scatters_p): New function.
14510         (get_load_store_type): Use it when handling a strided access.
14511         (vect_get_strided_load_store_ops): New function.
14512         (vect_get_data_ptr_increment): Likewise.
14513         (vectorizable_load): Handle strided gather loads.  Always pass
14514         a step to vect_create_data_ref_ptr and bump_vector_ptr.
14516 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14517             Alan Hayward  <alan.hayward@arm.com>
14518             David Sherwood  <david.sherwood@arm.com>
14520         * doc/md.texi (gather_load@var{m}): Document.
14521         (mask_gather_load@var{m}): Likewise.
14522         * genopinit.c (main): Add supports_vec_gather_load and
14523         supports_vec_gather_load_cached to target_optabs.
14524         * optabs-tree.c (init_tree_optimization_optabs): Use
14525         ggc_cleared_alloc to allocate target_optabs.
14526         * optabs.def (gather_load_optab, mask_gather_laod_optab): New optabs.
14527         * internal-fn.def (GATHER_LOAD, MASK_GATHER_LOAD): New internal
14528         functions.
14529         * internal-fn.h (internal_load_fn_p): Declare.
14530         (internal_gather_scatter_fn_p): Likewise.
14531         (internal_fn_mask_index): Likewise.
14532         (internal_gather_scatter_fn_supported_p): Likewise.
14533         * internal-fn.c (gather_load_direct): New macro.
14534         (expand_gather_load_optab_fn): New function.
14535         (direct_gather_load_optab_supported_p): New macro.
14536         (direct_internal_fn_optab): New function.
14537         (internal_load_fn_p): Likewise.
14538         (internal_gather_scatter_fn_p): Likewise.
14539         (internal_fn_mask_index): Likewise.
14540         (internal_gather_scatter_fn_supported_p): Likewise.
14541         * optabs-query.c (supports_at_least_one_mode_p): New function.
14542         (supports_vec_gather_load_p): Likewise.
14543         * optabs-query.h (supports_vec_gather_load_p): Declare.
14544         * tree-vectorizer.h (gather_scatter_info): Add ifn, element_type
14545         and memory_type field.
14546         (NUM_PATTERNS): Bump to 15.
14547         * tree-vect-data-refs.c: Include internal-fn.h.
14548         (vect_gather_scatter_fn_p): New function.
14549         (vect_describe_gather_scatter_call): Likewise.
14550         (vect_check_gather_scatter): Try using internal functions for
14551         gather loads.  Recognize existing calls to a gather load function.
14552         (vect_analyze_data_refs): Consider using gather loads if
14553         supports_vec_gather_load_p.
14554         * tree-vect-patterns.c (vect_get_load_store_mask): New function.
14555         (vect_get_gather_scatter_offset_type): Likewise.
14556         (vect_convert_mask_for_vectype): Likewise.
14557         (vect_add_conversion_to_patterm): Likewise.
14558         (vect_try_gather_scatter_pattern): Likewise.
14559         (vect_recog_gather_scatter_pattern): New pattern recognizer.
14560         (vect_vect_recog_func_ptrs): Add it.
14561         * tree-vect-stmts.c (exist_non_indexing_operands_for_use_p): Use
14562         internal_fn_mask_index and internal_gather_scatter_fn_p.
14563         (check_load_store_masking): Take the gather_scatter_info as an
14564         argument and handle gather loads.
14565         (vect_get_gather_scatter_ops): New function.
14566         (vectorizable_call): Check internal_load_fn_p.
14567         (vectorizable_load): Likewise.  Handle gather load internal
14568         functions.
14569         (vectorizable_store): Update call to check_load_store_masking.
14570         * config/aarch64/aarch64.md (UNSPEC_LD1_GATHER): New unspec.
14571         * config/aarch64/iterators.md (SVE_S, SVE_D): New mode iterators.
14572         * config/aarch64/predicates.md (aarch64_gather_scale_operand_w)
14573         (aarch64_gather_scale_operand_d): New predicates.
14574         * config/aarch64/aarch64-sve.md (gather_load<mode>): New expander.
14575         (mask_gather_load<mode>): New insns.
14577 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14578             Alan Hayward  <alan.hayward@arm.com>
14579             David Sherwood  <david.sherwood@arm.com>
14581         * optabs.def (fold_left_plus_optab): New optab.
14582         * doc/md.texi (fold_left_plus_@var{m}): Document.
14583         * internal-fn.def (IFN_FOLD_LEFT_PLUS): New internal function.
14584         * internal-fn.c (fold_left_direct): Define.
14585         (expand_fold_left_optab_fn): Likewise.
14586         (direct_fold_left_optab_supported_p): Likewise.
14587         * fold-const-call.c (fold_const_fold_left): New function.
14588         (fold_const_call): Use it to fold CFN_FOLD_LEFT_PLUS.
14589         * tree-parloops.c (valid_reduction_p): New function.
14590         (gather_scalar_reductions): Use it.
14591         * tree-vectorizer.h (FOLD_LEFT_REDUCTION): New vect_reduction_type.
14592         (vect_finish_replace_stmt): Declare.
14593         * tree-vect-loop.c (fold_left_reduction_fn): New function.
14594         (needs_fold_left_reduction_p): New function, split out from...
14595         (vect_is_simple_reduction): ...here.  Accept reductions that
14596         forbid reassociation, but give them type FOLD_LEFT_REDUCTION.
14597         (vect_force_simple_reduction): Also store the reduction type in
14598         the assignment's STMT_VINFO_REDUC_TYPE.
14599         (vect_model_reduction_cost): Handle FOLD_LEFT_REDUCTION.
14600         (merge_with_identity): New function.
14601         (vect_expand_fold_left): Likewise.
14602         (vectorize_fold_left_reduction): Likewise.
14603         (vectorizable_reduction): Handle FOLD_LEFT_REDUCTION.  Leave the
14604         scalar phi in place for it.  Check for target support and reject
14605         cases that would reassociate the operation.  Defer the transform
14606         phase to vectorize_fold_left_reduction.
14607         * config/aarch64/aarch64.md (UNSPEC_FADDA): New unspec.
14608         * config/aarch64/aarch64-sve.md (fold_left_plus_<mode>): New expander.
14609         (*fold_left_plus_<mode>, *pred_fold_left_plus_<mode>): New insns.
14611 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14613         * tree-if-conv.c (predicate_mem_writes): Remove redundant
14614         call to ifc_temp_var.
14616 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14617             Alan Hayward  <alan.hayward@arm.com>
14618             David Sherwood  <david.sherwood@arm.com>
14620         * target.def (legitimize_address_displacement): Take the original
14621         offset as a poly_int.
14622         * targhooks.h (default_legitimize_address_displacement): Update
14623         accordingly.
14624         * targhooks.c (default_legitimize_address_displacement): Likewise.
14625         * doc/tm.texi: Regenerate.
14626         * lra-constraints.c (base_plus_disp_to_reg): Take the displacement
14627         as an argument, moving assert of ad->disp == ad->disp_term to...
14628         (process_address_1): ...here.  Update calls to base_plus_disp_to_reg.
14629         Try calling targetm.legitimize_address_displacement before expanding
14630         the address rather than afterwards, and adjust for the new interface.
14631         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
14632         Match the new hook interface.  Handle SVE addresses.
14633         * config/sh/sh.c (sh_legitimize_address_displacement): Make the
14634         new hook interface.
14636 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14638         * Makefile.in (OBJS): Add early-remat.o.
14639         * target.def (select_early_remat_modes): New hook.
14640         * doc/tm.texi.in (TARGET_SELECT_EARLY_REMAT_MODES): New hook.
14641         * doc/tm.texi: Regenerate.
14642         * targhooks.h (default_select_early_remat_modes): Declare.
14643         * targhooks.c (default_select_early_remat_modes): New function.
14644         * timevar.def (TV_EARLY_REMAT): New timevar.
14645         * passes.def (pass_early_remat): New pass.
14646         * tree-pass.h (make_pass_early_remat): Declare.
14647         * early-remat.c: New file.
14648         * config/aarch64/aarch64.c (aarch64_select_early_remat_modes): New
14649         function.
14650         (TARGET_SELECT_EARLY_REMAT_MODES): Define.
14652 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14653             Alan Hayward  <alan.hayward@arm.com>
14654             David Sherwood  <david.sherwood@arm.com>
14656         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
14657         vfm1 with a bound_epilog parameter.
14658         (vect_do_peeling): Update calls accordingly, and move the prologue
14659         call earlier in the function.  Treat the base bound_epilog as 0 for
14660         fully-masked loops and retain vf - 1 for other loops.  Add 1 to
14661         this base when peeling for gaps.
14662         * tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
14663         with fully-masked loops.
14664         (vect_estimate_min_profitable_iters): Handle the single peeled
14665         iteration in that case.
14667 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14668             Alan Hayward  <alan.hayward@arm.com>
14669             David Sherwood  <david.sherwood@arm.com>
14671         * tree-vect-data-refs.c (vect_analyze_group_access_1): Allow
14672         single-element interleaving even if the size is not a power of 2.
14673         * tree-vect-stmts.c (get_load_store_type): Disallow elementwise
14674         accesses for single-element interleaving if the group size is
14675         not a power of 2.
14677 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14678             Alan Hayward  <alan.hayward@arm.com>
14679             David Sherwood  <david.sherwood@arm.com>
14681         * doc/md.texi (fold_extract_last_@var{m}): Document.
14682         * doc/sourcebuild.texi (vect_fold_extract_last): Likewise.
14683         * optabs.def (fold_extract_last_optab): New optab.
14684         * internal-fn.def (FOLD_EXTRACT_LAST): New internal function.
14685         * internal-fn.c (fold_extract_direct): New macro.
14686         (expand_fold_extract_optab_fn): Likewise.
14687         (direct_fold_extract_optab_supported_p): Likewise.
14688         * tree-vectorizer.h (EXTRACT_LAST_REDUCTION): New vect_reduction_type.
14689         * tree-vect-loop.c (vect_model_reduction_cost): Handle
14690         EXTRACT_LAST_REDUCTION.
14691         (get_initial_def_for_reduction): Do not create an initial vector
14692         for EXTRACT_LAST_REDUCTION reductions.
14693         (vectorizable_reduction): Leave the scalar phi in place for
14694         EXTRACT_LAST_REDUCTIONs.  Try using EXTRACT_LAST_REDUCTION
14695         ahead of INTEGER_INDUC_COND_REDUCTION.  Do not check for an
14696         epilogue code for EXTRACT_LAST_REDUCTION and defer the
14697         transform phase to vectorizable_condition.
14698         * tree-vect-stmts.c (vect_finish_stmt_generation_1): New function,
14699         split out from...
14700         (vect_finish_stmt_generation): ...here.
14701         (vect_finish_replace_stmt): New function.
14702         (vectorizable_condition): Handle EXTRACT_LAST_REDUCTION.
14703         * config/aarch64/aarch64-sve.md (fold_extract_last_<mode>): New
14704         pattern.
14705         * config/aarch64/aarch64.md (UNSPEC_CLASTB): New unspec.
14707 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14708             Alan Hayward  <alan.hayward@arm.com>
14709             David Sherwood  <david.sherwood@arm.com>
14711         * doc/md.texi (extract_last_@var{m}): Document.
14712         * optabs.def (extract_last_optab): New optab.
14713         * internal-fn.def (EXTRACT_LAST): New internal function.
14714         * internal-fn.c (cond_unary_direct): New macro.
14715         (expand_cond_unary_optab_fn): Likewise.
14716         (direct_cond_unary_optab_supported_p): Likewise.
14717         * tree-vect-loop.c (vectorizable_live_operation): Allow fully-masked
14718         loops using EXTRACT_LAST.
14719         * config/aarch64/aarch64-sve.md (aarch64_sve_lastb<mode>): Rename to...
14720         (extract_last_<mode>): ...this optab.
14721         (vec_extract<mode><Vel>): Update accordingly.
14723 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14724             Alan Hayward  <alan.hayward@arm.com>
14725             David Sherwood  <david.sherwood@arm.com>
14727         * target.def (empty_mask_is_expensive): New hook.
14728         * doc/tm.texi.in (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): New hook.
14729         * doc/tm.texi: Regenerate.
14730         * targhooks.h (default_empty_mask_is_expensive): Declare.
14731         * targhooks.c (default_empty_mask_is_expensive): New function.
14732         * tree-vectorizer.c (vectorize_loops): Only call optimize_mask_stores
14733         if the target says that empty masks are expensive.
14734         * config/aarch64/aarch64.c (aarch64_empty_mask_is_expensive):
14735         New function.
14736         (TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE): Redefine.
14738 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14739             Alan Hayward  <alan.hayward@arm.com>
14740             David Sherwood  <david.sherwood@arm.com>
14742         * tree-vectorizer.h (_loop_vec_info::mask_skip_niters): New field.
14743         (LOOP_VINFO_MASK_SKIP_NITERS): New macro.
14744         (vect_use_loop_mask_for_alignment_p): New function.
14745         (vect_prepare_for_masked_peels, vect_gen_while_not): Declare.
14746         * tree-vect-loop-manip.c (vect_set_loop_masks_directly): Add an
14747         niters_skip argument.  Make sure that the first niters_skip elements
14748         of the first iteration are inactive.
14749         (vect_set_loop_condition_masked): Handle LOOP_VINFO_MASK_SKIP_NITERS.
14750         Update call to vect_set_loop_masks_directly.
14751         (get_misalign_in_elems): New function, split out from...
14752         (vect_gen_prolog_loop_niters): ...here.
14753         (vect_update_init_of_dr): Take a code argument that specifies whether
14754         the adjustment should be added or subtracted.
14755         (vect_update_init_of_drs): Likewise.
14756         (vect_prepare_for_masked_peels): New function.
14757         (vect_do_peeling): Skip prologue peeling if we're using a mask
14758         instead.  Update call to vect_update_inits_of_drs.
14759         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
14760         mask_skip_niters.
14761         (vect_analyze_loop_2): Allow fully-masked loops with peeling for
14762         alignment.  Do not include the number of peeled iterations in
14763         the minimum threshold in that case.
14764         (vectorizable_induction): Adjust the start value down by
14765         LOOP_VINFO_MASK_SKIP_NITERS iterations.
14766         (vect_transform_loop): Call vect_prepare_for_masked_peels.
14767         Take the number of skipped iterations into account when calculating
14768         the loop bounds.
14769         * tree-vect-stmts.c (vect_gen_while_not): New function.
14771 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14772             Alan Hayward  <alan.hayward@arm.com>
14773             David Sherwood  <david.sherwood@arm.com>
14775         * doc/sourcebuild.texi (vect_fully_masked): Document.
14776         * params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
14777         default value to 0.
14778         * tree-vect-loop.c (vect_analyze_loop_costing): New function,
14779         split out from...
14780         (vect_analyze_loop_2): ...here. Don't check the vectorization
14781         factor against the number of loop iterations if the loop is
14782         fully-masked.
14784 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14785             Alan Hayward  <alan.hayward@arm.com>
14786             David Sherwood  <david.sherwood@arm.com>
14788         * tree-ssa-loop-ivopts.c (USE_ADDRESS): Split into...
14789         (USE_REF_ADDRESS, USE_PTR_ADDRESS): ...these new use types.
14790         (dump_groups): Update accordingly.
14791         (iv_use::mem_type): New member variable.
14792         (address_p): New function.
14793         (record_use): Add a mem_type argument and initialize the new
14794         mem_type field.
14795         (record_group_use): Add a mem_type argument.  Use address_p.
14796         Remove obsolete null checks of base_object.  Update call to record_use.
14797         (find_interesting_uses_op): Update call to record_group_use.
14798         (find_interesting_uses_cond): Likewise.
14799         (find_interesting_uses_address): Likewise.
14800         (get_mem_type_for_internal_fn): New function.
14801         (find_address_like_use): Likewise.
14802         (find_interesting_uses_stmt): Try find_address_like_use before
14803         calling find_interesting_uses_op.
14804         (addr_offset_valid_p): Use the iv mem_type field as the type
14805         of the addressed memory.
14806         (add_autoinc_candidates): Likewise.
14807         (get_address_cost): Likewise.
14808         (split_small_address_groups_p): Use address_p.
14809         (split_address_groups): Likewise.
14810         (add_iv_candidate_for_use): Likewise.
14811         (autoinc_possible_for_pair): Likewise.
14812         (rewrite_groups): Likewise.
14813         (get_use_type): Check for USE_REF_ADDRESS instead of USE_ADDRESS.
14814         (determine_group_iv_cost): Update after split of USE_ADDRESS.
14815         (get_alias_ptr_type_for_ptr_address): New function.
14816         (rewrite_use_address): Rewrite address uses in calls that were
14817         identified by find_address_like_use.
14819 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14820             Alan Hayward  <alan.hayward@arm.com>
14821             David Sherwood  <david.sherwood@arm.com>
14823         * expr.c (expand_expr_addr_expr_1): Handle ADDR_EXPRs of
14824         TARGET_MEM_REFs.
14825         * gimple-expr.h (is_gimple_addressable: Likewise.
14826         * gimple-expr.c (is_gimple_address): Likewise.
14827         * internal-fn.c (expand_call_mem_ref): New function.
14828         (expand_mask_load_optab_fn): Use it.
14829         (expand_mask_store_optab_fn): Likewise.
14831 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14832             Alan Hayward  <alan.hayward@arm.com>
14833             David Sherwood  <david.sherwood@arm.com>
14835         * doc/md.texi (cond_add@var{mode}, cond_sub@var{mode})
14836         (cond_and@var{mode}, cond_ior@var{mode}, cond_xor@var{mode})
14837         (cond_smin@var{mode}, cond_smax@var{mode}, cond_umin@var{mode})
14838         (cond_umax@var{mode}): Document.
14839         * optabs.def (cond_add_optab, cond_sub_optab, cond_and_optab)
14840         (cond_ior_optab, cond_xor_optab, cond_smin_optab, cond_smax_optab)
14841         (cond_umin_optab, cond_umax_optab): New optabs.
14842         * internal-fn.def (COND_ADD, COND_SUB, COND_MIN, COND_MAX, COND_AND)
14843         (COND_IOR, COND_XOR): New internal functions.
14844         * internal-fn.h (get_conditional_internal_fn): Declare.
14845         * internal-fn.c (cond_binary_direct): New macro.
14846         (expand_cond_binary_optab_fn): Likewise.
14847         (direct_cond_binary_optab_supported_p): Likewise.
14848         (get_conditional_internal_fn): New function.
14849         * tree-vect-loop.c (vectorizable_reduction): Handle fully-masked loops.
14850         Cope with reduction statements that are vectorized as calls rather
14851         than assignments.
14852         * config/aarch64/aarch64-sve.md (cond_<optab><mode>): New insns.
14853         * config/aarch64/iterators.md (UNSPEC_COND_ADD, UNSPEC_COND_SUB)
14854         (UNSPEC_COND_SMAX, UNSPEC_COND_UMAX, UNSPEC_COND_SMIN)
14855         (UNSPEC_COND_UMIN, UNSPEC_COND_AND, UNSPEC_COND_ORR)
14856         (UNSPEC_COND_EOR): New unspecs.
14857         (optab): Add mappings for them.
14858         (SVE_COND_INT_OP, SVE_COND_FP_OP): New int iterators.
14859         (sve_int_op, sve_fp_op): New int attributes.
14861 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14862             Alan Hayward  <alan.hayward@arm.com>
14863             David Sherwood  <david.sherwood@arm.com>
14865         * optabs.def (while_ult_optab): New optab.
14866         * doc/md.texi (while_ult@var{m}@var{n}): Document.
14867         * internal-fn.def (WHILE_ULT): New internal function.
14868         * internal-fn.h (direct_internal_fn_supported_p): New override
14869         that takes two types as argument.
14870         * internal-fn.c (while_direct): New macro.
14871         (expand_while_optab_fn): New function.
14872         (convert_optab_supported_p): Likewise.
14873         (direct_while_optab_supported_p): New macro.
14874         * wide-int.h (wi::udiv_ceil): New function.
14875         * tree-vectorizer.h (rgroup_masks): New structure.
14876         (vec_loop_masks): New typedef.
14877         (_loop_vec_info): Add masks, mask_compare_type, can_fully_mask_p
14878         and fully_masked_p.
14879         (LOOP_VINFO_CAN_FULLY_MASK_P, LOOP_VINFO_FULLY_MASKED_P)
14880         (LOOP_VINFO_MASKS, LOOP_VINFO_MASK_COMPARE_TYPE): New macros.
14881         (vect_max_vf): New function.
14882         (slpeel_make_loop_iterate_ntimes): Delete.
14883         (vect_set_loop_condition, vect_get_loop_mask_type, vect_gen_while)
14884         (vect_halve_mask_nunits, vect_double_mask_nunits): Declare.
14885         (vect_record_loop_mask, vect_get_loop_mask): Likewise.
14886         * tree-vect-loop-manip.c: Include tree-ssa-loop-niter.h,
14887         internal-fn.h, stor-layout.h and optabs-query.h.
14888         (vect_set_loop_mask): New function.
14889         (add_preheader_seq): Likewise.
14890         (add_header_seq): Likewise.
14891         (interleave_supported_p): Likewise.
14892         (vect_maybe_permute_loop_masks): Likewise.
14893         (vect_set_loop_masks_directly): Likewise.
14894         (vect_set_loop_condition_masked): Likewise.
14895         (vect_set_loop_condition_unmasked): New function, split out from
14896         slpeel_make_loop_iterate_ntimes.
14897         (slpeel_make_loop_iterate_ntimes): Rename to..
14898         (vect_set_loop_condition): ...this.  Use vect_set_loop_condition_masked
14899         for fully-masked loops and vect_set_loop_condition_unmasked otherwise.
14900         (vect_do_peeling): Update call accordingly.
14901         (vect_gen_vector_loop_niters): Use VF as the step for fully-masked
14902         loops.
14903         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
14904         mask_compare_type, can_fully_mask_p and fully_masked_p.
14905         (release_vec_loop_masks): New function.
14906         (_loop_vec_info): Use it to free the loop masks.
14907         (can_produce_all_loop_masks_p): New function.
14908         (vect_get_max_nscalars_per_iter): Likewise.
14909         (vect_verify_full_masking): Likewise.
14910         (vect_analyze_loop_2): Save LOOP_VINFO_CAN_FULLY_MASK_P around
14911         retries, and free the mask rgroups before retrying.  Check loop-wide
14912         reasons for disallowing fully-masked loops.  Make the final decision
14913         about whether use a fully-masked loop or not.
14914         (vect_estimate_min_profitable_iters): Do not assume that peeling
14915         for the number of iterations will be needed for fully-masked loops.
14916         (vectorizable_reduction): Disable fully-masked loops.
14917         (vectorizable_live_operation): Likewise.
14918         (vect_halve_mask_nunits): New function.
14919         (vect_double_mask_nunits): Likewise.
14920         (vect_record_loop_mask): Likewise.
14921         (vect_get_loop_mask): Likewise.
14922         (vect_transform_loop): Handle the case in which the final loop
14923         iteration might handle a partial vector.  Call vect_set_loop_condition
14924         instead of slpeel_make_loop_iterate_ntimes.
14925         * tree-vect-stmts.c: Include tree-ssa-loop-niter.h and gimple-fold.h.
14926         (check_load_store_masking): New function.
14927         (prepare_load_store_mask): Likewise.
14928         (vectorizable_store): Handle fully-masked loops.
14929         (vectorizable_load): Likewise.
14930         (supportable_widening_operation): Use vect_halve_mask_nunits for
14931         booleans.
14932         (supportable_narrowing_operation): Likewise vect_double_mask_nunits.
14933         (vect_gen_while): New function.
14934         * config/aarch64/aarch64.md (umax<mode>3): New expander.
14935         (aarch64_uqdec<mode>): New insn.
14937 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14938             Alan Hayward  <alan.hayward@arm.com>
14939             David Sherwood  <david.sherwood@arm.com>
14941         * optabs.def (reduc_and_scal_optab, reduc_ior_scal_optab)
14942         (reduc_xor_scal_optab): New optabs.
14943         * doc/md.texi (reduc_and_scal_@var{m}, reduc_ior_scal_@var{m})
14944         (reduc_xor_scal_@var{m}): Document.
14945         * doc/sourcebuild.texi (vect_logical_reduc): Likewise.
14946         * internal-fn.def (IFN_REDUC_AND, IFN_REDUC_IOR, IFN_REDUC_XOR): New
14947         internal functions.
14948         * fold-const-call.c (fold_const_call): Handle them.
14949         * tree-vect-loop.c (reduction_fn_for_scalar_code): Return the new
14950         internal functions for BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR.
14951         * config/aarch64/aarch64-sve.md (reduc_<bit_reduc>_scal_<mode>):
14952         (*reduc_<bit_reduc>_scal_<mode>): New patterns.
14953         * config/aarch64/iterators.md (UNSPEC_ANDV, UNSPEC_ORV)
14954         (UNSPEC_XORV): New unspecs.
14955         (optab): Add entries for them.
14956         (BITWISEV): New int iterator.
14957         (bit_reduc_op): New int attributes.
14959 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
14960             Alan Hayward  <alan.hayward@arm.com>
14961             David Sherwood  <david.sherwood@arm.com>
14963         * doc/md.texi (vec_shl_insert_@var{m}): New optab.
14964         * internal-fn.def (VEC_SHL_INSERT): New internal function.
14965         * optabs.def (vec_shl_insert_optab): New optab.
14966         * tree-vectorizer.h (can_duplicate_and_interleave_p): Declare.
14967         (duplicate_and_interleave): Likewise.
14968         * tree-vect-loop.c: Include internal-fn.h.
14969         (neutral_op_for_slp_reduction): New function, split out from
14970         get_initial_defs_for_reduction.
14971         (get_initial_def_for_reduction): Handle option 2 for variable-length
14972         vectors by loading the neutral value into a vector and then shifting
14973         the initial value into element 0.
14974         (get_initial_defs_for_reduction): Replace the code argument with
14975         the neutral value calculated by neutral_op_for_slp_reduction.
14976         Use gimple_build_vector for constant-length vectors.
14977         Use IFN_VEC_SHL_INSERT for variable-length vectors if all
14978         but the first group_size elements have a neutral value.
14979         Use duplicate_and_interleave otherwise.
14980         (vect_create_epilog_for_reduction): Take a neutral_op parameter.
14981         Update call to get_initial_defs_for_reduction.  Handle SLP
14982         reductions for variable-length vectors by creating one vector
14983         result for each scalar result, with the elements associated
14984         with other scalar results stubbed out with the neutral value.
14985         (vectorizable_reduction): Call neutral_op_for_slp_reduction.
14986         Require IFN_VEC_SHL_INSERT for double reductions on
14987         variable-length vectors, or SLP reductions that have
14988         a neutral value.  Require can_duplicate_and_interleave_p
14989         support for variable-length unchained SLP reductions if there
14990         is no neutral value, such as for MIN/MAX reductions.  Also require
14991         the number of vector elements to be a multiple of the number of
14992         SLP statements when doing variable-length unchained SLP reductions.
14993         Update call to vect_create_epilog_for_reduction.
14994         * tree-vect-slp.c (can_duplicate_and_interleave_p): Make public
14995         and remove initial values.
14996         (duplicate_and_interleave): Make public.
14997         * config/aarch64/aarch64.md (UNSPEC_INSR): New unspec.
14998         * config/aarch64/aarch64-sve.md (vec_shl_insert_<mode>): New insn.
15000 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15001             Alan Hayward  <alan.hayward@arm.com>
15002             David Sherwood  <david.sherwood@arm.com>
15004         * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
15005         (can_duplicate_and_interleave_p): New function.
15006         (vect_get_and_check_slp_defs): Take the vector of statements
15007         rather than just the current one.  Remove excess parentheses.
15008         Restriction rejectinon of vect_constant_def and vect_external_def
15009         for variable-length vectors to boolean types, or types for which
15010         can_duplicate_and_interleave_p is false.
15011         (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
15012         (duplicate_and_interleave): New function.
15013         (vect_get_constant_vectors): Use gimple_build_vector for
15014         constant-length vectors and suitable variable-length constant
15015         vectors.  Use duplicate_and_interleave for other variable-length
15016         vectors.  Don't defer the update when inserting new statements.
15018 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15019             Alan Hayward  <alan.hayward@arm.com>
15020             David Sherwood  <david.sherwood@arm.com>
15022         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
15023         min_profitable_iters doesn't go negative.
15025 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15026             Alan Hayward  <alan.hayward@arm.com>
15027             David Sherwood  <david.sherwood@arm.com>
15029         * doc/md.texi (vec_mask_load_lanes@var{m}@var{n}): Document.
15030         (vec_mask_store_lanes@var{m}@var{n}): Likewise.
15031         * optabs.def (vec_mask_load_lanes_optab): New optab.
15032         (vec_mask_store_lanes_optab): Likewise.
15033         * internal-fn.def (MASK_LOAD_LANES): New internal function.
15034         (MASK_STORE_LANES): Likewise.
15035         * internal-fn.c (mask_load_lanes_direct): New macro.
15036         (mask_store_lanes_direct): Likewise.
15037         (expand_mask_load_optab_fn): Handle masked operations.
15038         (expand_mask_load_lanes_optab_fn): New macro.
15039         (expand_mask_store_optab_fn): Handle masked operations.
15040         (expand_mask_store_lanes_optab_fn): New macro.
15041         (direct_mask_load_lanes_optab_supported_p): Likewise.
15042         (direct_mask_store_lanes_optab_supported_p): Likewise.
15043         * tree-vectorizer.h (vect_store_lanes_supported): Take a masked_p
15044         parameter.
15045         (vect_load_lanes_supported): Likewise.
15046         * tree-vect-data-refs.c (strip_conversion): New function.
15047         (can_group_stmts_p): Likewise.
15048         (vect_analyze_data_ref_accesses): Use it instead of checking
15049         for a pair of assignments.
15050         (vect_store_lanes_supported): Take a masked_p parameter.
15051         (vect_load_lanes_supported): Likewise.
15052         * tree-vect-loop.c (vect_analyze_loop_2): Update calls to
15053         vect_store_lanes_supported and vect_load_lanes_supported.
15054         * tree-vect-slp.c (vect_analyze_slp_instance): Likewise.
15055         * tree-vect-stmts.c (get_group_load_store_type): Take a masked_p
15056         parameter.  Don't allow gaps for masked accesses.
15057         Use vect_get_store_rhs.  Update calls to vect_store_lanes_supported
15058         and vect_load_lanes_supported.
15059         (get_load_store_type): Take a masked_p parameter and update
15060         call to get_group_load_store_type.
15061         (vectorizable_store): Update call to get_load_store_type.
15062         Handle IFN_MASK_STORE_LANES.
15063         (vectorizable_load): Update call to get_load_store_type.
15064         Handle IFN_MASK_LOAD_LANES.
15066 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15067             Alan Hayward  <alan.hayward@arm.com>
15068             David Sherwood  <david.sherwood@arm.com>
15070         * config/aarch64/aarch64-modes.def: Define x2, x3 and x4 vector
15071         modes for SVE.
15072         * config/aarch64/aarch64-protos.h
15073         (aarch64_sve_struct_memory_operand_p): Declare.
15074         * config/aarch64/iterators.md (SVE_STRUCT): New mode iterator.
15075         (vector_count, insn_length, VSINGLE, vsingle): New mode attributes.
15076         (VPRED, vpred): Handle SVE structure modes.
15077         * config/aarch64/constraints.md (Utx): New constraint.
15078         * config/aarch64/predicates.md (aarch64_sve_struct_memory_operand)
15079         (aarch64_sve_struct_nonimmediate_operand): New predicates.
15080         * config/aarch64/aarch64.md (UNSPEC_LDN, UNSPEC_STN): New unspecs.
15081         * config/aarch64/aarch64-sve.md (mov<mode>, *aarch64_sve_mov<mode>_le)
15082         (*aarch64_sve_mov<mode>_be, pred_mov<mode>): New patterns for
15083         structure modes.  Split into pieces after RA.
15084         (vec_load_lanes<mode><vsingle>, vec_mask_load_lanes<mode><vsingle>)
15085         (vec_store_lanes<mode><vsingle>, vec_mask_store_lanes<mode><vsingle>):
15086         New patterns.
15087         * config/aarch64/aarch64.c (aarch64_classify_vector_mode): Handle
15088         SVE structure modes.
15089         (aarch64_classify_address): Likewise.
15090         (sizetochar): Move earlier in file.
15091         (aarch64_print_operand): Handle SVE register lists.
15092         (aarch64_array_mode): New function.
15093         (aarch64_sve_struct_memory_operand_p): Likewise.
15094         (TARGET_ARRAY_MODE): Redefine.
15096 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15097             Alan Hayward  <alan.hayward@arm.com>
15098             David Sherwood  <david.sherwood@arm.com>
15100         * target.def (array_mode): New target hook.
15101         * doc/tm.texi.in (TARGET_ARRAY_MODE): New hook.
15102         * doc/tm.texi: Regenerate.
15103         * hooks.h (hook_optmode_mode_uhwi_none): Declare.
15104         * hooks.c (hook_optmode_mode_uhwi_none): New function.
15105         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Use
15106         targetm.array_mode.
15107         * stor-layout.c (mode_for_array): Likewise.  Support polynomial
15108         type sizes.
15110 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15111             Alan Hayward  <alan.hayward@arm.com>
15112             David Sherwood  <david.sherwood@arm.com>
15114         * fold-const.c (fold_binary_loc): Check the argument types
15115         rather than the result type when testing for a vector operation.
15117 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15119         * doc/tm.texi.in (DWARF_LAZY_REGISTER_VALUE): Document.
15120         * doc/tm.texi: Regenerate.
15122 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15123             Alan Hayward  <alan.hayward@arm.com>
15124             David Sherwood  <david.sherwood@arm.com>
15126         * doc/invoke.texi (-msve-vector-bits=): Document new option.
15127         (sve): Document new AArch64 extension.
15128         * doc/md.texi (w): Extend the description of the AArch64
15129         constraint to include SVE vectors.
15130         (Upl, Upa): Document new AArch64 predicate constraints.
15131         * config/aarch64/aarch64-opts.h (aarch64_sve_vector_bits_enum): New
15132         enum.
15133         * config/aarch64/aarch64.opt (sve_vector_bits): New enum.
15134         (msve-vector-bits=): New option.
15135         * config/aarch64/aarch64-option-extensions.def (fp, simd): Disable
15136         SVE when these are disabled.
15137         (sve): New extension.
15138         * config/aarch64/aarch64-modes.def: Define SVE vector and predicate
15139         modes.  Adjust their number of units based on aarch64_sve_vg.
15140         (MAX_BITSIZE_MODE_ANY_MODE): Define.
15141         * config/aarch64/aarch64-protos.h (ADDR_QUERY_ANY): New
15142         aarch64_addr_query_type.
15143         (aarch64_const_vec_all_same_in_range_p, aarch64_sve_pred_mode)
15144         (aarch64_sve_cnt_immediate_p, aarch64_sve_addvl_addpl_immediate_p)
15145         (aarch64_sve_inc_dec_immediate_p, aarch64_add_offset_temporaries)
15146         (aarch64_split_add_offset, aarch64_output_sve_cnt_immediate)
15147         (aarch64_output_sve_addvl_addpl, aarch64_output_sve_inc_dec_immediate)
15148         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): Declare.
15149         (aarch64_simd_imm_zero_p): Delete.
15150         (aarch64_check_zero_based_sve_index_immediate): Declare.
15151         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
15152         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
15153         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
15154         (aarch64_sve_float_mul_immediate_p): Likewise.
15155         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
15156         rather than an rtx.
15157         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): Declare.
15158         (aarch64_expand_mov_immediate): Take a gen_vec_duplicate callback.
15159         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move): Declare.
15160         (aarch64_expand_sve_vec_cmp_int, aarch64_expand_sve_vec_cmp_float)
15161         (aarch64_expand_sve_vcond, aarch64_expand_sve_vec_perm): Declare.
15162         (aarch64_regmode_natural_size): Likewise.
15163         * config/aarch64/aarch64.h (AARCH64_FL_SVE): New macro.
15164         (AARCH64_FL_V8_3, AARCH64_FL_RCPC, AARCH64_FL_DOTPROD): Shift
15165         left one place.
15166         (AARCH64_ISA_SVE, TARGET_SVE): New macros.
15167         (FIXED_REGISTERS, CALL_USED_REGISTERS, REGISTER_NAMES): Add entries
15168         for VG and the SVE predicate registers.
15169         (V_ALIASES): Add a "z"-prefixed alias.
15170         (FIRST_PSEUDO_REGISTER): Change to P15_REGNUM + 1.
15171         (AARCH64_DWARF_VG, AARCH64_DWARF_P0): New macros.
15172         (PR_REGNUM_P, PR_LO_REGNUM_P): Likewise.
15173         (PR_LO_REGS, PR_HI_REGS, PR_REGS): New reg_classes.
15174         (REG_CLASS_NAMES): Add entries for them.
15175         (REG_CLASS_CONTENTS): Likewise.  Update ALL_REGS to include VG
15176         and the predicate registers.
15177         (aarch64_sve_vg): Declare.
15178         (BITS_PER_SVE_VECTOR, BYTES_PER_SVE_VECTOR, BYTES_PER_SVE_PRED)
15179         (SVE_BYTE_MODE, MAX_COMPILE_TIME_VEC_BYTES): New macros.
15180         (REGMODE_NATURAL_SIZE): Define.
15181         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Handle
15182         SVE macros.
15183         * config/aarch64/aarch64.c: Include cfgrtl.h.
15184         (simd_immediate_info): Add a constructor for series vectors,
15185         and an associated step field.
15186         (aarch64_sve_vg): New variable.
15187         (aarch64_dbx_register_number): Handle VG and the predicate registers.
15188         (aarch64_vect_struct_mode_p, aarch64_vector_mode_p): Delete.
15189         (VEC_ADVSIMD, VEC_SVE_DATA, VEC_SVE_PRED, VEC_STRUCT, VEC_ANY_SVE)
15190         (VEC_ANY_DATA, VEC_STRUCT): New constants.
15191         (aarch64_advsimd_struct_mode_p, aarch64_sve_pred_mode_p)
15192         (aarch64_classify_vector_mode, aarch64_vector_data_mode_p)
15193         (aarch64_sve_data_mode_p, aarch64_sve_pred_mode)
15194         (aarch64_get_mask_mode): New functions.
15195         (aarch64_hard_regno_nregs): Handle SVE data modes for FP_REGS
15196         and FP_LO_REGS.  Handle PR_REGS, PR_LO_REGS and PR_HI_REGS.
15197         (aarch64_hard_regno_mode_ok): Handle VG.  Also handle the SVE
15198         predicate modes and predicate registers.  Explicitly restrict
15199         GPRs to modes of 16 bytes or smaller.  Only allow FP registers
15200         to store a vector mode if it is recognized by
15201         aarch64_classify_vector_mode.
15202         (aarch64_regmode_natural_size): New function.
15203         (aarch64_hard_regno_caller_save_mode): Return the original mode
15204         for predicates.
15205         (aarch64_sve_cnt_immediate_p, aarch64_output_sve_cnt_immediate)
15206         (aarch64_sve_addvl_addpl_immediate_p, aarch64_output_sve_addvl_addpl)
15207         (aarch64_sve_inc_dec_immediate_p, aarch64_output_sve_inc_dec_immediate)
15208         (aarch64_add_offset_1_temporaries, aarch64_offset_temporaries): New
15209         functions.
15210         (aarch64_add_offset): Add a temp2 parameter.  Assert that temp1
15211         does not overlap dest if the function is frame-related.  Handle
15212         SVE constants.
15213         (aarch64_split_add_offset): New function.
15214         (aarch64_add_sp, aarch64_sub_sp): Add temp2 parameters and pass
15215         them aarch64_add_offset.
15216         (aarch64_allocate_and_probe_stack_space): Add a temp2 parameter
15217         and update call to aarch64_sub_sp.
15218         (aarch64_add_cfa_expression): New function.
15219         (aarch64_expand_prologue): Pass extra temporary registers to the
15220         functions above.  Handle the case in which we need to emit new
15221         DW_CFA_expressions for registers that were originally saved
15222         relative to the stack pointer, but now have to be expressed
15223         relative to the frame pointer.
15224         (aarch64_output_mi_thunk): Pass extra temporary registers to the
15225         functions above.
15226         (aarch64_expand_epilogue): Likewise.  Prevent inheritance of
15227         IP0 and IP1 values for SVE frames.
15228         (aarch64_expand_vec_series): New function.
15229         (aarch64_expand_sve_widened_duplicate): Likewise.
15230         (aarch64_expand_sve_const_vector): Likewise.
15231         (aarch64_expand_mov_immediate): Add a gen_vec_duplicate parameter.
15232         Handle SVE constants.  Use emit_move_insn to move a force_const_mem
15233         into the register, rather than emitting a SET directly.
15234         (aarch64_emit_sve_pred_move, aarch64_expand_sve_mem_move)
15235         (aarch64_get_reg_raw_mode, offset_4bit_signed_scaled_p)
15236         (offset_6bit_unsigned_scaled_p, aarch64_offset_7bit_signed_scaled_p)
15237         (offset_9bit_signed_scaled_p): New functions.
15238         (aarch64_replicate_bitmask_imm): New function.
15239         (aarch64_bitmask_imm): Use it.
15240         (aarch64_cannot_force_const_mem): Reject expressions involving
15241         a CONST_POLY_INT.  Update call to aarch64_classify_symbol.
15242         (aarch64_classify_index): Handle SVE indices, by requiring
15243         a plain register index with a scale that matches the element size.
15244         (aarch64_classify_address): Handle SVE addresses.  Assert that
15245         the mode of the address is VOIDmode or an integer mode.
15246         Update call to aarch64_classify_symbol.
15247         (aarch64_classify_symbolic_expression): Update call to
15248         aarch64_classify_symbol.
15249         (aarch64_const_vec_all_in_range_p): New function.
15250         (aarch64_print_vector_float_operand): Likewise.
15251         (aarch64_print_operand): Handle 'N' and 'C'.  Use "zN" rather than
15252         "vN" for FP registers with SVE modes.  Handle (const ...) vectors
15253         and the FP immediates 1.0 and 0.5.
15254         (aarch64_print_address_internal): Handle SVE addresses.
15255         (aarch64_print_operand_address): Use ADDR_QUERY_ANY.
15256         (aarch64_regno_regclass): Handle predicate registers.
15257         (aarch64_secondary_reload): Handle big-endian reloads of SVE
15258         data modes.
15259         (aarch64_class_max_nregs): Handle SVE modes and predicate registers.
15260         (aarch64_rtx_costs): Check for ADDVL and ADDPL instructions.
15261         (aarch64_convert_sve_vector_bits): New function.
15262         (aarch64_override_options): Use it to handle -msve-vector-bits=.
15263         (aarch64_classify_symbol): Take the offset as a HOST_WIDE_INT
15264         rather than an rtx.
15265         (aarch64_legitimate_constant_p): Use aarch64_classify_vector_mode.
15266         Handle SVE vector and predicate modes.  Accept VL-based constants
15267         that need only one temporary register, and VL offsets that require
15268         no temporary registers.
15269         (aarch64_conditional_register_usage): Mark the predicate registers
15270         as fixed if SVE isn't available.
15271         (aarch64_vector_mode_supported_p): Use aarch64_classify_vector_mode.
15272         Return true for SVE vector and predicate modes.
15273         (aarch64_simd_container_mode): Take the number of bits as a poly_int64
15274         rather than an unsigned int.  Handle SVE modes.
15275         (aarch64_preferred_simd_mode): Update call accordingly.  Handle
15276         SVE modes.
15277         (aarch64_autovectorize_vector_sizes): Add BYTES_PER_SVE_VECTOR
15278         if SVE is enabled.
15279         (aarch64_sve_index_immediate_p, aarch64_sve_arith_immediate_p)
15280         (aarch64_sve_bitmask_immediate_p, aarch64_sve_dup_immediate_p)
15281         (aarch64_sve_cmp_immediate_p, aarch64_sve_float_arith_immediate_p)
15282         (aarch64_sve_float_mul_immediate_p): New functions.
15283         (aarch64_sve_valid_immediate): New function.
15284         (aarch64_simd_valid_immediate): Use it as the fallback for SVE vectors.
15285         Explicitly reject structure modes.  Check for INDEX constants.
15286         Handle PTRUE and PFALSE constants.
15287         (aarch64_check_zero_based_sve_index_immediate): New function.
15288         (aarch64_simd_imm_zero_p): Delete.
15289         (aarch64_mov_operand_p): Use aarch64_simd_valid_immediate for
15290         vector modes.  Accept constants in the range of CNT[BHWD].
15291         (aarch64_simd_scalar_immediate_valid_for_move): Explicitly
15292         ask for an Advanced SIMD mode.
15293         (aarch64_sve_ld1r_operand_p, aarch64_sve_ldr_operand_p): New functions.
15294         (aarch64_simd_vector_alignment): Handle SVE predicates.
15295         (aarch64_vectorize_preferred_vector_alignment): New function.
15296         (aarch64_simd_vector_alignment_reachable): Use it instead of
15297         the vector size.
15298         (aarch64_shift_truncation_mask): Use aarch64_vector_data_mode_p.
15299         (aarch64_output_sve_mov_immediate, aarch64_output_ptrue): New
15300         functions.
15301         (MAX_VECT_LEN): Delete.
15302         (expand_vec_perm_d): Add a vec_flags field.
15303         (emit_unspec2, aarch64_expand_sve_vec_perm): New functions.
15304         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
15305         (aarch64_evpc_ext): Don't apply a big-endian lane correction
15306         for SVE modes.
15307         (aarch64_evpc_rev): Rename to...
15308         (aarch64_evpc_rev_local): ...this.  Use a predicated operation for SVE.
15309         (aarch64_evpc_rev_global): New function.
15310         (aarch64_evpc_dup): Enforce a 64-byte range for SVE DUP.
15311         (aarch64_evpc_tbl): Use MAX_COMPILE_TIME_VEC_BYTES instead of
15312         MAX_VECT_LEN.
15313         (aarch64_evpc_sve_tbl): New function.
15314         (aarch64_expand_vec_perm_const_1): Update after rename of
15315         aarch64_evpc_rev.  Handle SVE permutes too, trying
15316         aarch64_evpc_rev_global and using aarch64_evpc_sve_tbl rather
15317         than aarch64_evpc_tbl.
15318         (aarch64_vectorize_vec_perm_const): Initialize vec_flags.
15319         (aarch64_sve_cmp_operand_p, aarch64_unspec_cond_code)
15320         (aarch64_gen_unspec_cond, aarch64_expand_sve_vec_cmp_int)
15321         (aarch64_emit_unspec_cond, aarch64_emit_unspec_cond_or)
15322         (aarch64_emit_inverted_unspec_cond, aarch64_expand_sve_vec_cmp_float)
15323         (aarch64_expand_sve_vcond): New functions.
15324         (aarch64_modes_tieable_p): Use aarch64_vector_data_mode_p instead
15325         of aarch64_vector_mode_p.
15326         (aarch64_dwarf_poly_indeterminate_value): New function.
15327         (aarch64_compute_pressure_classes): Likewise.
15328         (aarch64_can_change_mode_class): Likewise.
15329         (TARGET_GET_RAW_RESULT_MODE, TARGET_GET_RAW_ARG_MODE): Redefine.
15330         (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Likewise.
15331         (TARGET_VECTORIZE_GET_MASK_MODE): Likewise.
15332         (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Likewise.
15333         (TARGET_COMPUTE_PRESSURE_CLASSES): Likewise.
15334         (TARGET_CAN_CHANGE_MODE_CLASS): Likewise.
15335         * config/aarch64/constraints.md (Upa, Upl, Uav, Uat, Usv, Usi, Utr)
15336         (Uty, Dm, vsa, vsc, vsd, vsi, vsn, vsl, vsm, vsA, vsM, vsN): New
15337         constraints.
15338         (Dn, Dl, Dr): Accept const as well as const_vector.
15339         (Dz): Likewise.  Compare against CONST0_RTX.
15340         * config/aarch64/iterators.md: Refer to "Advanced SIMD" instead
15341         of "vector" where appropriate.
15342         (SVE_ALL, SVE_BH, SVE_BHS, SVE_BHSI, SVE_HSDI, SVE_HSF, SVE_SD)
15343         (SVE_SDI, SVE_I, SVE_F, PRED_ALL, PRED_BHS): New mode iterators.
15344         (UNSPEC_SEL, UNSPEC_ANDF, UNSPEC_IORF, UNSPEC_XORF, UNSPEC_COND_LT)
15345         (UNSPEC_COND_LE, UNSPEC_COND_EQ, UNSPEC_COND_NE, UNSPEC_COND_GE)
15346         (UNSPEC_COND_GT, UNSPEC_COND_LO, UNSPEC_COND_LS, UNSPEC_COND_HS)
15347         (UNSPEC_COND_HI, UNSPEC_COND_UO): New unspecs.
15348         (Vetype, VEL, Vel, VWIDE, Vwide, vw, vwcore, V_INT_EQUIV)
15349         (v_int_equiv): Extend to SVE modes.
15350         (Vesize, V128, v128, Vewtype, V_FP_EQUIV, v_fp_equiv, VPRED): New
15351         mode attributes.
15352         (LOGICAL_OR, SVE_INT_UNARY, SVE_FP_UNARY): New code iterators.
15353         (optab): Handle popcount, smin, smax, umin, umax, abs and sqrt.
15354         (logical_nn, lr, sve_int_op, sve_fp_op): New code attributs.
15355         (LOGICALF, OPTAB_PERMUTE, UNPACK, UNPACK_UNSIGNED, SVE_COND_INT_CMP)
15356         (SVE_COND_FP_CMP): New int iterators.
15357         (perm_hilo): Handle the new unpack unspecs.
15358         (optab, logicalf_op, su, perm_optab, cmp_op, imm_con): New int
15359         attributes.
15360         * config/aarch64/predicates.md (aarch64_sve_cnt_immediate)
15361         (aarch64_sve_addvl_addpl_immediate, aarch64_split_add_offset_immediate)
15362         (aarch64_pluslong_or_poly_operand, aarch64_nonmemory_operand)
15363         (aarch64_equality_operator, aarch64_constant_vector_operand)
15364         (aarch64_sve_ld1r_operand, aarch64_sve_ldr_operand): New predicates.
15365         (aarch64_sve_nonimmediate_operand): Likewise.
15366         (aarch64_sve_general_operand): Likewise.
15367         (aarch64_sve_dup_operand, aarch64_sve_arith_immediate): Likewise.
15368         (aarch64_sve_sub_arith_immediate, aarch64_sve_inc_dec_immediate)
15369         (aarch64_sve_logical_immediate, aarch64_sve_mul_immediate): Likewise.
15370         (aarch64_sve_dup_immediate, aarch64_sve_cmp_vsc_immediate): Likewise.
15371         (aarch64_sve_cmp_vsd_immediate, aarch64_sve_index_immediate): Likewise.
15372         (aarch64_sve_float_arith_immediate): Likewise.
15373         (aarch64_sve_float_arith_with_sub_immediate): Likewise.
15374         (aarch64_sve_float_mul_immediate, aarch64_sve_arith_operand): Likewise.
15375         (aarch64_sve_add_operand, aarch64_sve_logical_operand): Likewise.
15376         (aarch64_sve_lshift_operand, aarch64_sve_rshift_operand): Likewise.
15377         (aarch64_sve_mul_operand, aarch64_sve_cmp_vsc_operand): Likewise.
15378         (aarch64_sve_cmp_vsd_operand, aarch64_sve_index_operand): Likewise.
15379         (aarch64_sve_float_arith_operand): Likewise.
15380         (aarch64_sve_float_arith_with_sub_operand): Likewise.
15381         (aarch64_sve_float_mul_operand): Likewise.
15382         (aarch64_sve_vec_perm_operand): Likewise.
15383         (aarch64_pluslong_operand): Include aarch64_sve_addvl_addpl_immediate.
15384         (aarch64_mov_operand): Accept const_poly_int and const_vector.
15385         (aarch64_simd_lshift_imm, aarch64_simd_rshift_imm): Accept const
15386         as well as const_vector.
15387         (aarch64_simd_imm_zero, aarch64_simd_imm_minus_one): Move earlier
15388         in file.  Use CONST0_RTX and CONSTM1_RTX.
15389         (aarch64_simd_or_scalar_imm_zero): Likewise.  Add match_codes.
15390         (aarch64_simd_reg_or_zero): Accept const as well as const_vector.
15391         Use aarch64_simd_imm_zero.
15392         * config/aarch64/aarch64-sve.md: New file.
15393         * config/aarch64/aarch64.md: Include it.
15394         (VG_REGNUM, P0_REGNUM, P7_REGNUM, P15_REGNUM): New register numbers.
15395         (UNSPEC_REV, UNSPEC_LD1_SVE, UNSPEC_ST1_SVE, UNSPEC_MERGE_PTRUE)
15396         (UNSPEC_PTEST_PTRUE, UNSPEC_UNPACKSHI, UNSPEC_UNPACKUHI)
15397         (UNSPEC_UNPACKSLO, UNSPEC_UNPACKULO, UNSPEC_PACK)
15398         (UNSPEC_FLOAT_CONVERT, UNSPEC_WHILE_LO): New unspec constants.
15399         (sve): New attribute.
15400         (enabled): Disable instructions with the sve attribute unless
15401         TARGET_SVE.
15402         (movqi, movhi): Pass CONST_POLY_INT operaneds through
15403         aarch64_expand_mov_immediate.
15404         (*mov<mode>_aarch64, *movsi_aarch64, *movdi_aarch64): Handle
15405         CNT[BHSD] immediates.
15406         (movti): Split CONST_POLY_INT moves into two halves.
15407         (add<mode>3): Accept aarch64_pluslong_or_poly_operand.
15408         Split additions that need a temporary here if the destination
15409         is the stack pointer.
15410         (*add<mode>3_aarch64): Handle ADDVL and ADDPL immediates.
15411         (*add<mode>3_poly_1): New instruction.
15412         (set_clobber_cc): New expander.
15414 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15416         * simplify-rtx.c (simplify_immed_subreg): Add an inner_bytes
15417         parameter and use it instead of GET_MODE_SIZE (innermode).  Use
15418         inner_bytes * BITS_PER_UNIT instead of GET_MODE_BITSIZE (innermode).
15419         Use CEIL (inner_bytes, GET_MODE_UNIT_SIZE (innermode)) instead of
15420         GET_MODE_NUNITS (innermode).  Also add a first_elem parameter.
15421         Change innermode from fixed_mode_size to machine_mode.
15422         (simplify_subreg): Update call accordingly.  Handle a constant-sized
15423         subreg of a variable-length CONST_VECTOR.
15425 2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
15426             Alan Hayward  <alan.hayward@arm.com>
15427             David Sherwood  <david.sherwood@arm.com>
15429         * tree-ssa-address.c (mem_ref_valid_without_offset_p): New function.
15430         (add_offset_to_base): New function, split out from...
15431         (create_mem_ref): ...here.  When handling a scale other than 1,
15432         check first whether the address is valid without the offset.
15433         Add it into the base if so, leaving the index and scale as-is.
15435 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
15437         PR c++/83778
15438         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Call
15439         fold_for_warn before checking if arg2 is INTEGER_CST.
15441 2018-01-12  Segher Boessenkool  <segher@kernel.crashing.org>
15443         * config/rs6000/predicates.md (load_multiple_operation): Delete.
15444         (store_multiple_operation): Delete.
15445         * config/rs6000/rs6000-cpus.def (601): Remove MASK_STRING.
15446         * config/rs6000/rs6000-protos.h (rs6000_output_load_multiple): Delete.
15447         * config/rs6000/rs6000-string.c (expand_block_move): Delete everything
15448         guarded by TARGET_STRING.
15449         (rs6000_output_load_multiple): Delete.
15450         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
15451         OPTION_MASK_STRING / TARGET_STRING handling.
15452         (print_operand) <'N', 'O'>: Add comment that these are unused now.
15453         (const rs6000_opt_masks) <"string">: Change mask to 0.
15454         * config/rs6000/rs6000.h (TARGET_DEFAULT): Remove MASK_STRING.
15455         (MASK_STRING): Delete.
15456         * config/rs6000/rs6000.md (*mov<mode>_string): Delete TARGET_STRING
15457         parts.  Simplify.
15458         (load_multiple): Delete.
15459         (*ldmsi8): Delete.
15460         (*ldmsi7): Delete.
15461         (*ldmsi6): Delete.
15462         (*ldmsi5): Delete.
15463         (*ldmsi4): Delete.
15464         (*ldmsi3): Delete.
15465         (store_multiple): Delete.
15466         (*stmsi8): Delete.
15467         (*stmsi7): Delete.
15468         (*stmsi6): Delete.
15469         (*stmsi5): Delete.
15470         (*stmsi4): Delete.
15471         (*stmsi3): Delete.
15472         (movmemsi_8reg): Delete.
15473         (corresponding unnamed define_insn): Delete.
15474         (movmemsi_6reg): Delete.
15475         (corresponding unnamed define_insn): Delete.
15476         (movmemsi_4reg): Delete.
15477         (corresponding unnamed define_insn): Delete.
15478         (movmemsi_2reg): Delete.
15479         (corresponding unnamed define_insn): Delete.
15480         (movmemsi_1reg): Delete.
15481         (corresponding unnamed define_insn): Delete.
15482         * config/rs6000/rs6000.opt (mno-string): New.
15483         (mstring): Replace by deprecation warning stub.
15484         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mstring.
15486 2018-01-12  Jakub Jelinek  <jakub@redhat.com>
15488         * regrename.c (regrename_do_replace): If replacing the same
15489         reg multiple times, try to reuse last created gen_raw_REG.
15491         PR debug/81155
15492         * bb-reorder.c (pass_partition_blocks::gate): In lto don't partition
15493         main to workaround a bug in GDB.
15495 2018-01-12  Tom de Vries  <tom@codesourcery.com>
15497         PR target/83737
15498         * config.gcc (nvptx*-*-*): Set use_gcc_stdint=wrap.
15500 2018-01-12  Vladimir Makarov  <vmakarov@redhat.com>
15502         PR rtl-optimization/80481
15503         * ira-color.c (get_cap_member): New function.
15504         (allocnos_conflict_by_live_ranges_p): Use it.
15505         (slot_coalesced_allocno_live_ranges_intersect_p): Add assert.
15506         (setup_slot_coalesced_allocno_live_ranges): Ditto.
15508 2018-01-12  Uros Bizjak  <ubizjak@gmail.com>
15510         PR target/83628
15511         * config/alpha/alpha.md (*saddsi_1): New insn_ans_split pattern.
15512         (*saddl_se_1): Ditto.
15513         (*ssubsi_1): Ditto.
15514         (*ssubl_se_1): Ditto.
15516 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
15518         * tree-predcom.c (aff_combination_dr_offset): Use wi::to_poly_widest
15519         rather than wi::to_widest for DR_INITs.
15520         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Use
15521         wi::to_poly_offset rather than wi::to_offset for DR_INIT.
15522         (vect_analyze_data_ref_accesses): Require both DR_INITs to be
15523         INTEGER_CSTs.
15524         (vect_analyze_group_access_1): Note that here.
15526 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
15528         * tree-vectorizer.c (get_vec_alignment_for_array_type): Handle
15529         polynomial type sizes.
15531 2018-01-12  Richard Sandiford  <richard.sandiford@linaro.org>
15533         * gimplify.c (gimple_add_tmp_var_fn): Allow variables to have a
15534         poly_uint64 size, rather than requiring an unsigned HOST_WIDE_INT size.
15535         (gimple_add_tmp_var): Likewise.
15537 2018-01-12  Martin Liska  <mliska@suse.cz>
15539         * gimple.c (gimple_alloc_counts): Use uint64_t instead of int.
15540         (gimple_alloc_sizes): Likewise.
15541         (dump_gimple_statistics): Use PRIu64 in printf format.
15542         * gimple.h: Change uint64_t to int.
15544 2018-01-12  Martin Liska  <mliska@suse.cz>
15546         * tree-core.h: Use uint64_t instead of int.
15547         * tree.c (tree_node_counts): Likewise.
15548         (tree_node_sizes): Likewise.
15549         (dump_tree_statistics): Use PRIu64 in printf format.
15551 2018-01-12  Martin Liska  <mliska@suse.cz>
15553         * Makefile.in: As qsort_chk is implemented in vec.c, add
15554         vec.o to linkage of gencfn-macros.
15555         * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's
15556         passing the info to record_node_allocation_statistics.
15557         (test_vector_cst_patterns): Add CXX_MEM_STAT_INFO to declaration
15558         and pass the info.
15559         * ggc-common.c (struct ggc_usage): Add operator== and use
15560         it in operator< and compare function.
15561         * mem-stats.h (struct mem_usage): Likewise.
15562         * vec.c (struct vec_usage): Remove operator< and compare
15563         function. Can be simply inherited.
15565 2018-01-12  Martin Jambor  <mjambor@suse.cz>
15567         PR target/81616
15568         * params.def: New parameter PARAM_AVOID_FMA_MAX_BITS.
15569         * tree-ssa-math-opts.c: Include domwalk.h.
15570         (convert_mult_to_fma_1): New function.
15571         (fma_transformation_info): New type.
15572         (fma_deferring_state): Likewise.
15573         (cancel_fma_deferring): New function.
15574         (result_of_phi): Likewise.
15575         (last_fma_candidate_feeds_initial_phi): Likewise.
15576         (convert_mult_to_fma): Added deferring logic, split actual
15577         transformation to convert_mult_to_fma_1.
15578         (math_opts_dom_walker): New type.
15579         (math_opts_dom_walker::after_dom_children): New method, body moved
15580         here from pass_optimize_widening_mul::execute, added deferring logic
15581         bits.
15582         (pass_optimize_widening_mul::execute): Moved most of code to
15583         math_opts_dom_walker::after_dom_children.
15584         * config/i386/x86-tune.def (X86_TUNE_AVOID_128FMA_CHAINS): New.
15585         * config/i386/i386.c (ix86_option_override_internal): Added
15586         maybe_setting of PARAM_AVOID_FMA_MAX_BITS.
15588 2018-01-12  Richard Biener  <rguenther@suse.de>
15590         PR debug/83157
15591         * dwarf2out.c (gen_variable_die): Do not reset old_die for
15592         inline instance vars.
15594 2018-01-12  Oleg Endo  <olegendo@gcc.gnu.org>
15596         PR target/81819
15597         * config/rx/rx.c (rx_is_restricted_memory_address):
15598         Handle SUBREG case.
15600 2018-01-12  Richard Biener  <rguenther@suse.de>
15602         PR tree-optimization/80846
15603         * target.def (split_reduction): New target hook.
15604         * targhooks.c (default_split_reduction): New function.
15605         * targhooks.h (default_split_reduction): Declare.
15606         * tree-vect-loop.c (vect_create_epilog_for_reduction): If the
15607         target requests first reduce vectors by combining low and high
15608         parts.
15609         * tree-vect-stmts.c (vect_gen_perm_mask_any): Adjust.
15610         (get_vectype_for_scalar_type_and_size): Export.
15611         * tree-vectorizer.h (get_vectype_for_scalar_type_and_size): Declare.
15612         * doc/tm.texi.in (TARGET_VECTORIZE_SPLIT_REDUCTION): Document.
15613         * doc/tm.texi: Regenerate.
15614         * config/i386/i386.c (ix86_split_reduction): Implement
15615         TARGET_VECTORIZE_SPLIT_REDUCTION.
15617 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
15619         PR target/83368
15620         * config/sparc/sparc.h (PIC_OFFSET_TABLE_REGNUM): Set to INVALID_REGNUM
15621         in PIC mode except for TARGET_VXWORKS_RTP.
15622         * config/sparc/sparc.c: Include cfgrtl.h.
15623         (TARGET_INIT_PIC_REG): Define.
15624         (TARGET_USE_PSEUDO_PIC_REG): Likewise.
15625         (sparc_pic_register_p): New predicate.
15626         (sparc_legitimate_address_p): Use it.
15627         (sparc_legitimize_pic_address): Likewise.
15628         (sparc_delegitimize_address): Likewise.
15629         (sparc_mode_dependent_address_p): Likewise.
15630         (gen_load_pcrel_sym): Remove 4th parameter.
15631         (load_got_register): Adjust call to above.  Remove obsolete stuff.
15632         (sparc_expand_prologue): Do not call load_got_register here.
15633         (sparc_flat_expand_prologue): Likewise.
15634         (sparc_output_mi_thunk): Set the pic_offset_table_rtx object.
15635         (sparc_use_pseudo_pic_reg): New function.
15636         (sparc_init_pic_reg): Likewise.
15637         * config/sparc/sparc.md (vxworks_load_got): Set the GOT register.
15638         (builtin_setjmp_receiver): Enable only for TARGET_VXWORKS_RTP.
15640 2018-01-12  Christophe Lyon  <christophe.lyon@linaro.org>
15642         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
15643         Add item for branch_cost.
15645 2018-01-12  Eric Botcazou  <ebotcazou@adacore.com>
15647         PR rtl-optimization/83565
15648         * rtlanal.c (nonzero_bits1): On WORD_REGISTER_OPERATIONS machines, do
15649         not extend the result to a larger mode for rotate operations.
15650         (num_sign_bit_copies1): Likewise.
15652 2018-01-12  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
15654         PR target/40411
15655         * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
15656         -symbolic.
15657         Use values-Xc.o for -pedantic.
15658         Link with values-xpg4.o for C90, values-xpg6.o otherwise.
15660 2018-01-12  Martin Liska  <mliska@suse.cz>
15662         PR ipa/83054
15663         * ipa-devirt.c (final_warning_record::grow_type_warnings):
15664         New function.
15665         (possible_polymorphic_call_targets): Use it.
15666         (ipa_devirt): Likewise.
15668 2018-01-12  Martin Liska  <mliska@suse.cz>
15670         * profile-count.h (enum profile_quality): Use 0 as invalid
15671         enum value of profile_quality.
15673 2018-01-12  Chung-Ju Wu  <jasonwucj@gmail.com>
15675         * doc/invoke.texi (NDS32 Options): Add -mext-perf, -mext-perf2 and
15676         -mext-string options.
15678 2018-01-12  Richard Biener  <rguenther@suse.de>
15680         * lto-streamer-out.c (DFS::DFS_write_tree_body): Process
15681         DECL_DEBUG_EXPR conditional on DECL_HAS_DEBUG_EXPR_P.
15682         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
15683         Likewise.
15684         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
15686 2018-01-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
15688         * configure.ac (--with-long-double-format): Add support for the
15689         configuration option to change the default long double format on
15690         PowerPC systems.
15691         * config.gcc (powerpc*-linux*-*): Likewise.
15692         * configure: Regenerate.
15693         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If long
15694         double is IEEE, define __KC__ and __KF__ to allow floatn.h to be
15695         used without modification.
15697 2018-01-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
15699         * config/rs6000/rs6000-builtin.def (BU_P7_MISC_X): New #define.
15700         (SPEC_BARRIER): New instantiation of BU_P7_MISC_X.
15701         * config/rs6000/rs6000.c (rs6000_expand_builtin): Handle
15702         MISC_BUILTIN_SPEC_BARRIER.
15703         (rs6000_init_builtins): Likewise.
15704         * config/rs6000/rs6000.md (UNSPECV_SPEC_BARRIER): New UNSPECV
15705         enum value.
15706         (speculation_barrier): New define_insn.
15707         * doc/extend.texi: Document __builtin_speculation_barrier.
15709 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
15711         PR target/83203
15712         * config/i386/i386.c (ix86_expand_vector_init_one_nonzero): If one_var
15713         is 0, for V{8,16}S[IF] and V[48]D[IF]mode use gen_vec_set<mode>_0.
15714         * config/i386/sse.md (VI8_AVX_AVX512F, VI4F_256_512): New mode
15715         iterators.
15716         (ssescalarmodesuffix): Add 512-bit vectors.  Use "d" or "q" for
15717         integral modes instead of "ss" and "sd".
15718         (vec_set<mode>_0): New define_insns for 256-bit and 512-bit
15719         vectors with 32-bit and 64-bit elements.
15720         (vecdupssescalarmodesuffix): New mode attribute.
15721         (vec_dup<mode>): Use it.
15723 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
15725         PR target/83330
15726         * config/i386/i386.c (ix86_compute_frame_layout): Align stack
15727         frame if argument is passed on stack.
15729 2018-01-11  Jakub Jelinek  <jakub@redhat.com>
15731         PR target/82682
15732         * ree.c (combine_reaching_defs): Optimize also
15733         reg2=exp; reg1=reg2; reg2=any_extend(reg1); into
15734         reg2=any_extend(exp); reg1=reg2;, formatting fix.
15736 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
15738         PR middle-end/83189
15739         * gimple-ssa-isolate-paths.c (isolate_path): Fix profile update.
15741 2018-01-11  Jan Hubicka  <hubicka@ucw.cz>
15743         PR middle-end/83718
15744         * tree-inline.c (copy_cfg_body): Adjust num&den for scaling
15745         after they are computed.
15747 2018-01-11  Bin Cheng  <bin.cheng@arm.com>
15749         PR tree-optimization/83695
15750         * gimple-loop-linterchange.cc
15751         (tree_loop_interchange::interchange_loops): Call scev_reset_htab to
15752         reset cached scev information after interchange.
15753         (pass_linterchange::execute): Remove call to scev_reset_htab.
15755 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
15757         * config/arm/arm_neon.h (vfmlal_lane_low_u32, vfmlal_lane_high_u32,
15758         vfmlalq_laneq_low_u32, vfmlalq_lane_low_u32, vfmlal_laneq_low_u32,
15759         vfmlalq_laneq_high_u32, vfmlalq_lane_high_u32, vfmlal_laneq_high_u32,
15760         vfmlsl_lane_low_u32, vfmlsl_lane_high_u32, vfmlslq_laneq_low_u32,
15761         vfmlslq_lane_low_u32, vfmlsl_laneq_low_u32, vfmlslq_laneq_high_u32,
15762         vfmlslq_lane_high_u32, vfmlsl_laneq_high_u32): Define.
15763         * config/arm/arm_neon_builtins.def (vfmal_lane_low,
15764         vfmal_lane_lowv4hf, vfmal_lane_lowv8hf, vfmal_lane_high,
15765         vfmal_lane_highv4hf, vfmal_lane_highv8hf, vfmsl_lane_low,
15766         vfmsl_lane_lowv4hf, vfmsl_lane_lowv8hf, vfmsl_lane_high,
15767         vfmsl_lane_highv4hf, vfmsl_lane_highv8hf): New sets of builtins.
15768         * config/arm/iterators.md (VFMLSEL2, vfmlsel2): New mode attributes.
15769         (V_lane_reg): Likewise.
15770         * config/arm/neon.md (neon_vfm<vfml_op>l_lane_<vfml_half><VCVTF:mode>):
15771         New define_expand.
15772         (neon_vfm<vfml_op>l_lane_<vfml_half><vfmlsel2><mode>): Likewise.
15773         (vfmal_lane_low<mode>_intrinsic,
15774         vfmal_lane_low<vfmlsel2><mode>_intrinsic,
15775         vfmal_lane_high<vfmlsel2><mode>_intrinsic,
15776         vfmal_lane_high<mode>_intrinsic, vfmsl_lane_low<mode>_intrinsic,
15777         vfmsl_lane_low<vfmlsel2><mode>_intrinsic,
15778         vfmsl_lane_high<vfmlsel2><mode>_intrinsic,
15779         vfmsl_lane_high<mode>_intrinsic): New define_insns.
15781 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
15783         * config/arm/arm-cpus.in (fp16fml): New feature.
15784         (ALL_SIMD): Add fp16fml.
15785         (armv8.2-a): Add fp16fml as an option.
15786         (armv8.3-a): Likewise.
15787         (armv8.4-a): Add fp16fml as part of fp16.
15788         * config/arm/arm.h (TARGET_FP16FML): Define.
15789         * config/arm/arm-c.c (arm_cpu_builtins): Define __ARM_FEATURE_FP16_FML
15790         when appropriate.
15791         * config/arm/arm-modes.def (V2HF): Define.
15792         * config/arm/arm_neon.h (vfmlal_low_u32, vfmlsl_low_u32,
15793         vfmlal_high_u32, vfmlsl_high_u32, vfmlalq_low_u32,
15794         vfmlslq_low_u32, vfmlalq_high_u32, vfmlslq_high_u32): Define.
15795         * config/arm/arm_neon_builtins.def (vfmal_low, vfmal_high,
15796         vfmsl_low, vfmsl_high): New set of builtins.
15797         * config/arm/iterators.md (PLUSMINUS): New code iterator.
15798         (vfml_op): New code attribute.
15799         (VFMLHALVES): New int iterator.
15800         (VFML, VFMLSEL): New mode attributes.
15801         (V_reg): Define mapping for V2HF.
15802         (V_hi, V_lo): New mode attributes.
15803         (VF_constraint): Likewise.
15804         (vfml_half, vfml_half_selector): New int attributes.
15805         * config/arm/neon.md (neon_vfm<vfml_op>l_<vfml_half><mode>): New
15806         define_expand.
15807         (vfmal_low<mode>_intrinsic, vfmsl_high<mode>_intrinsic,
15808         vfmal_high<mode>_intrinsic, vfmsl_low<mode>_intrinsic):
15809         New define_insn.
15810         * config/arm/t-arm-elf (v8_fps): Add fp16fml.
15811         * config/arm/t-multilib (v8_2_a_simd_variants): Add fp16fml.
15812         * config/arm/unspecs.md (UNSPEC_VFML_LO, UNSPEC_VFML_HI): New unspecs.
15813         * doc/invoke.texi (ARM Options): Document fp16fml.  Update armv8.4-a
15814         documentation.
15815         * doc/sourcebuild.texi (arm_fp16fml_neon_ok, arm_fp16fml_neon):
15816         Document new effective target and option set.
15818 2018-01-11  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
15820         * config/arm/arm-cpus.in (armv8_4): New feature.
15821         (ARMv8_4a): New fgroup.
15822         (armv8.4-a): New arch.
15823         * config/arm/arm-tables.opt: Regenerate.
15824         * config/arm/t-aprofile: Add matching rules for -march=armv8.4-a.
15825         * config/arm/t-arm-elf (all_v8_archs): Add armv8.4-a.
15826         * config/arm/t-multilib (v8_4_a_simd_variants): New variable.
15827         Add matching rules for -march=armv8.4-a and extensions.
15828         * doc/invoke.texi (ARM Options): Document -march=armv8.4-a.
15830 2018-01-11  Oleg Endo  <olegendo@gcc.gnu.org>
15832         PR target/81821
15833         * config/rx/rx.md (BW): New mode attribute.
15834         (sync_lock_test_and_setsi): Add mode suffix to insn output.
15836 2018-01-11  Richard Biener  <rguenther@suse.de>
15838         PR tree-optimization/83435
15839         * graphite.c (canonicalize_loop_form): Ignore fake loop exit edges.
15840         * graphite-scop-detection.c (scop_detection::get_sese): Likewise.
15841         * tree-vrp.c (add_assert_info): Drop TREE_OVERFLOW if they appear.
15843 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
15844             Alan Hayward  <alan.hayward@arm.com>
15845             David Sherwood  <david.sherwood@arm.com>
15847         * config/aarch64/aarch64.c (aarch64_address_info): Add a const_offset
15848         field.
15849         (aarch64_classify_address): Initialize it.  Track polynomial offsets.
15850         (aarch64_print_address_internal): Use it to check for a zero offset.
15852 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
15853             Alan Hayward  <alan.hayward@arm.com>
15854             David Sherwood  <david.sherwood@arm.com>
15856         * config/aarch64/aarch64-modes.def (NUM_POLY_INT_COEFFS): Set to 2.
15857         * config/aarch64/aarch64-protos.h (aarch64_initial_elimination_offset):
15858         Return a poly_int64 rather than a HOST_WIDE_INT.
15859         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a poly_int64
15860         rather than a HOST_WIDE_INT.
15861         * config/aarch64/aarch64.h (aarch64_frame): Protect with
15862         HAVE_POLY_INT_H rather than HOST_WIDE_INT.  Change locals_offset,
15863         hard_fp_offset, frame_size, initial_adjust, callee_offset and
15864         final_offset from HOST_WIDE_INT to poly_int64.
15865         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args): Use
15866         to_constant when getting the number of units in an Advanced SIMD
15867         mode.
15868         (aarch64_builtin_vectorized_function): Check for a constant number
15869         of units.
15870         * config/aarch64/aarch64-simd.md (mov<mode>): Handle polynomial
15871         GET_MODE_SIZE.
15872         (aarch64_ld<VSTRUCT:nregs>_lane<VALLDIF:mode>): Use the nunits
15873         attribute instead of GET_MODE_NUNITS.
15874         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs)
15875         (aarch64_class_max_nregs): Use the constant_lowest_bound of the
15876         GET_MODE_SIZE for fixed-size registers.
15877         (aarch64_const_vec_all_same_in_range_p): Use const_vec_duplicate_p.
15878         (aarch64_hard_regno_call_part_clobbered, aarch64_classify_index)
15879         (aarch64_mode_valid_for_sched_fusion_p, aarch64_classify_address)
15880         (aarch64_legitimize_address_displacement, aarch64_secondary_reload)
15881         (aarch64_print_operand, aarch64_print_address_internal)
15882         (aarch64_address_cost, aarch64_rtx_costs, aarch64_register_move_cost)
15883         (aarch64_short_vector_p, aapcs_vfp_sub_candidate)
15884         (aarch64_simd_attr_length_rglist, aarch64_operands_ok_for_ldpstp):
15885         Handle polynomial GET_MODE_SIZE.
15886         (aarch64_hard_regno_caller_save_mode): Likewise.  Return modes
15887         wider than SImode without modification.
15888         (tls_symbolic_operand_type): Use strip_offset instead of split_const.
15889         (aarch64_pass_by_reference, aarch64_layout_arg, aarch64_pad_reg_upward)
15890         (aarch64_gimplify_va_arg_expr): Assert that we don't yet handle
15891         passing and returning SVE modes.
15892         (aarch64_function_value, aarch64_layout_arg): Use gen_int_mode
15893         rather than GEN_INT.
15894         (aarch64_emit_probe_stack_range): Take the size as a poly_int64
15895         rather than a HOST_WIDE_INT, but call sorry if it isn't constant.
15896         (aarch64_allocate_and_probe_stack_space): Likewise.
15897         (aarch64_layout_frame): Cope with polynomial offsets.
15898         (aarch64_save_callee_saves, aarch64_restore_callee_saves): Take the
15899         start_offset as a poly_int64 rather than a HOST_WIDE_INT.  Track
15900         polynomial offsets.
15901         (offset_9bit_signed_unscaled_p, offset_12bit_unsigned_scaled_p)
15902         (aarch64_offset_7bit_signed_scaled_p): Take the offset as a
15903         poly_int64 rather than a HOST_WIDE_INT.
15904         (aarch64_get_separate_components, aarch64_process_components)
15905         (aarch64_expand_prologue, aarch64_expand_epilogue)
15906         (aarch64_use_return_insn_p): Handle polynomial frame offsets.
15907         (aarch64_anchor_offset): New function, split out from...
15908         (aarch64_legitimize_address): ...here.
15909         (aarch64_builtin_vectorization_cost): Handle polynomial
15910         TYPE_VECTOR_SUBPARTS.
15911         (aarch64_simd_check_vect_par_cnst_half): Handle polynomial
15912         GET_MODE_NUNITS.
15913         (aarch64_simd_make_constant, aarch64_expand_vector_init): Get the
15914         number of elements from the PARALLEL rather than the mode.
15915         (aarch64_shift_truncation_mask): Use GET_MODE_UNIT_BITSIZE
15916         rather than GET_MODE_BITSIZE.
15917         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_ext)
15918         (aarch64_evpc_rev, aarch64_evpc_dup, aarch64_evpc_zip)
15919         (aarch64_expand_vec_perm_const_1): Handle polynomial
15920         d->perm.length () and d->perm elements.
15921         (aarch64_evpc_tbl): Likewise.  Use nelt rather than GET_MODE_NUNITS.
15922         Apply to_constant to d->perm elements.
15923         (aarch64_simd_valid_immediate, aarch64_vec_fpconst_pow_of_2): Handle
15924         polynomial CONST_VECTOR_NUNITS.
15925         (aarch64_move_pointer): Take amount as a poly_int64 rather
15926         than an int.
15927         (aarch64_progress_pointer): Avoid temporary variable.
15928         * config/aarch64/aarch64.md (aarch64_<crc_variant>): Use
15929         the mode attribute instead of GET_MODE.
15931 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
15932             Alan Hayward  <alan.hayward@arm.com>
15933             David Sherwood  <david.sherwood@arm.com>
15935         * config/aarch64/aarch64.c (aarch64_force_temporary): Assert that
15936         x exists before using it.
15937         (aarch64_add_constant_internal): Rename to...
15938         (aarch64_add_offset_1): ...this.  Replace regnum with separate
15939         src and dest rtxes.  Handle the case in which they're different,
15940         including when the offset is zero.  Replace scratchreg with an rtx.
15941         Use 2 additions if there is no spare register into which we can
15942         move a 16-bit constant.
15943         (aarch64_add_constant): Delete.
15944         (aarch64_add_offset): Replace reg with separate src and dest
15945         rtxes.  Take a poly_int64 offset instead of a HOST_WIDE_INT.
15946         Use aarch64_add_offset_1.
15947         (aarch64_add_sp, aarch64_sub_sp): Take the scratch register as
15948         an rtx rather than an int.  Take the delta as a poly_int64
15949         rather than a HOST_WIDE_INT.  Use aarch64_add_offset.
15950         (aarch64_expand_mov_immediate): Update uses of aarch64_add_offset.
15951         (aarch64_expand_prologue): Update calls to aarch64_sub_sp,
15952         aarch64_allocate_and_probe_stack_space and aarch64_add_offset.
15953         (aarch64_expand_epilogue): Update calls to aarch64_add_offset
15954         and aarch64_add_sp.
15955         (aarch64_output_mi_thunk): Use aarch64_add_offset rather than
15956         aarch64_add_constant.
15958 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
15960         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
15961         Use scalar_float_mode.
15963 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
15965         * config/aarch64/aarch64-simd.md
15966         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): Avoid GET_MODE_NUNITS.
15967         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Likewise.
15968         (aarch64_fml<f16mac1>l_lane_lowv2sf): Likewise.
15969         (aarch64_fml<f16mac1>l_lane_highv2sf): Likewise.
15970         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Likewise.
15971         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Likewise.
15972         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Likewise.
15973         (aarch64_fml<f16mac1>l_laneq_highv2sf): Likewise.
15974         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Likewise.
15975         (aarch64_fml<f16mac1>lq_lane_highv4sf): Likewise.
15977 2018-01-11  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
15979         PR target/83514
15980         * config/arm/arm.c (arm_declare_function_name): Set arch_to_print if
15981         targ_options->x_arm_arch_string is non NULL.
15983 2018-01-11  Tamar Christina  <tamar.christina@arm.com>
15985         * config/aarch64/aarch64.h
15986         (AARCH64_FL_FOR_ARCH8_4): Add  AARCH64_FL_DOTPROD.
15988 2018-01-11  Sudakshina Das  <sudi.das@arm.com>
15990         PR target/82096
15991         * expmed.c (emit_store_flag_force): Swap if const op0
15992         and change VOIDmode to mode of op0.
15994 2018-01-11  Richard Sandiford  <richard.sandiford@linaro.org>
15996         PR rtl-optimization/83761
15997         * caller-save.c (replace_reg_with_saved_mem): Pass bits rather
15998         than bytes to mode_for_size.
16000 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
16002         PR middle-end/83189
16003         * gfortran.fortran-torture/compile/pr83189.f90: New testcase.
16004         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Handle zero
16005         profile.
16007 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
16009         PR middle-end/83575
16010         * cfgrtl.c (rtl_verify_edges): Only verify fixability of partition
16011         when in layout mode.
16012         (cfg_layout_finalize): Do not verify cfg before we are out of layout.
16013         * cfgcleanup.c (try_optimize_cfg): Only verify flow info when doing
16014         partition fixup.
16016 2018-01-10  Michael Collison  <michael.collison@arm.com>
16018         * config/aarch64/aarch64-modes.def (V2HF): New VECTOR_MODE.
16019         * config/aarch64/aarch64-option-extension.def: Add
16020         AARCH64_OPT_EXTENSION of 'fp16fml'.
16021         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
16022         (__ARM_FEATURE_FP16_FML): Define if TARGET_F16FML is true.
16023         * config/aarch64/predicates.md (aarch64_lane_imm3): New predicate.
16024         * config/aarch64/constraints.md (Ui7): New constraint.
16025         * config/aarch64/iterators.md (VFMLA_W): New mode iterator.
16026         (VFMLA_SEL_W): Ditto.
16027         (f16quad): Ditto.
16028         (f16mac1): Ditto.
16029         (VFMLA16_LOW): New int iterator.
16030         (VFMLA16_HIGH): Ditto.
16031         (UNSPEC_FMLAL): New unspec.
16032         (UNSPEC_FMLSL): Ditto.
16033         (UNSPEC_FMLAL2): Ditto.
16034         (UNSPEC_FMLSL2): Ditto.
16035         (f16mac): New code attribute.
16036         * config/aarch64/aarch64-simd-builtins.def
16037         (aarch64_fmlal_lowv2sf): Ditto.
16038         (aarch64_fmlsl_lowv2sf): Ditto.
16039         (aarch64_fmlalq_lowv4sf): Ditto.
16040         (aarch64_fmlslq_lowv4sf): Ditto.
16041         (aarch64_fmlal_highv2sf): Ditto.
16042         (aarch64_fmlsl_highv2sf): Ditto.
16043         (aarch64_fmlalq_highv4sf): Ditto.
16044         (aarch64_fmlslq_highv4sf): Ditto.
16045         (aarch64_fmlal_lane_lowv2sf): Ditto.
16046         (aarch64_fmlsl_lane_lowv2sf): Ditto.
16047         (aarch64_fmlal_laneq_lowv2sf): Ditto.
16048         (aarch64_fmlsl_laneq_lowv2sf): Ditto.
16049         (aarch64_fmlalq_lane_lowv4sf): Ditto.
16050         (aarch64_fmlsl_lane_lowv4sf): Ditto.
16051         (aarch64_fmlalq_laneq_lowv4sf): Ditto.
16052         (aarch64_fmlsl_laneq_lowv4sf): Ditto.
16053         (aarch64_fmlal_lane_highv2sf): Ditto.
16054         (aarch64_fmlsl_lane_highv2sf): Ditto.
16055         (aarch64_fmlal_laneq_highv2sf): Ditto.
16056         (aarch64_fmlsl_laneq_highv2sf): Ditto.
16057         (aarch64_fmlalq_lane_highv4sf): Ditto.
16058         (aarch64_fmlsl_lane_highv4sf): Ditto.
16059         (aarch64_fmlalq_laneq_highv4sf): Ditto.
16060         (aarch64_fmlsl_laneq_highv4sf): Ditto.
16061         * config/aarch64/aarch64-simd.md:
16062         (aarch64_fml<f16mac1>l<f16quad>_low<mode>): New pattern.
16063         (aarch64_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
16064         (aarch64_simd_fml<f16mac1>l<f16quad>_low<mode>): Ditto.
16065         (aarch64_simd_fml<f16mac1>l<f16quad>_high<mode>): Ditto.
16066         (aarch64_fml<f16mac1>l_lane_lowv2sf): Ditto.
16067         (aarch64_fml<f16mac1>l_lane_highv2sf): Ditto.
16068         (aarch64_simd_fml<f16mac>l_lane_lowv2sf): Ditto.
16069         (aarch64_simd_fml<f16mac>l_lane_highv2sf): Ditto.
16070         (aarch64_fml<f16mac1>lq_laneq_lowv4sf): Ditto.
16071         (aarch64_fml<f16mac1>lq_laneq_highv4sf): Ditto.
16072         (aarch64_simd_fml<f16mac>lq_laneq_lowv4sf): Ditto.
16073         (aarch64_simd_fml<f16mac>lq_laneq_highv4sf): Ditto.
16074         (aarch64_fml<f16mac1>l_laneq_lowv2sf): Ditto.
16075         (aarch64_fml<f16mac1>l_laneq_highv2sf): Ditto.
16076         (aarch64_simd_fml<f16mac>l_laneq_lowv2sf): Ditto.
16077         (aarch64_simd_fml<f16mac>l_laneq_highv2sf): Ditto.
16078         (aarch64_fml<f16mac1>lq_lane_lowv4sf): Ditto.
16079         (aarch64_fml<f16mac1>lq_lane_highv4sf): Ditto.
16080         (aarch64_simd_fml<f16mac>lq_lane_lowv4sf): Ditto.
16081         (aarch64_simd_fml<f16mac>lq_lane_highv4sf): Ditto.
16082         * config/aarch64/arm_neon.h (vfmlal_low_u32): New intrinsic.
16083         (vfmlsl_low_u32): Ditto.
16084         (vfmlalq_low_u32): Ditto.
16085         (vfmlslq_low_u32): Ditto.
16086         (vfmlal_high_u32): Ditto.
16087         (vfmlsl_high_u32): Ditto.
16088         (vfmlalq_high_u32): Ditto.
16089         (vfmlslq_high_u32): Ditto.
16090         (vfmlal_lane_low_u32): Ditto.
16091         (vfmlsl_lane_low_u32): Ditto.
16092         (vfmlal_laneq_low_u32): Ditto.
16093         (vfmlsl_laneq_low_u32): Ditto.
16094         (vfmlalq_lane_low_u32): Ditto.
16095         (vfmlslq_lane_low_u32): Ditto.
16096         (vfmlalq_laneq_low_u32): Ditto.
16097         (vfmlslq_laneq_low_u32): Ditto.
16098         (vfmlal_lane_high_u32): Ditto.
16099         (vfmlsl_lane_high_u32): Ditto.
16100         (vfmlal_laneq_high_u32): Ditto.
16101         (vfmlsl_laneq_high_u32): Ditto.
16102         (vfmlalq_lane_high_u32): Ditto.
16103         (vfmlslq_lane_high_u32): Ditto.
16104         (vfmlalq_laneq_high_u32): Ditto.
16105         (vfmlslq_laneq_high_u32): Ditto.
16106         * config/aarch64/aarch64.h (AARCH64_FL_F16SML): New flag.
16107         (AARCH64_FL_FOR_ARCH8_4): New.
16108         (AARCH64_ISA_F16FML): New ISA flag.
16109         (TARGET_F16FML): New feature flag for fp16fml.
16110         (doc/invoke.texi): Document new fp16fml option.
16112 2018-01-10  Michael Collison  <michael.collison@arm.com>
16114         * config/aarch64/aarch64-builtins.c:
16115         (aarch64_types_ternopu_imm_qualifiers, TYPES_TERNOPUI): New.
16116         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
16117         (__ARM_FEATURE_SHA3): Define if TARGET_SHA3 is true.
16118         * config/aarch64/aarch64.h (AARCH64_FL_SHA3): New flags.
16119         (AARCH64_ISA_SHA3): New ISA flag.
16120         (TARGET_SHA3): New feature flag for sha3.
16121         * config/aarch64/iterators.md (sha512_op): New int attribute.
16122         (CRYPTO_SHA512): New int iterator.
16123         (UNSPEC_SHA512H): New unspec.
16124         (UNSPEC_SHA512H2): Ditto.
16125         (UNSPEC_SHA512SU0): Ditto.
16126         (UNSPEC_SHA512SU1): Ditto.
16127         * config/aarch64/aarch64-simd-builtins.def
16128         (aarch64_crypto_sha512hqv2di): New builtin.
16129         (aarch64_crypto_sha512h2qv2di): Ditto.
16130         (aarch64_crypto_sha512su0qv2di): Ditto.
16131         (aarch64_crypto_sha512su1qv2di): Ditto.
16132         (aarch64_eor3qv8hi): Ditto.
16133         (aarch64_rax1qv2di): Ditto.
16134         (aarch64_xarqv2di): Ditto.
16135         (aarch64_bcaxqv8hi): Ditto.
16136         * config/aarch64/aarch64-simd.md:
16137         (aarch64_crypto_sha512h<sha512_op>qv2di): New pattern.
16138         (aarch64_crypto_sha512su0qv2di): Ditto.
16139         (aarch64_crypto_sha512su1qv2di): Ditto.
16140         (aarch64_eor3qv8hi): Ditto.
16141         (aarch64_rax1qv2di): Ditto.
16142         (aarch64_xarqv2di): Ditto.
16143         (aarch64_bcaxqv8hi): Ditto.
16144         * config/aarch64/arm_neon.h (vsha512hq_u64): New intrinsic.
16145         (vsha512h2q_u64): Ditto.
16146         (vsha512su0q_u64): Ditto.
16147         (vsha512su1q_u64): Ditto.
16148         (veor3q_u16): Ditto.
16149         (vrax1q_u64): Ditto.
16150         (vxarq_u64): Ditto.
16151         (vbcaxq_u16): Ditto.
16152         * config/arm/types.md (crypto_sha512): New type attribute.
16153         (crypto_sha3): Ditto.
16154         (doc/invoke.texi): Document new sha3 option.
16156 2018-01-10  Michael Collison  <michael.collison@arm.com>
16158         * config/aarch64/aarch64-builtins.c:
16159         (aarch64_types_quadopu_imm_qualifiers, TYPES_QUADOPUI): New.
16160         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
16161         (__ARM_FEATURE_SM3): Define if TARGET_SM4 is true.
16162         (__ARM_FEATURE_SM4): Define if TARGET_SM4 is true.
16163         * config/aarch64/aarch64.h (AARCH64_FL_SM4): New flags.
16164         (AARCH64_ISA_SM4): New ISA flag.
16165         (TARGET_SM4): New feature flag for sm4.
16166         * config/aarch64/aarch64-simd-builtins.def
16167         (aarch64_sm3ss1qv4si): Ditto.
16168         (aarch64_sm3tt1aq4si): Ditto.
16169         (aarch64_sm3tt1bq4si): Ditto.
16170         (aarch64_sm3tt2aq4si): Ditto.
16171         (aarch64_sm3tt2bq4si): Ditto.
16172         (aarch64_sm3partw1qv4si): Ditto.
16173         (aarch64_sm3partw2qv4si): Ditto.
16174         (aarch64_sm4eqv4si): Ditto.
16175         (aarch64_sm4ekeyqv4si): Ditto.
16176         * config/aarch64/aarch64-simd.md:
16177         (aarch64_sm3ss1qv4si): Ditto.
16178         (aarch64_sm3tt<sm3tt_op>qv4si): Ditto.
16179         (aarch64_sm3partw<sm3part_op>qv4si): Ditto.
16180         (aarch64_sm4eqv4si): Ditto.
16181         (aarch64_sm4ekeyqv4si): Ditto.
16182         * config/aarch64/iterators.md (sm3tt_op): New int iterator.
16183         (sm3part_op): Ditto.
16184         (CRYPTO_SM3TT): Ditto.
16185         (CRYPTO_SM3PART): Ditto.
16186         (UNSPEC_SM3SS1): New unspec.
16187         (UNSPEC_SM3TT1A): Ditto.
16188         (UNSPEC_SM3TT1B): Ditto.
16189         (UNSPEC_SM3TT2A): Ditto.
16190         (UNSPEC_SM3TT2B): Ditto.
16191         (UNSPEC_SM3PARTW1): Ditto.
16192         (UNSPEC_SM3PARTW2): Ditto.
16193         (UNSPEC_SM4E): Ditto.
16194         (UNSPEC_SM4EKEY): Ditto.
16195         * config/aarch64/constraints.md (Ui2): New constraint.
16196         * config/aarch64/predicates.md (aarch64_imm2): New predicate.
16197         * config/arm/types.md (crypto_sm3): New type attribute.
16198         (crypto_sm4): Ditto.
16199         * config/aarch64/arm_neon.h (vsm3ss1q_u32): New intrinsic.
16200         (vsm3tt1aq_u32): Ditto.
16201         (vsm3tt1bq_u32): Ditto.
16202         (vsm3tt2aq_u32): Ditto.
16203         (vsm3tt2bq_u32): Ditto.
16204         (vsm3partw1q_u32): Ditto.
16205         (vsm3partw2q_u32): Ditto.
16206         (vsm4eq_u32): Ditto.
16207         (vsm4ekeyq_u32): Ditto.
16208         (doc/invoke.texi): Document new sm4 option.
16210 2018-01-10  Michael Collison  <michael.collison@arm.com>
16212         * config/aarch64/aarch64-arches.def (armv8.4-a): New architecture.
16213         * config/aarch64/aarch64.h (AARCH64_ISA_V8_4): New ISA flag.
16214         (AARCH64_FL_FOR_ARCH8_4): New.
16215         (AARCH64_FL_V8_4): New flag.
16216         (doc/invoke.texi): Document new armv8.4-a option.
16218 2018-01-10  Michael Collison  <michael.collison@arm.com>
16220         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
16221         (__ARM_FEATURE_AES): Define if TARGET_AES is true.
16222         (__ARM_FEATURE_SHA2): Define if TARGET_SHA2 is true.
16223         * config/aarch64/aarch64-option-extension.def: Add
16224         AARCH64_OPT_EXTENSION of 'sha2'.
16225         (aes): Add AARCH64_OPT_EXTENSION of 'aes'.
16226         (crypto): Disable sha2 and aes if crypto disabled.
16227         (crypto): Enable aes and sha2 if enabled.
16228         (simd): Disable sha2 and aes if simd disabled.
16229         * config/aarch64/aarch64.h (AARCH64_FL_AES, AARCH64_FL_SHA2):
16230         New flags.
16231         (AARCH64_ISA_AES, AARCH64_ISA_SHA2): New ISA flags.
16232         (TARGET_SHA2): New feature flag for sha2.
16233         (TARGET_AES): New feature flag for aes.
16234         * config/aarch64/aarch64-simd.md:
16235         (aarch64_crypto_aes<aes_op>v16qi): Make pattern
16236         conditional on TARGET_AES.
16237         (aarch64_crypto_aes<aesmc_op>v16qi): Ditto.
16238         (aarch64_crypto_sha1hsi): Make pattern conditional
16239         on TARGET_SHA2.
16240         (aarch64_crypto_sha1hv4si): Ditto.
16241         (aarch64_be_crypto_sha1hv4si): Ditto.
16242         (aarch64_crypto_sha1su1v4si): Ditto.
16243         (aarch64_crypto_sha1<sha1_op>v4si): Ditto.
16244         (aarch64_crypto_sha1su0v4si): Ditto.
16245         (aarch64_crypto_sha256h<sha256_op>v4si): Ditto.
16246         (aarch64_crypto_sha256su0v4si): Ditto.
16247         (aarch64_crypto_sha256su1v4si): Ditto.
16248         (doc/invoke.texi): Document new aes and sha2 options.
16250 2018-01-10  Martin Sebor  <msebor@redhat.com>
16252         PR tree-optimization/83781
16253         * gimple-fold.c (get_range_strlen): Avoid treating arrays of pointers
16254         as string arrays.
16256 2018-01-11  Martin Sebor  <msebor@gmail.com>
16257             Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
16259         PR tree-optimization/83501
16260         PR tree-optimization/81703
16262         * tree-ssa-strlen.c (get_string_cst): Rename...
16263         (get_string_len): ...to this.  Handle global constants.
16264         (handle_char_store): Adjust.
16266 2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
16267             Jim Wilson  <jimw@sifive.com>
16269         * config/riscv/riscv-protos.h (riscv_output_return): New.
16270         * config/riscv/riscv.c (struct machine_function): New naked_p field.
16271         (riscv_attribute_table, riscv_output_return),
16272         (riscv_handle_fndecl_attribute, riscv_naked_function_p),
16273         (riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
16274         (riscv_compute_frame_info): Only compute frame->mask if not a naked
16275         function.
16276         (riscv_expand_prologue): Add early return for naked function.
16277         (riscv_expand_epilogue): Likewise.
16278         (riscv_function_ok_for_sibcall): Return false for naked function.
16279         (riscv_set_current_function): New.
16280         (TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
16281         (TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
16282         * config/riscv/riscv.md (simple_return): Call riscv_output_return.
16283         * doc/extend.texi (RISC-V Function Attributes): New.
16285 2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
16287         * config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
16288         check for 128-bit long double before checking TCmode.
16289         * config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
16290         128-bit long doubles before checking TFmode or TCmode.
16291         (FLOAT128_IBM_P): Likewise.
16293 2018-01-10  Martin Sebor  <msebor@redhat.com>
16295         PR tree-optimization/83671
16296         * builtins.c (c_strlen): Unconditionally return zero for the empty
16297         string.
16298         Use -Warray-bounds for warnings.
16299         * gimple-fold.c (get_range_strlen): Handle non-constant lengths
16300         for non-constant array indices with COMPONENT_REF, arrays of
16301         arrays, and pointers to arrays.
16302         (gimple_fold_builtin_strlen): Determine and set length range for
16303         non-constant character arrays.
16305 2018-01-10  Aldy Hernandez  <aldyh@redhat.com>
16307         PR middle-end/81897
16308         * tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
16309         empty blocks.
16311 2018-01-10  Eric Botcazou  <ebotcazou@adacore.com>
16313         * dwarf2out.c (dwarf2out_var_location): Do not pass NULL to fprintf.
16315 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
16317         PR target/83399
16318         * config/rs6000/rs6000.c (print_operand) <'y'>: Use
16319         VECTOR_MEM_ALTIVEC_OR_VSX_P.
16320         * config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
16321         indexed_or_indirect_operand predicate.
16322         (*vsx_le_perm_load_<mode> for VSX_W): Likewise.
16323         (*vsx_le_perm_load_v8hi): Likewise.
16324         (*vsx_le_perm_load_v16qi): Likewise.
16325         (*vsx_le_perm_store_<mode> for VSX_D): Likewise.
16326         (*vsx_le_perm_store_<mode> for VSX_W): Likewise.
16327         (*vsx_le_perm_store_v8hi): Likewise.
16328         (*vsx_le_perm_store_v16qi): Likewise.
16329         (eight unnamed splitters): Likewise.
16331 2018-01-10  Peter Bergner  <bergner@vnet.ibm.com>
16333         * config/rs6000/x86intrin.h: Change #warning to #error. Update message.
16334         * config/rs6000/emmintrin.h: Likewise.
16335         * config/rs6000/mmintrin.h: Likewise.
16336         * config/rs6000/xmmintrin.h: Likewise.
16338 2018-01-10  David Malcolm  <dmalcolm@redhat.com>
16340         PR c++/43486
16341         * tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
16342         "public_flag".
16343         * tree.c (tree_nop_conversion): Return true for location wrapper
16344         nodes.
16345         (maybe_wrap_with_location): New function.
16346         (selftest::check_strip_nops): New function.
16347         (selftest::test_location_wrappers): New function.
16348         (selftest::tree_c_tests): Call it.
16349         * tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
16350         (maybe_wrap_with_location): New decl.
16351         (EXPR_LOCATION_WRAPPER_P): New macro.
16352         (location_wrapper_p): New inline function.
16353         (tree_strip_any_location_wrapper): New inline function.
16355 2018-01-10  H.J. Lu  <hongjiu.lu@intel.com>
16357         PR target/83735
16358         * config/i386/i386.c (ix86_compute_frame_layout): Always adjust
16359         stack_realign_offset for the largest alignment of stack slot
16360         actually used.
16361         (ix86_find_max_used_stack_alignment): New function.
16362         (ix86_finalize_stack_frame_flags): Use it.  Set
16363         max_used_stack_alignment if we don't realign stack.
16364         * config/i386/i386.h (machine_function): Add
16365         max_used_stack_alignment.
16367 2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
16369         * config/arm/arm.opt (-mbranch-cost): New option.
16370         * config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
16371         account.
16373 2018-01-10  Segher Boessenkool  <segher@kernel.crashing.org>
16375         PR target/83629
16376         * config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
16377         load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
16379 2018-01-10  Richard Biener  <rguenther@suse.de>
16381         PR debug/83765
16382         * dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
16383         early out so it also covers the case where we have a non-NULL
16384         origin.
16386 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
16388         PR tree-optimization/83753
16389         * tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
16390         for non-strided grouped accesses if the number of elements is 1.
16392 2018-01-10  Jan Hubicka  <hubicka@ucw.cz>
16394         PR target/81616
16395         * i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
16396         * i386.h (TARGET_USE_GATHER): Define.
16397         * x86-tune.def (X86_TUNE_USE_GATHER): New.
16399 2018-01-10  Martin Liska  <mliska@suse.cz>
16401         PR bootstrap/82831
16402         * basic-block.h (CLEANUP_NO_PARTITIONING): New define.
16403         * bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
16404         partitioning.
16405         * cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
16406         CLEANUP_NO_PARTITIONING is not set.
16408 2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
16410         * doc/rtl.texi: Remove documentation of (const ...) wrappers
16411         for vectors, as a partial revert of r254296.
16412         * rtl.h (const_vec_p): Delete.
16413         (const_vec_duplicate_p): Don't test for vector CONSTs.
16414         (unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
16415         * expmed.c (make_tree): Likewise.
16417         Revert:
16418         * common.md (E, F): Use CONSTANT_P instead of checking for
16419         CONST_VECTOR.
16420         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
16421         checking for CONST_VECTOR.
16423 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
16425         PR middle-end/83575
16426         * predict.c (force_edge_cold): Handle in more sane way edges
16427         with no prediction.
16429 2018-01-09  Carl Love  <cel@us.ibm.com>
16431         * config/rs6002/altivec.md (p8_vmrgow): Add support for V2DI, V2DF,
16432         V4SI, V4SF types.
16433         (p8_vmrgew): Add support for V2DI, V2DF, V4SF types.
16434         * config/rs6000/rs6000-builtin.def: Add definitions for FLOAT2_V2DF,
16435         VMRGEW_V2DI, VMRGEW_V2DF, VMRGEW_V4SF, VMRGOW_V4SI, VMRGOW_V4SF,
16436         VMRGOW_V2DI, VMRGOW_V2DF.  Remove definition for VMRGOW.
16437         * config/rs6000/rs6000-c.c (VSX_BUILTIN_VEC_FLOAT2,
16438         P8V_BUILTIN_VEC_VMRGEW, P8V_BUILTIN_VEC_VMRGOW):  Add definitions.
16439         * config/rs6000/rs6000-protos.h: Add extern defition for
16440         rs6000_generate_float2_double_code.
16441         * config/rs6000/rs6000.c (rs6000_generate_float2_double_code): Add
16442         function.
16443         * config/rs6000/vsx.md (vsx_xvcdpsp): Add define_insn.
16444         (float2_v2df): Add define_expand.
16446 2018-01-09  Uros Bizjak  <ubizjak@gmail.com>
16448         PR target/83628
16449         * combine.c (force_int_to_mode) <case ASHIFT>: Use mode instead of
16450         op_mode in the force_to_mode call.
16452 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
16454         * config/aarch64/aarch64.c (aarch64_evpc_trn): Use d.perm.series_p
16455         instead of checking each element individually.
16456         (aarch64_evpc_uzp): Likewise.
16457         (aarch64_evpc_zip): Likewise.
16458         (aarch64_evpc_ext): Likewise.
16459         (aarch64_evpc_rev): Likewise.
16460         (aarch64_evpc_dup): Test the encoding for a single duplicated element,
16461         instead of checking each element individually.  Return true without
16462         generating rtl if
16463         (aarch64_vectorize_vec_perm_const): Use all_from_input_p to test
16464         whether all selected elements come from the same input, instead of
16465         checking each element individually.  Remove calls to gen_rtx_REG,
16466         start_sequence and end_sequence and instead assert that no rtl is
16467         generated.
16469 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
16471         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Fix
16472         order of HIGH and CONST checks.
16474 2018-01-09  Richard Sandiford  <richard.sandiford@linaro.org>
16476         * tree-vect-stmts.c (permute_vec_elements): Create a fresh variable
16477         if the destination isn't an SSA_NAME.
16479 2018-01-09  Richard Biener  <rguenther@suse.de>
16481         PR tree-optimization/83668
16482         * graphite.c (canonicalize_loop_closed_ssa): Add edge argument,
16483         move prologue...
16484         (canonicalize_loop_form): ... here, renamed from ...
16485         (canonicalize_loop_closed_ssa_form): ... this and amended to
16486         swap successor edges for loop exit blocks to make us use
16487         the RPO order we need for initial schedule generation.
16489 2018-01-09  Joseph Myers  <joseph@codesourcery.com>
16491         PR tree-optimization/64811
16492         * match.pd: When optimizing comparisons with Inf, avoid
16493         introducing or losing exceptions from comparisons with NaN.
16495 2018-01-09  Martin Liska  <mliska@suse.cz>
16497         PR sanitizer/82517
16498         * asan.c (shadow_mem_size): Add gcc_assert.
16500 2018-01-09  Georg-Johann Lay  <avr@gjlay.de>
16502         Don't save registers in main().
16504         PR target/83738
16505         * doc/invoke.texi (AVR Options) [-mmain-is-OS_task]: Document it.
16506         * config/avr/avr.opt (-mmain-is-OS_task): New target option.
16507         * config/avr/avr.c (avr_set_current_function): Don't error if
16508         naked, OS_task or OS_main are specified at the same time.
16509         (avr_function_ok_for_sibcall): Don't disable sibcalls for OS_task,
16510         OS_main.
16511         (avr_insert_attributes) [-mmain-is-OS_task] <main>: Add OS_task
16512         attribute.
16513         * common/config/avr/avr-common.c (avr_option_optimization_table):
16514         Switch on -mmain-is-OS_task for optimizing compilations.
16516 2018-01-09  Richard Biener  <rguenther@suse.de>
16518         PR tree-optimization/83572
16519         * graphite.c: Include cfganal.h.
16520         (graphite_transform_loops): Connect infinite loops to exit
16521         and remove fake edges at the end.
16523 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
16525         * ipa-inline.c (edge_badness): Revert accidental checkin.
16527 2018-01-09  Jan Hubicka  <hubicka@ucw.cz>
16529         PR ipa/80763
16530         * ipa-comdats.c (set_comdat_group): Only set comdat group of real
16531         symbols; not inline clones.
16533 2018-01-09  Jakub Jelinek  <jakub@redhat.com>
16535         PR target/83507
16536         * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
16537         hard registers.  Formatting fixes.
16539         PR preprocessor/83722
16540         * gcc.c (try_generate_repro): Pass
16541         &temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
16542         &temp_stdout_files[RETRY_ICE_ATTEMPTS - 1] as last argument to
16543         do_report_bug.
16545 2018-01-08  Monk Chiang  <sh.chiang04@gmail.com>
16546             Kito Cheng  <kito.cheng@gmail.com>
16548         * config/riscv/riscv.c (machine_function::is_leaf): Remove field.
16549         (riscv_leaf_function_p): Delete.
16550         (riscv_function_ok_for_sibcall): Return false when TARGET_SAVE_RESTORE.
16552 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
16554         * config/rs6000/rs6000-string.c (do_load_for_compare_from_addr): New
16555         function.
16556         (do_ifelse): New function.
16557         (do_isel): New function.
16558         (do_sub3): New function.
16559         (do_add3): New function.
16560         (do_load_mask_compare): New function.
16561         (do_overlap_load_compare): New function.
16562         (expand_compare_loop): New function.
16563         (expand_block_compare): Call expand_compare_loop() when appropriate.
16564         * config/rs6000/rs6000.opt (-mblock-compare-inline-limit): Change
16565         option description.
16566         (-mblock-compare-inline-loop-limit): New option.
16568 2018-01-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
16570         PR target/83677
16571         * config/rs6000/altivec.md (*altivec_vpermr_<mode>_internal):
16572         Reverse order of second and third operands in first alternative.
16573         * config/rs6000/rs6000.c (rs6000_expand_vector_set): Reverse order
16574         of first and second elements in UNSPEC_VPERMR vector.
16575         (altivec_expand_vec_perm_le): Likewise.
16577 2018-01-08  Jeff Law  <law@redhat.com>
16579         PR rtl-optimizatin/81308
16580         * tree-switch-conversion.c (cfg_altered): New file scoped static.
16581         (process_switch): If group_case_labels makes a change, then set
16582         cfg_altered.
16583         (pass_convert_switch::execute): If a switch is converted, then
16584         set cfg_altered.  Return TODO_cfg_cleanup if cfg_altered is true.
16586         PR rtl-optimization/81308
16587         * recog.c (split_all_insns): Conditionally cleanup the CFG after
16588         splitting insns.
16590 2018-01-08  Vidya Praveen  <vidyapraveen@arm.com>
16592         PR target/83663 - Revert r255946
16593         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
16594         generation for cases where splatting a value is not useful.
16595         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
16596         across a vec_duplicate and a paradoxical subreg forming a vector
16597         mode to a vec_concat.
16599 2018-01-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
16601         * config/arm/t-aprofile (MULTILIB_MATCHES): Add mapping rules for
16602         -march=armv8.3-a variants.
16603         * config/arm/t-multilib: Likewise.
16604         * config/arm/t-arm-elf: Likewise.  Handle dotprod extension.
16606 2018-01-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
16608         * config/rs6000/rs6000.md (cceq_ior_compare): Remove * so I can use it
16609         to generate rtl.
16610         (cceq_ior_compare_complement): Give it a name so I can use it, and
16611         change boolean_or_operator predicate to boolean_operator so it can
16612         be used to generate a crand.
16613         (eqne): New code iterator.
16614         (bd/bd_neg): New code_attrs.
16615         (<bd>_<mode>): New name for ctr<mode>_internal[12] now combined into
16616         a single define_insn.
16617         (<bd>tf_<mode>): A new insn pattern for the conditional form branch
16618         decrement (bdnzt/bdnzf/bdzt/bdzf).
16619         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Updated
16620         with the new names of the branch decrement patterns, and added the
16621         names of the branch decrement conditional patterns.
16623 2018-01-08  Richard Biener  <rguenther@suse.de>
16625         PR tree-optimization/83563
16626         * graphite.c (canonicalize_loop_closed_ssa_form): Reset the SCEV
16627         cache.
16629 2018-01-08  Richard Biener  <rguenther@suse.de>
16631         PR middle-end/83713
16632         * convert.c (do_narrow): Properly guard TYPE_OVERFLOW_WRAPS checks.
16634 2018-01-08  Richard Biener  <rguenther@suse.de>
16636         PR tree-optimization/83685
16637         * tree-ssa-pre.c (create_expression_by_pieces): Do not insert
16638         references to abnormals.
16640 2018-01-08  Richard Biener  <rguenther@suse.de>
16642         PR lto/83719
16643         * dwarf2out.c (output_indirect_strings): Handle empty
16644         skeleton_debug_str_hash.
16645         (dwarf2out_early_finish): Index strings for -gsplit-dwarf.
16647 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
16649         * config/arc/arc.c (TARGET_TRAMPOLINE_ADJUST_ADDRESS): Delete.
16650         (emit_store_direct): Likewise.
16651         (arc_trampoline_adjust_address): Likewise.
16652         (arc_asm_trampoline_template): New function.
16653         (arc_initialize_trampoline): Use asm_trampoline_template.
16654         (TARGET_ASM_TRAMPOLINE_TEMPLATE): Define.
16655         * config/arc/arc.h (TRAMPOLINE_SIZE): Adjust to 16.
16656         * config/arc/arc.md (flush_icache): Delete pattern.
16658 2018-01-08  Claudiu Zissulescu  <claziss@synopsys.com>
16660         * config/arc/arc-c.def (__ARC_UNALIGNED__): New define.
16661         * config/arc/arc.h (STRICT_ALIGNMENT): Control this macro using
16662         munaligned-access.
16664 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
16666         PR target/83681
16667         * config/epiphany/epiphany.h (make_pass_mode_switch_use): Guard
16668         by not USED_FOR_TARGET.
16669         (make_pass_resolve_sw_modes): Likewise.
16671 2018-01-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
16673         * config/nios2/nios2.h (nios2_section_threshold): Guard by not
16674         USED_FOR_TARGET.
16676 2018-01-08  Richard Biener  <rguenther@suse.de>
16678         PR middle-end/83580
16679         * tree-data-ref.c (split_constant_offset): Remove STRIP_NOPS.
16681 2018-01-08  Richard Biener  <rguenther@suse.de>
16683         PR middle-end/83517
16684         * match.pd ((t * 2) / 2) -> t): Add missing :c.
16686 2018-01-06  Aldy Hernandez  <aldyh@redhat.com>
16688         PR middle-end/81897
16689         * tree-ssa-uninit.c (compute_control_dep_chain): Do not bail on
16690         basic blocks with a small number of successors.
16691         (convert_control_dep_chain_into_preds): Improve handling of
16692         forwarder blocks.
16693         (dump_predicates): Split apart into...
16694         (dump_pred_chain): ...here...
16695         (dump_pred_info): ...and here.
16696         (can_one_predicate_be_invalidated_p): Add debugging printfs.
16697         (can_chain_union_be_invalidated_p): Improve check for invalidation
16698         of paths.
16699         (uninit_uses_cannot_happen): Avoid unnecessary if
16700         convert_control_dep_chain_into_preds yielded nothing.
16702 2018-01-06  Martin Sebor  <msebor@redhat.com>
16704         PR tree-optimization/83640
16705         * gimple-ssa-warn-restrict.c (builtin_access::builtin_access): Avoid
16706         subtracting negative offset from size.
16707         (builtin_access::overlap): Adjust offset bounds of the access to fall
16708         within the size of the object if possible.
16710 2018-01-06  Richard Sandiford  <richard.sandiford@linaro.org>
16712         PR rtl-optimization/83699
16713         * expmed.c (extract_bit_field_1): Restrict the vector usage of
16714         extract_bit_field_as_subreg to cases in which the extracted
16715         value is also a vector.
16717         * lra-constraints.c (process_alt_operands): Test for the equivalence
16718         substitutions when detecting a possible reload cycle.
16720 2018-01-06  Jakub Jelinek  <jakub@redhat.com>
16722         PR debug/83480
16723         * toplev.c (process_options): Don't enable debug_nonbind_markers_p
16724         by default if flag_selective_schedling{,2}.  Formatting fixes.
16726         PR rtl-optimization/83682
16727         * rtl.h (const_vec_duplicate_p): Only return true for VEC_DUPLICATE
16728         if it has non-VECTOR_MODE element mode.
16729         (vec_duplicate_p): Likewise.
16731         PR middle-end/83694
16732         * cfgexpand.c (expand_debug_expr): Punt if mode1 is VOIDmode
16733         and bitsize might be greater than MAX_BITSIZE_MODE_ANY_INT.
16735 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
16737         PR target/83604
16738         * config/i386/i386-builtin.def
16739         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
16740         __builtin_ia32_vgf2p8affineqb_v64qi, __builtin_ia32_vgf2p8mulb_v64qi):
16741         Require also OPTION_MASK_ISA_AVX512F in addition to
16742         OPTION_MASK_ISA_GFNI.
16743         (__builtin_ia32_vgf2p8affineinvqb_v16qi_mask,
16744         __builtin_ia32_vgf2p8affineqb_v16qi_mask): Require
16745         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_SSE in addition
16746         to OPTION_MASK_ISA_GFNI.
16747         (__builtin_ia32_vgf2p8mulb_v32qi_mask): Require
16748         OPTION_MASK_ISA_AVX512VL in addition to OPTION_MASK_ISA_GFNI and
16749         OPTION_MASK_ISA_AVX512BW.
16750         (__builtin_ia32_vgf2p8mulb_v16qi_mask): Require
16751         OPTION_MASK_ISA_AVX512VL instead of OPTION_MASK_ISA_AVX512BW in
16752         addition to OPTION_MASK_ISA_GFNI.
16753         (__builtin_ia32_vgf2p8affineinvqb_v16qi,
16754         __builtin_ia32_vgf2p8affineqb_v16qi, __builtin_ia32_vgf2p8mulb_v16qi):
16755         Require OPTION_MASK_ISA_SSE2 instead of OPTION_MASK_ISA_SSE in addition
16756         to OPTION_MASK_ISA_GFNI.
16757         * config/i386/i386.c (def_builtin): Change to builtin isa/isa2 being
16758         a requirement for all ISAs rather than any of them with a few
16759         exceptions.
16760         (ix86_add_new_builtins): Clear OPTION_MASK_ISA_64BIT from isa before
16761         processing.
16762         (ix86_expand_builtin): Require all ISAs from builtin's isa and isa2
16763         bitmasks to be enabled with 3 exceptions, instead of requiring any
16764         enabled ISA with lots of exceptions.
16765         * config/i386/sse.md (vgf2p8affineinvqb_<mode><mask_name>,
16766         vgf2p8affineqb_<mode><mask_name>, vgf2p8mulb_<mode><mask_name>):
16767         Change avx512bw in isa attribute to avx512f.
16768         * config/i386/sgxintrin.h: Add license boilerplate.
16769         * config/i386/vaesintrin.h: Likewise.  Fix macro spelling __AVX512F
16770         to __AVX512F__ and __AVX512VL to __AVX512VL__.
16771         (_mm256_aesdec_epi128, _mm256_aesdeclast_epi128, _mm256_aesenc_epi128,
16772         _mm256_aesenclast_epi128): Enable temporarily avx if __AVX__ is not
16773         defined.
16774         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8,
16775         _mm_gf2p8affineinv_epi64_epi8, _mm_gf2p8affine_epi64_epi8): Enable
16776         temporarily sse2 rather than sse if not enabled already.
16778         PR target/83604
16779         * config/i386/sse.md (VI248_VLBW): Rename to ...
16780         (VI248_AVX512VL): ... this.  Don't guard V32HI with TARGET_AVX512BW.
16781         (vpshrd_<mode><mask_name>, vpshld_<mode><mask_name>,
16782         vpshrdv_<mode>, vpshrdv_<mode>_mask, vpshrdv_<mode>_maskz,
16783         vpshrdv_<mode>_maskz_1, vpshldv_<mode>, vpshldv_<mode>_mask,
16784         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): Use VI248_AVX512VL
16785         mode iterator instead of VI248_VLBW.
16787 2018-01-05  Jan Hubicka  <hubicka@ucw.cz>
16789         * ipa-fnsummary.c (record_modified_bb_info): Add OP.
16790         (record_modified): Skip clobbers; add debug output.
16791         (param_change_prob): Use sreal frequencies.
16793 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
16795         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
16796         punt for user-aligned variables.
16798 2018-01-05  Richard Sandiford  <richard.sandiford@linaro.org>
16800         * tree-chrec.c (chrec_contains_symbols): Return true for
16801         POLY_INT_CST.
16803 2018-01-05  Sudakshina Das  <sudi.das@arm.com>
16805         PR target/82439
16806         * simplify-rtx.c (simplify_relational_operation_1): Add simplifications
16807         of (x|y) == x for BICS pattern.
16809 2018-01-05  Jakub Jelinek  <jakub@redhat.com>
16811         PR tree-optimization/83605
16812         * gimple-ssa-strength-reduction.c: Include tree-eh.h.
16813         (find_candidates_dom_walker::before_dom_children): Ignore stmts that
16814         can throw.
16816 2018-01-05  Sebastian Huber  <sebastian.huber@embedded-brains.de>
16818         * config.gcc (epiphany-*-elf*): Add (epiphany-*-rtems*) configuration.
16819         * config/epiphany/rtems.h: New file.
16821 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
16822             Uros Bizjak  <ubizjak@gmail.com>
16824         PR target/83554
16825         * config/i386/i386.md (*<rotate_insn>hi3_1 splitter): Use
16826         QIreg_operand instead of register_operand predicate.
16827         * config/i386/i386.c (ix86_rop_should_change_byte_p,
16828         set_rop_modrm_reg_bits, ix86_mitigate_rop): Use -mmitigate-rop in
16829         comments instead of -fmitigate[-_]rop.
16831 2018-01-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
16833         PR bootstrap/81926
16834         * cgraphunit.c (symbol_table::compile): Switch to text_section
16835         before calling assembly_start debug hook.
16836         * run-rtl-passes.c (run_rtl_passes): Likewise.
16837         Include output.h.
16839 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
16841         * tree-vrp.c (extract_range_from_binary_expr_1): Check
16842         range_int_cst_p rather than !symbolic_range_p before calling
16843         extract_range_from_multiplicative_op_1.
16845 2018-01-04  Jeff Law  <law@redhat.com>
16847         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Remove
16848         redundant test in assertion.
16850 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
16852         * doc/rtl.texi: Document machine_mode wrapper classes.
16854 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
16856         * fold-const.c (fold_ternary_loc): Check tree_fits_uhwi_p before
16857         using tree_to_uhwi.
16859 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
16861         * tree-ssa-forwprop.c (is_combined_permutation_identity): Allow
16862         the VEC_PERM_EXPR fold to fail.
16864 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
16866         PR debug/83585
16867         * bb-reorder.c (insert_section_boundary_note): Set has_bb_partition
16868         to switched_sections.
16870 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
16872         PR target/83680
16873         * config/arm/arm.c (arm_vectorize_vec_perm_const): Fix inverted
16874         test for d.testing.
16876 2018-01-04  Peter Bergner  <bergner@vnet.ibm.com>
16878         PR target/83387
16879         * config/rs6000/rs6000.c (rs6000_discover_homogeneous_aggregate): Do not
16880         allow arguments in FP registers if TARGET_HARD_FLOAT is false.
16882 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
16884         PR debug/83666
16885         * cfgexpand.c (expand_debug_expr) <case BIT_FIELD_REF>: Punt if mode
16886         is BLKmode and bitpos not zero or mode change is needed.
16888 2018-01-04  Richard Sandiford  <richard.sandiford@linaro.org>
16890         PR target/83675
16891         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): Require
16892         TARGET_VIS2.
16894 2018-01-04  Uros Bizjak  <ubizjak@gmail.com>
16896         PR target/83628
16897         * config/alpha/alpha.md (*sadd<modesuffix>): Use ASHIFT
16898         instead of MULT rtx.  Update all corresponding splitters.
16899         (*saddl_se): Ditto.
16900         (*ssub<modesuffix>): Ditto.
16901         (*ssubl_se): Ditto.
16902         (*cmp_sadd_di): Update split patterns.
16903         (*cmp_sadd_si): Ditto.
16904         (*cmp_sadd_sidi): Ditto.
16905         (*cmp_ssub_di): Ditto.
16906         (*cmp_ssub_si): Ditto.
16907         (*cmp_ssub_sidi): Ditto.
16908         * config/alpha/predicates.md (const23_operand): New predicate.
16909         * config/alpha/alpha.c (alpha_rtx_costs) [PLUS, MINUS]:
16910         Look for ASHIFT, not MULT inner operand.
16911         (alpha_split_conditional_move): Update for *sadd<modesuffix> change.
16913 2018-01-04  Martin Liska  <mliska@suse.cz>
16915         PR gcov-profile/83669
16916         * gcov.c (output_intermediate_file): Add version to intermediate
16917         gcov file.
16918         * doc/gcov.texi: Document new field 'version' in intermediate
16919         file format. Fix location of '-k' option of gcov command.
16921 2018-01-04  Martin Liska  <mliska@suse.cz>
16923         PR ipa/82352
16924         * ipa-icf.c (sem_function::merge): Do not cross comdat boundary.
16926 2018-01-04  Jakub Jelinek  <jakub@redhat.com>
16928         * gimple-ssa-sprintf.c (parse_directive): Cast second dir.len to uhwi.
16930 2018-01-03  Martin Sebor  <msebor@redhat.com>
16932         PR tree-optimization/83655
16933         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call): Avoid
16934         checking calls with invalid arguments.
16936 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
16938         * tree-vect-stmts.c (vect_get_store_rhs): New function.
16939         (vectorizable_mask_load_store): Delete.
16940         (vectorizable_call): Return false for masked loads and stores.
16941         (vectorizable_store): Handle IFN_MASK_STORE.  Use vect_get_store_rhs
16942         instead of gimple_assign_rhs1.
16943         (vectorizable_load): Handle IFN_MASK_LOAD.
16944         (vect_transform_stmt): Don't set is_store for call_vec_info_type.
16946 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
16948         * tree-vect-stmts.c (vect_build_gather_load_calls): New function,
16949         split out from..,
16950         (vectorizable_mask_load_store): ...here.
16951         (vectorizable_load): ...and here.
16953 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
16955         * tree-vect-stmts.c (vect_build_all_ones_mask)
16956         (vect_build_zero_merge_argument): New functions, split out from...
16957         (vectorizable_load): ...here.
16959 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
16961         * tree-vect-stmts.c (vect_check_store_rhs): New function,
16962         split out from...
16963         (vectorizable_mask_load_store): ...here.
16964         (vectorizable_store): ...and here.
16966 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
16968         * tree-vect-stmts.c (vect_check_load_store_mask): New function,
16969         split out from...
16970         (vectorizable_mask_load_store): ...here.
16972 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
16974         * tree-vectorizer.h (vec_load_store_type): Moved from tree-vec-stmts.c
16975         (vect_model_store_cost): Take a vec_load_store_type instead of a
16976         vect_def_type.
16977         * tree-vect-stmts.c (vec_load_store_type): Move to tree-vectorizer.h.
16978         (vect_model_store_cost): Take a vec_load_store_type instead of a
16979         vect_def_type.
16980         (vectorizable_mask_load_store): Update accordingly.
16981         (vectorizable_store): Likewise.
16982         * tree-vect-slp.c (vect_analyze_slp_cost_1): Update accordingly.
16984 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
16986         * tree-vect-loop.c (vect_transform_loop): Stub out scalar
16987         IFN_MASK_LOAD calls here rather than...
16988         * tree-vect-stmts.c (vectorizable_mask_load_store): ...here.
16990 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
16991             Alan Hayward  <alan.hayward@arm.com>
16992             David Sherwood  <david.sherwood@arm.com>
16994         * expmed.c (extract_bit_field_1): For vector extracts,
16995         fall back to extract_bit_field_as_subreg if vec_extract
16996         isn't available.
16998 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
16999             Alan Hayward  <alan.hayward@arm.com>
17000             David Sherwood  <david.sherwood@arm.com>
17002         * lra-spills.c (pseudo_reg_slot_compare): Sort slots by whether
17003         they are variable or constant sized.
17004         (assign_stack_slot_num_and_sort_pseudos): Don't reuse variable-sized
17005         slots for constant-sized data.
17007 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17008             Alan Hayward  <alan.hayward@arm.com>
17009             David Sherwood  <david.sherwood@arm.com>
17011         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern): When
17012         handling COND_EXPRs with boolean comparisons, try to find a better
17013         basis for the mask type than the boolean itself.
17015 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17017         * doc/rtl.texi (MAX_BITSIZE_MODE_ANY_MODE): Describe how the default
17018         is calculated and how it can be overridden.
17019         * genmodes.c (max_bitsize_mode_any_mode): New variable.
17020         (create_modes): Initialize it from MAX_BITSIZE_MODE_ANY_MODE,
17021         if defined.
17022         (emit_max_int): Use it to set the output MAX_BITSIZE_MODE_ANY_MODE,
17023         if nonzero.
17025 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17026             Alan Hayward  <alan.hayward@arm.com>
17027             David Sherwood  <david.sherwood@arm.com>
17029         * config/aarch64/aarch64-protos.h (aarch64_output_simd_mov_immediate):
17030         Remove the mode argument.
17031         (aarch64_simd_valid_immediate): Remove the mode and inverse
17032         arguments.
17033         * config/aarch64/iterators.md (bitsize): New iterator.
17034         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>, and<mode>3)
17035         (ior<mode>3): Update calls to aarch64_output_simd_mov_immediate.
17036         * config/aarch64/constraints.md (Do, Db, Dn): Update calls to
17037         aarch64_simd_valid_immediate.
17038         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Likewise.
17039         (aarch64_reg_or_bic_imm): Likewise.
17040         * config/aarch64/aarch64.c (simd_immediate_info): Replace mvn
17041         with an insn_type enum and msl with a modifier_type enum.
17042         Replace element_width with a scalar_mode.  Change the shift
17043         to unsigned int.  Add constructors for scalar_float_mode and
17044         scalar_int_mode elements.
17045         (aarch64_vect_float_const_representable_p): Delete.
17046         (aarch64_can_const_movi_rtx_p)
17047         (aarch64_simd_scalar_immediate_valid_for_move)
17048         (aarch64_simd_make_constant): Update call to
17049         aarch64_simd_valid_immediate.
17050         (aarch64_advsimd_valid_immediate_hs): New function.
17051         (aarch64_advsimd_valid_immediate): Likewise.
17052         (aarch64_simd_valid_immediate): Remove mode and inverse
17053         arguments.  Rewrite to use the above.  Use const_vec_duplicate_p
17054         to detect duplicated constants and use aarch64_float_const_zero_rtx_p
17055         and aarch64_float_const_representable_p on the result.
17056         (aarch64_output_simd_mov_immediate): Remove mode argument.
17057         Update call to aarch64_simd_valid_immediate and use of
17058         simd_immediate_info.
17059         (aarch64_output_scalar_simd_mov_immediate): Update call
17060         accordingly.
17062 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17063             Alan Hayward  <alan.hayward@arm.com>
17064             David Sherwood  <david.sherwood@arm.com>
17066         * machmode.h (mode_precision): Prefix with CONST_MODE_PRECISION.
17067         (mode_nunits): Likewise CONST_MODE_NUNITS.
17068         * machmode.def (ADJUST_NUNITS): Document.
17069         * genmodes.c (mode_data::need_nunits_adj): New field.
17070         (blank_mode): Update accordingly.
17071         (adj_nunits): New variable.
17072         (print_maybe_const_decl): Replace CATEGORY with a NEEDS_ADJ
17073         parameter.
17074         (emit_mode_size_inline): Set need_bytesize_adj for all modes
17075         listed in adj_nunits.
17076         (emit_mode_nunits_inline): Set need_nunits_adj for all modes
17077         listed in adj_nunits.  Don't emit case statements for such modes.
17078         (emit_insn_modes_h): Emit definitions of CONST_MODE_NUNITS
17079         and CONST_MODE_PRECISION.  Make CONST_MODE_SIZE expand to
17080         nothing if adj_nunits is nonnull.
17081         (emit_mode_precision, emit_mode_nunits): Use print_maybe_const_decl.
17082         (emit_mode_unit_size, emit_mode_base_align, emit_mode_ibit)
17083         (emit_mode_fbit): Update use of print_maybe_const_decl.
17084         (emit_move_size): Likewise.  Treat the array as non-const
17085         if adj_nunits.
17086         (emit_mode_adjustments): Handle adj_nunits.
17088 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17090         * machmode.def (VECTOR_MODES_WITH_PREFIX): Document.
17091         * genmodes.c (VECTOR_MODES_WITH_PREFIX): New macro.
17092         (VECTOR_MODES): Use it.
17093         (make_vector_modes): Take the prefix as an argument.
17095 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17096             Alan Hayward  <alan.hayward@arm.com>
17097             David Sherwood  <david.sherwood@arm.com>
17099         * mode-classes.def (MODE_VECTOR_BOOL): New mode class.
17100         * machmode.h (INTEGRAL_MODE_P, VECTOR_MODE_P): Return true
17101         for MODE_VECTOR_BOOL.
17102         * machmode.def (VECTOR_BOOL_MODE): Document.
17103         * genmodes.c (VECTOR_BOOL_MODE): New macro.
17104         (make_vector_bool_mode): New function.
17105         (complete_mode, emit_mode_wider, emit_mode_adjustments): Handle
17106         MODE_VECTOR_BOOL.
17107         * lto-streamer-in.c (lto_input_mode_table): Likewise.
17108         * rtx-vector-builder.c (rtx_vector_builder::find_cached_value):
17109         Likewise.
17110         * stor-layout.c (int_mode_for_mode): Likewise.
17111         * tree.c (build_vector_type_for_mode): Likewise.
17112         * varasm.c (output_constant_pool_2): Likewise.
17113         * emit-rtl.c (init_emit_once): Make sure that CONST1_RTX (BImode) and
17114         CONSTM1_RTX (BImode) are the same thing.  Initialize const_tiny_rtx
17115         for MODE_VECTOR_BOOL.
17116         * expr.c (expand_expr_real_1): Use VECTOR_MODE_P instead of a list
17117         of mode class checks.
17118         * tree-vect-generic.c (expand_vector_operation): Use VECTOR_MODE_P
17119         instead of a list of mode class checks.
17120         (expand_vector_scalar_condition): Likewise.
17121         (type_for_widest_vector_mode): Handle BImode as an inner mode.
17123 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17124             Alan Hayward  <alan.hayward@arm.com>
17125             David Sherwood  <david.sherwood@arm.com>
17127         * machmode.h (mode_size): Change from unsigned short to
17128         poly_uint16_pod.
17129         (mode_to_bytes): Return a poly_uint16 rather than an unsigned short.
17130         (GET_MODE_SIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
17131         or if measurement_type is not polynomial.
17132         (fixed_size_mode::includes_p): Check for constant-sized modes.
17133         * genmodes.c (emit_mode_size_inline): Make mode_size_inline
17134         return a poly_uint16 rather than an unsigned short.
17135         (emit_mode_size): Change the type of mode_size from unsigned short
17136         to poly_uint16_pod.  Use ZERO_COEFFS for the initializer.
17137         (emit_mode_adjustments): Cope with polynomial vector sizes.
17138         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
17139         for GET_MODE_SIZE.
17140         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
17141         for GET_MODE_SIZE.
17142         * auto-inc-dec.c (try_merge): Treat GET_MODE_SIZE as polynomial.
17143         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Likewise.
17144         * caller-save.c (setup_save_areas): Likewise.
17145         (replace_reg_with_saved_mem): Likewise.
17146         * calls.c (emit_library_call_value_1): Likewise.
17147         * combine-stack-adj.c (combine_stack_adjustments_for_block): Likewise.
17148         * combine.c (simplify_set, make_extraction, simplify_shift_const_1)
17149         (gen_lowpart_for_combine): Likewise.
17150         * convert.c (convert_to_integer_1): Likewise.
17151         * cse.c (equiv_constant, cse_insn): Likewise.
17152         * cselib.c (autoinc_split, cselib_hash_rtx): Likewise.
17153         (cselib_subst_to_values): Likewise.
17154         * dce.c (word_dce_process_block): Likewise.
17155         * df-problems.c (df_word_lr_mark_ref): Likewise.
17156         * dwarf2cfi.c (init_one_dwarf_reg_size): Likewise.
17157         * dwarf2out.c (multiple_reg_loc_descriptor, mem_loc_descriptor)
17158         (concat_loc_descriptor, concatn_loc_descriptor, loc_descriptor)
17159         (rtl_for_decl_location): Likewise.
17160         * emit-rtl.c (gen_highpart, widen_memory_access): Likewise.
17161         * expmed.c (extract_bit_field_1, extract_integral_bit_field): Likewise.
17162         * expr.c (emit_group_load_1, clear_storage_hints): Likewise.
17163         (emit_move_complex, emit_move_multi_word, emit_push_insn): Likewise.
17164         (expand_expr_real_1): Likewise.
17165         * function.c (assign_parm_setup_block_p, assign_parm_setup_block)
17166         (pad_below): Likewise.
17167         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
17168         * gimple-ssa-store-merging.c (rhs_valid_for_store_merging_p): Likewise.
17169         * ira.c (get_subreg_tracking_sizes): Likewise.
17170         * ira-build.c (ira_create_allocno_objects): Likewise.
17171         * ira-color.c (coalesced_pseudo_reg_slot_compare): Likewise.
17172         (ira_sort_regnos_for_alter_reg): Likewise.
17173         * ira-costs.c (record_operand_costs): Likewise.
17174         * lower-subreg.c (interesting_mode_p, simplify_gen_subreg_concatn)
17175         (resolve_simple_move): Likewise.
17176         * lra-constraints.c (get_reload_reg, operands_match_p): Likewise.
17177         (process_addr_reg, simplify_operand_subreg, curr_insn_transform)
17178         (lra_constraints): Likewise.
17179         (CONST_POOL_OK_P): Reject variable-sized modes.
17180         * lra-spills.c (slot, assign_mem_slot, pseudo_reg_slot_compare)
17181         (add_pseudo_to_slot, lra_spill): Likewise.
17182         * omp-low.c (omp_clause_aligned_alignment): Likewise.
17183         * optabs-query.c (get_best_extraction_insn): Likewise.
17184         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
17185         * optabs.c (expand_vec_perm_var, expand_vec_cond_expr): Likewise.
17186         (expand_mult_highpart, valid_multiword_target_p): Likewise.
17187         * recog.c (offsettable_address_addr_space_p): Likewise.
17188         * regcprop.c (maybe_mode_change): Likewise.
17189         * reginfo.c (choose_hard_reg_mode, record_subregs_of_mode): Likewise.
17190         * regrename.c (build_def_use): Likewise.
17191         * regstat.c (dump_reg_info): Likewise.
17192         * reload.c (complex_word_subreg_p, push_reload, find_dummy_reload)
17193         (find_reloads, find_reloads_subreg_address): Likewise.
17194         * reload1.c (eliminate_regs_1): Likewise.
17195         * rtlanal.c (for_each_inc_dec_find_inc_dec, rtx_cost): Likewise.
17196         * simplify-rtx.c (avoid_constant_pool_reference): Likewise.
17197         (simplify_binary_operation_1, simplify_subreg): Likewise.
17198         * targhooks.c (default_function_arg_padding): Likewise.
17199         (default_hard_regno_nregs, default_class_max_nregs): Likewise.
17200         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
17201         (verify_gimple_assign_ternary): Likewise.
17202         * tree-inline.c (estimate_move_cost): Likewise.
17203         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
17204         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Likewise.
17205         (get_address_cost_ainc): Likewise.
17206         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
17207         (vect_supportable_dr_alignment): Likewise.
17208         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
17209         (vectorizable_reduction): Likewise.
17210         * tree-vect-stmts.c (vectorizable_assignment, vectorizable_shift)
17211         (vectorizable_operation, vectorizable_load): Likewise.
17212         * tree.c (build_same_sized_truth_vector_type): Likewise.
17213         * valtrack.c (cleanup_auto_inc_dec): Likewise.
17214         * var-tracking.c (emit_note_insn_var_location): Likewise.
17215         * config/arc/arc.h (ASM_OUTPUT_CASE_END): Use as_a <scalar_int_mode>.
17216         (ADDR_VEC_ALIGN): Likewise.
17218 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17219             Alan Hayward  <alan.hayward@arm.com>
17220             David Sherwood  <david.sherwood@arm.com>
17222         * machmode.h (mode_to_bits): Return a poly_uint16 rather than an
17223         unsigned short.
17224         (GET_MODE_BITSIZE): Return a constant if ONLY_FIXED_SIZE_MODES,
17225         or if measurement_type is polynomial.
17226         * calls.c (shift_return_value): Treat GET_MODE_BITSIZE as polynomial.
17227         * combine.c (make_extraction): Likewise.
17228         * dse.c (find_shift_sequence): Likewise.
17229         * dwarf2out.c (mem_loc_descriptor): Likewise.
17230         * expmed.c (store_integral_bit_field, extract_bit_field_1): Likewise.
17231         (extract_bit_field, extract_low_bits): Likewise.
17232         * expr.c (convert_move, convert_modes, emit_move_insn_1): Likewise.
17233         (optimize_bitfield_assignment_op, expand_assignment): Likewise.
17234         (store_expr_with_bounds, store_field, expand_expr_real_1): Likewise.
17235         * fold-const.c (optimize_bit_field_compare, merge_ranges): Likewise.
17236         * gimple-fold.c (optimize_atomic_compare_exchange_p): Likewise.
17237         * reload.c (find_reloads): Likewise.
17238         * reload1.c (alter_reg): Likewise.
17239         * stor-layout.c (bitwise_mode_for_mode, compute_record_mode): Likewise.
17240         * targhooks.c (default_secondary_memory_needed_mode): Likewise.
17241         * tree-if-conv.c (predicate_mem_writes): Likewise.
17242         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
17243         * tree-vect-patterns.c (adjust_bool_pattern): Likewise.
17244         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
17245         * valtrack.c (dead_debug_insert_temp): Likewise.
17246         * varasm.c (mergeable_constant_section): Likewise.
17247         * config/sh/sh.h (LOCAL_ALIGNMENT): Use as_a <fixed_size_mode>.
17249 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17250             Alan Hayward  <alan.hayward@arm.com>
17251             David Sherwood  <david.sherwood@arm.com>
17253         * expr.c (expand_assignment): Cope with polynomial mode sizes
17254         when assigning to a CONCAT.
17256 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17257             Alan Hayward  <alan.hayward@arm.com>
17258             David Sherwood  <david.sherwood@arm.com>
17260         * machmode.h (mode_precision): Change from unsigned short to
17261         poly_uint16_pod.
17262         (mode_to_precision): Return a poly_uint16 rather than an unsigned
17263         short.
17264         (GET_MODE_PRECISION): Return a constant if ONLY_FIXED_SIZE_MODES,
17265         or if measurement_type is not polynomial.
17266         (HWI_COMPUTABLE_MODE_P): Turn into a function.  Optimize the case
17267         in which the mode is already known to be a scalar_int_mode.
17268         * genmodes.c (emit_mode_precision): Change the type of mode_precision
17269         from unsigned short to poly_uint16_pod.  Use ZERO_COEFFS for the
17270         initializer.
17271         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
17272         for GET_MODE_PRECISION.
17273         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
17274         for GET_MODE_PRECISION.
17275         * combine.c (update_rsp_from_reg_equal): Treat GET_MODE_PRECISION
17276         as polynomial.
17277         (try_combine, find_split_point, combine_simplify_rtx): Likewise.
17278         (expand_field_assignment, make_extraction): Likewise.
17279         (make_compound_operation_int, record_dead_and_set_regs_1): Likewise.
17280         (get_last_value): Likewise.
17281         * convert.c (convert_to_integer_1): Likewise.
17282         * cse.c (cse_insn): Likewise.
17283         * expr.c (expand_expr_real_1): Likewise.
17284         * lra-constraints.c (simplify_operand_subreg): Likewise.
17285         * optabs-query.c (can_atomic_load_p): Likewise.
17286         * optabs.c (expand_atomic_load): Likewise.
17287         (expand_atomic_store): Likewise.
17288         * ree.c (combine_reaching_defs): Likewise.
17289         * rtl.h (partial_subreg_p, paradoxical_subreg_p): Likewise.
17290         * rtlanal.c (nonzero_bits1, lsb_bitfield_op_p): Likewise.
17291         * tree.h (type_has_mode_precision_p): Likewise.
17292         * ubsan.c (instrument_si_overflow): Likewise.
17294 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17295             Alan Hayward  <alan.hayward@arm.com>
17296             David Sherwood  <david.sherwood@arm.com>
17298         * tree.h (TYPE_VECTOR_SUBPARTS): Turn into a function and handle
17299         polynomial numbers of units.
17300         (SET_TYPE_VECTOR_SUBPARTS): Likewise.
17301         (valid_vector_subparts_p): New function.
17302         (build_vector_type): Remove temporary shim and take the number
17303         of units as a poly_uint64 rather than an int.
17304         (build_opaque_vector_type): Take the number of units as a
17305         poly_uint64 rather than an int.
17306         * tree.c (build_vector_from_ctor): Handle polynomial
17307         TYPE_VECTOR_SUBPARTS.
17308         (type_hash_canon_hash, type_cache_hasher::equal): Likewise.
17309         (uniform_vector_p, vector_type_mode, build_vector): Likewise.
17310         (build_vector_from_val): If the number of units is variable,
17311         use build_vec_duplicate_cst for constant operands and
17312         VEC_DUPLICATE_EXPR otherwise.
17313         (make_vector_type): Remove temporary is_constant ().
17314         (build_vector_type, build_opaque_vector_type): Take the number of
17315         units as a poly_uint64 rather than an int.
17316         (check_vector_cst): Handle polynomial TYPE_VECTOR_SUBPARTS and
17317         VECTOR_CST_NELTS.
17318         * cfgexpand.c (expand_debug_expr): Likewise.
17319         * expr.c (count_type_elements, categorize_ctor_elements_1): Likewise.
17320         (store_constructor, expand_expr_real_1): Likewise.
17321         (const_scalar_mask_from_tree): Likewise.
17322         * fold-const-call.c (fold_const_reduction): Likewise.
17323         * fold-const.c (const_binop, const_unop, fold_convert_const): Likewise.
17324         (operand_equal_p, fold_vec_perm, fold_ternary_loc): Likewise.
17325         (native_encode_vector, vec_cst_ctor_to_array): Likewise.
17326         (fold_relational_const): Likewise.
17327         (native_interpret_vector): Likewise.  Change the size from an
17328         int to an unsigned int.
17329         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Handle polynomial
17330         TYPE_VECTOR_SUBPARTS.
17331         (gimple_fold_indirect_ref, gimple_build_vector): Likewise.
17332         (gimple_build_vector_from_val): Use VEC_DUPLICATE_EXPR when
17333         duplicating a non-constant operand into a variable-length vector.
17334         * hsa-brig.c (hsa_op_immed::emit_to_buffer): Handle polynomial
17335         TYPE_VECTOR_SUBPARTS and VECTOR_CST_NELTS.
17336         * ipa-icf.c (sem_variable::equals): Likewise.
17337         * match.pd: Likewise.
17338         * omp-simd-clone.c (simd_clone_subparts): Likewise.
17339         * print-tree.c (print_node): Likewise.
17340         * stor-layout.c (layout_type): Likewise.
17341         * targhooks.c (default_builtin_vectorization_cost): Likewise.
17342         * tree-cfg.c (verify_gimple_comparison): Likewise.
17343         (verify_gimple_assign_binary): Likewise.
17344         (verify_gimple_assign_ternary): Likewise.
17345         (verify_gimple_assign_single): Likewise.
17346         * tree-pretty-print.c (dump_generic_node): Likewise.
17347         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
17348         (simplify_bitfield_ref, is_combined_permutation_identity): Likewise.
17349         * tree-vect-data-refs.c (vect_permute_store_chain): Likewise.
17350         (vect_grouped_load_supported, vect_permute_load_chain): Likewise.
17351         (vect_shift_permute_load_chain): Likewise.
17352         * tree-vect-generic.c (nunits_for_known_piecewise_op): Likewise.
17353         (expand_vector_condition, optimize_vector_constructor): Likewise.
17354         (lower_vec_perm, get_compute_type): Likewise.
17355         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
17356         (get_initial_defs_for_reduction, vect_transform_loop): Likewise.
17357         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
17358         (vect_recog_mask_conversion_pattern): Likewise.
17359         * tree-vect-slp.c (vect_supported_load_permutation_p): Likewise.
17360         (vect_get_constant_vectors, vect_transform_slp_perm_load): Likewise.
17361         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
17362         (get_group_load_store_type, vectorizable_mask_load_store): Likewise.
17363         (vectorizable_bswap, simd_clone_subparts, vectorizable_assignment)
17364         (vectorizable_shift, vectorizable_operation, vectorizable_store)
17365         (vectorizable_load, vect_is_simple_cond, vectorizable_comparison)
17366         (supportable_widening_operation): Likewise.
17367         (supportable_narrowing_operation): Likewise.
17368         * tree-vector-builder.c (tree_vector_builder::binary_encoded_nelts):
17369         Likewise.
17370         * varasm.c (output_constant): Likewise.
17372 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17373             Alan Hayward  <alan.hayward@arm.com>
17374             David Sherwood  <david.sherwood@arm.com>
17376         * tree-vect-data-refs.c (vect_permute_store_chain): Reorganize
17377         so that both the length == 3 and length != 3 cases set up their
17378         own permute vectors.  Add comments explaining why we know the
17379         number of elements is constant.
17380         (vect_permute_load_chain): Likewise.
17382 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17383             Alan Hayward  <alan.hayward@arm.com>
17384             David Sherwood  <david.sherwood@arm.com>
17386         * machmode.h (mode_nunits): Change from unsigned char to
17387         poly_uint16_pod.
17388         (ONLY_FIXED_SIZE_MODES): New macro.
17389         (pod_mode::measurement_type, scalar_int_mode::measurement_type)
17390         (scalar_float_mode::measurement_type, scalar_mode::measurement_type)
17391         (complex_mode::measurement_type, fixed_size_mode::measurement_type):
17392         New typedefs.
17393         (mode_to_nunits): Return a poly_uint16 rather than an unsigned short.
17394         (GET_MODE_NUNITS): Return a constant if ONLY_FIXED_SIZE_MODES,
17395         or if measurement_type is not polynomial.
17396         * genmodes.c (ZERO_COEFFS): New macro.
17397         (emit_mode_nunits_inline): Make mode_nunits_inline return a
17398         poly_uint16.
17399         (emit_mode_nunits): Change the type of mode_nunits to poly_uint16_pod.
17400         Use ZERO_COEFFS when emitting initializers.
17401         * data-streamer.h (bp_pack_poly_value): New function.
17402         (bp_unpack_poly_value): Likewise.
17403         * lto-streamer-in.c (lto_input_mode_table): Use bp_unpack_poly_value
17404         for GET_MODE_NUNITS.
17405         * lto-streamer-out.c (lto_write_mode_table): Use bp_pack_poly_value
17406         for GET_MODE_NUNITS.
17407         * tree.c (make_vector_type): Remove temporary shim and make
17408         the real function take the number of units as a poly_uint64
17409         rather than an int.
17410         (build_vector_type_for_mode): Handle polynomial nunits.
17411         * dwarf2out.c (loc_descriptor, add_const_value_attribute): Likewise.
17412         * emit-rtl.c (const_vec_series_p_1): Likewise.
17413         (gen_rtx_CONST_VECTOR): Likewise.
17414         * fold-const.c (test_vec_duplicate_folding): Likewise.
17415         * genrecog.c (validate_pattern): Likewise.
17416         * optabs-query.c (can_vec_perm_var_p, can_mult_highpart_p): Likewise.
17417         * optabs-tree.c (expand_vec_cond_expr_p): Likewise.
17418         * optabs.c (expand_vector_broadcast, expand_binop_directly): Likewise.
17419         (shift_amt_for_vec_perm_mask, expand_vec_perm_var): Likewise.
17420         (expand_vec_cond_expr, expand_mult_highpart): Likewise.
17421         * rtlanal.c (subreg_get_info): Likewise.
17422         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
17423         (vect_grouped_load_supported): Likewise.
17424         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
17425         * tree-vect-loop.c (have_whole_vector_shift): Likewise.
17426         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
17427         (simplify_const_unary_operation, simplify_binary_operation_1)
17428         (simplify_const_binary_operation, simplify_ternary_operation)
17429         (test_vector_ops_duplicate, test_vector_ops): Likewise.
17430         (simplify_immed_subreg): Use GET_MODE_NUNITS on a fixed_size_mode
17431         instead of CONST_VECTOR_NUNITS.
17432         * varasm.c (output_constant_pool_2): Likewise.
17433         * rtx-vector-builder.c (rtx_vector_builder::build): Only include the
17434         explicit-encoded elements in the XVEC for variable-length vectors.
17436 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17438         * lra-constraints.c (curr_insn_transform): Use partial_subreg_p.
17440 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17441             Alan Hayward  <alan.hayward@arm.com>
17442             David Sherwood  <david.sherwood@arm.com>
17444         * coretypes.h (fixed_size_mode): Declare.
17445         (fixed_size_mode_pod): New typedef.
17446         * builtins.h (target_builtins::x_apply_args_mode)
17447         (target_builtins::x_apply_result_mode): Change type to
17448         fixed_size_mode_pod.
17449         * builtins.c (apply_args_size, apply_result_size, result_vector)
17450         (expand_builtin_apply_args_1, expand_builtin_apply)
17451         (expand_builtin_return): Update accordingly.
17453 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17455         * cse.c (hash_rtx_cb): Hash only the encoded elements.
17456         * cselib.c (cselib_hash_rtx): Likewise.
17457         * expmed.c (make_tree): Build VECTOR_CSTs directly from the
17458         CONST_VECTOR encoding.
17460 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
17461             Jeff Law  <law@redhat.com>
17463         PR target/83641
17464         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): For
17465         noreturn probe, use gen_pop instead of ix86_emit_restore_reg_using_pop,
17466         only set RTX_FRAME_RELATED_P on both the push and pop if cfa_reg is sp
17467         and add REG_CFA_ADJUST_CFA notes in that case to both insns.
17469         PR target/83641
17470         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Do not
17471         explicitly probe *sp in a noreturn function if there were any callee
17472         register saves or frame pointer is needed.
17474 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
17476         PR debug/83621
17477         * cfgexpand.c (expand_debug_expr): Return NULL if mode is
17478         BLKmode for ternary, binary or unary expressions.
17480         PR debug/83645
17481         * var-tracking.c (delete_vta_debug_insn): New inline function.
17482         (delete_vta_debug_insns): Add USE_CFG argument, if true, walk just
17483         insns from get_insns () to NULL instead of each bb separately.
17484         Use delete_vta_debug_insn.  No longer static.
17485         (vt_debug_insns_local, variable_tracking_main_1): Adjust
17486         delete_vta_debug_insns callers.
17487         * rtl.h (delete_vta_debug_insns): Declare.
17488         * final.c (rest_of_handle_final): Call delete_vta_debug_insns
17489         instead of variable_tracking_main.
17491 2018-01-03  Martin Sebor  <msebor@redhat.com>
17493         PR tree-optimization/83603
17494         * calls.c (maybe_warn_nonstring_arg): Avoid accessing function
17495         arguments past the endof the argument list in functions declared
17496         without a prototype.
17497         * gimple-ssa-warn-restrict.c (wrestrict_dom_walker::check_call):
17498         Avoid checking when arguments are null.
17500 2018-01-03  Martin Sebor  <msebor@redhat.com>
17502         PR c/83559
17503         * doc/extend.texi (attribute const): Fix a typo.
17504         * ipa-pure-const.c ((warn_function_const, warn_function_pure): Avoid
17505         issuing -Wsuggest-attribute for void functions.
17507 2018-01-03  Martin Sebor  <msebor@redhat.com>
17509         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref): Use
17510         offset_int::from instead of wide_int::to_shwi.
17511         (maybe_diag_overlap): Remove assertion.
17512         Use HOST_WIDE_INT_PRINT_DEC instead of %lli.
17513         * gimple-ssa-sprintf.c (format_directive): Same.
17514         (parse_directive): Same.
17515         (sprintf_dom_walker::compute_format_length): Same.
17516         (try_substitute_return_value): Same.
17518 2018-01-03  Jeff Law  <law@redhat.com>
17520         PR middle-end/83654
17521         * explow.c (anti_adjust_stack_and_probe_stack_clash): Test a
17522         non-constant residual for zero at runtime and avoid probing in
17523         that case.  Reorganize code for trailing problem to mirror handling
17524         of the residual.
17526 2018-01-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
17528         PR tree-optimization/83501
17529         * tree-ssa-strlen.c (get_string_cst): New.
17530         (handle_char_store): Call get_string_cst.
17532 2018-01-03  Martin Liska  <mliska@suse.cz>
17534         PR tree-optimization/83593
17535         * tree-ssa-strlen.c: Include tree-cfg.h.
17536         (strlen_check_and_optimize_stmt): Add new argument cleanup_eh.
17537         (strlen_dom_walker): Add new member variable m_cleanup_cfg.
17538         (strlen_dom_walker::strlen_dom_walker): Initialize m_cleanup_cfg
17539         to false.
17540         (strlen_dom_walker::before_dom_children): Call
17541         gimple_purge_dead_eh_edges. Dump tranformation with details
17542         dump flags.
17543         (strlen_dom_walker::before_dom_children): Update call by adding
17544         new argument cleanup_eh.
17545         (pass_strlen::execute): Return TODO_cleanup_cfg if needed.
17547 2018-01-03  Martin Liska  <mliska@suse.cz>
17549         PR ipa/83549
17550         * cif-code.def (VARIADIC_THUNK): New enum value.
17551         * ipa-fnsummary.c (compute_fn_summary): Do not inline variadic
17552         thunks.
17554 2018-01-03  Jan Beulich  <jbeulich@suse.com>
17556         * sse.md (mov<mode>_internal): Tighten condition for when to use
17557         vmovdqu<ssescalarsize> for TI and OI modes.
17559 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
17561         Update copyright years.
17563 2018-01-03  Martin Liska  <mliska@suse.cz>
17565         PR ipa/83594
17566         * ipa-visibility.c (function_and_variable_visibility): Skip
17567         functions with noipa attribure.
17569 2018-01-03  Jakub Jelinek  <jakub@redhat.com>
17571         * gcc.c (process_command): Update copyright notice dates.
17572         * gcov-dump.c (print_version): Ditto.
17573         * gcov.c (print_version): Ditto.
17574         * gcov-tool.c (print_version): Ditto.
17575         * gengtype.c (create_file): Ditto.
17576         * doc/cpp.texi: Bump @copying's copyright year.
17577         * doc/cppinternals.texi: Ditto.
17578         * doc/gcc.texi: Ditto.
17579         * doc/gccint.texi: Ditto.
17580         * doc/gcov.texi: Ditto.
17581         * doc/install.texi: Ditto.
17582         * doc/invoke.texi: Ditto.
17584 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17586         * vector-builder.h (vector_builder::m_full_nelts): Change from
17587         unsigned int to poly_uint64.
17588         (vector_builder::full_nelts): Update prototype accordingly.
17589         (vector_builder::new_vector): Likewise.
17590         (vector_builder::encoded_full_vector_p): Handle polynomial full_nelts.
17591         (vector_builder::operator ==): Likewise.
17592         (vector_builder::finalize): Likewise.
17593         * int-vector-builder.h (int_vector_builder::int_vector_builder):
17594         Take the number of elements as a poly_uint64 rather than an
17595         unsigned int.
17596         * vec-perm-indices.h (vec_perm_indices::m_nelts_per_input): Change
17597         from unsigned int to poly_uint64.
17598         (vec_perm_indices::vec_perm_indices): Update prototype accordingly.
17599         (vec_perm_indices::new_vector): Likewise.
17600         (vec_perm_indices::length): Likewise.
17601         (vec_perm_indices::nelts_per_input): Likewise.
17602         (vec_perm_indices::input_nelts): Likewise.
17603         * vec-perm-indices.c (vec_perm_indices::new_vector): Take the
17604         number of elements per input as a poly_uint64 rather than an
17605         unsigned int.  Use the original encoding for variable-length
17606         vectors, rather than clamping each individual element.
17607         For the second and subsequent elements in each pattern,
17608         clamp the step and base before clamping their sum.
17609         (vec_perm_indices::series_p): Handle polynomial element counts.
17610         (vec_perm_indices::all_in_range_p): Likewise.
17611         (vec_perm_indices_to_tree): Likewise.
17612         (vec_perm_indices_to_rtx): Likewise.
17613         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
17614         * tree-vector-builder.c (tree_vector_builder::new_unary_operation)
17615         (tree_vector_builder::new_binary_operation): Handle polynomial
17616         element counts.  Return false if we need to know the number
17617         of elements at compile time.
17618         * fold-const.c (fold_vec_perm): Punt if the number of elements
17619         isn't known at compile time.
17621 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17623         * vec-perm-indices.h (vec_perm_builder): Change element type
17624         from HOST_WIDE_INT to poly_int64.
17625         (vec_perm_indices::element_type): Update accordingly.
17626         (vec_perm_indices::clamp): Handle polynomial element_types.
17627         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
17628         (vec_perm_indices::all_in_range_p): Likewise.
17629         (tree_to_vec_perm_builder): Check for poly_int64 trees rather
17630         than shwi trees.
17631         * vector-builder.h (vector_builder::stepped_sequence_p): Handle
17632         polynomial vec_perm_indices element types.
17633         * int-vector-builder.h (int_vector_builder::equal_p): Likewise.
17634         * fold-const.c (fold_vec_perm): Likewise.
17635         * optabs.c (shift_amt_for_vec_perm_mask): Likewise.
17636         * tree-vect-generic.c (lower_vec_perm): Likewise.
17637         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
17638         * config/aarch64/aarch64.c (aarch64_evpc_tbl): Cast d->perm
17639         element type to HOST_WIDE_INT.
17641 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17642             Alan Hayward  <alan.hayward@arm.com>
17643             David Sherwood  <david.sherwood@arm.com>
17645         * alias.c (addr_side_effect_eval): Take the size as a poly_int64
17646         rather than an int.  Use plus_constant.
17647         (memrefs_conflict_p): Take the sizes as poly_int64s rather than ints.
17648         Take the offset "c" as a poly_int64 rather than a HOST_WIDE_INT.
17650 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17651             Alan Hayward  <alan.hayward@arm.com>
17652             David Sherwood  <david.sherwood@arm.com>
17654         * calls.c (emit_call_1, expand_call): Change struct_value_size from
17655         a HOST_WIDE_INT to a poly_int64.
17657 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17658             Alan Hayward  <alan.hayward@arm.com>
17659             David Sherwood  <david.sherwood@arm.com>
17661         * calls.c (load_register_parameters): Cope with polynomial
17662         mode sizes.  Require a constant size for BLKmode parameters
17663         that aren't described by a PARALLEL.  If BLOCK_REG_PADDING
17664         forces a parameter to be padded at the lsb end in order to
17665         fill a complete number of words, require the parameter size
17666         to be ordered wrt UNITS_PER_WORD.
17668 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17669             Alan Hayward  <alan.hayward@arm.com>
17670             David Sherwood  <david.sherwood@arm.com>
17672         * reload1.c (spill_stack_slot_width): Change element type
17673         from unsigned int to poly_uint64_pod.
17674         (alter_reg): Treat mode sizes as polynomial.
17676 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17677             Alan Hayward  <alan.hayward@arm.com>
17678             David Sherwood  <david.sherwood@arm.com>
17680         * reload.c (complex_word_subreg_p): New function.
17681         (reload_inner_reg_of_subreg, push_reload): Use it.
17683 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17684             Alan Hayward  <alan.hayward@arm.com>
17685             David Sherwood  <david.sherwood@arm.com>
17687         * lra-constraints.c (process_alt_operands): Reject matched
17688         operands whose sizes aren't ordered.
17689         (match_reload): Refer to this check here.
17691 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17692             Alan Hayward  <alan.hayward@arm.com>
17693             David Sherwood  <david.sherwood@arm.com>
17695         * builtins.c (expand_ifn_atomic_compare_exchange_into_call): Assert
17696         that the mode size is in the set {1, 2, 4, 8, 16}.
17698 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17699             Alan Hayward  <alan.hayward@arm.com>
17700             David Sherwood  <david.sherwood@arm.com>
17702         * var-tracking.c (adjust_mems): Treat mode sizes as polynomial.
17703         Use plus_constant instead of gen_rtx_PLUS.
17705 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17706             Alan Hayward  <alan.hayward@arm.com>
17707             David Sherwood  <david.sherwood@arm.com>
17709         * config/cr16/cr16-protos.h (cr16_push_rounding): Declare.
17710         * config/cr16/cr16.h (PUSH_ROUNDING): Move implementation to...
17711         * config/cr16/cr16.c (cr16_push_rounding): ...this new function.
17712         * config/h8300/h8300-protos.h (h8300_push_rounding): Declare.
17713         * config/h8300/h8300.h (PUSH_ROUNDING): Move implementation to...
17714         * config/h8300/h8300.c (h8300_push_rounding): ...this new function.
17715         * config/i386/i386-protos.h (ix86_push_rounding): Declare.
17716         * config/i386/i386.h (PUSH_ROUNDING): Move implementation to...
17717         * config/i386/i386.c (ix86_push_rounding): ...this new function.
17718         * config/m32c/m32c-protos.h (m32c_push_rounding): Take and return
17719         a poly_int64.
17720         * config/m32c/m32c.c (m32c_push_rounding): Likewise.
17721         * config/m68k/m68k-protos.h (m68k_push_rounding): Declare.
17722         * config/m68k/m68k.h (PUSH_ROUNDING): Move implementation to...
17723         * config/m68k/m68k.c (m68k_push_rounding): ...this new function.
17724         * config/pdp11/pdp11-protos.h (pdp11_push_rounding): Declare.
17725         * config/pdp11/pdp11.h (PUSH_ROUNDING): Move implementation to...
17726         * config/pdp11/pdp11.c (pdp11_push_rounding): ...this new function.
17727         * config/stormy16/stormy16-protos.h (xstormy16_push_rounding): Declare.
17728         * config/stormy16/stormy16.h (PUSH_ROUNDING): Move implementation to...
17729         * config/stormy16/stormy16.c (xstormy16_push_rounding): ...this new
17730         function.
17731         * expr.c (emit_move_resolve_push): Treat the input and result
17732         of PUSH_ROUNDING as a poly_int64.
17733         (emit_move_complex_push, emit_single_push_insn_1): Likewise.
17734         (emit_push_insn): Likewise.
17735         * lra-eliminations.c (mark_not_eliminable): Likewise.
17736         * recog.c (push_operand): Likewise.
17737         * reload1.c (elimination_effects): Likewise.
17738         * rtlanal.c (nonzero_bits1): Likewise.
17739         * calls.c (store_one_arg): Likewise.  Require the padding to be
17740         known at compile time.
17742 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17743             Alan Hayward  <alan.hayward@arm.com>
17744             David Sherwood  <david.sherwood@arm.com>
17746         * expr.c (emit_single_push_insn_1): Treat mode sizes as polynomial.
17747         Use plus_constant instead of gen_rtx_PLUS.
17749 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17750             Alan Hayward  <alan.hayward@arm.com>
17751             David Sherwood  <david.sherwood@arm.com>
17753         * auto-inc-dec.c (set_inc_state): Take the mode size as a poly_int64
17754         rather than an int.
17756 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17757             Alan Hayward  <alan.hayward@arm.com>
17758             David Sherwood  <david.sherwood@arm.com>
17760         * expr.c (expand_expr_real_1): Use tree_to_poly_uint64
17761         instead of int_size_in_bytes when handling VIEW_CONVERT_EXPRs
17762         via stack temporaries.  Treat the mode size as polynomial too.
17764 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17765             Alan Hayward  <alan.hayward@arm.com>
17766             David Sherwood  <david.sherwood@arm.com>
17768         * expr.c (expand_expr_real_2): When handling conversions involving
17769         unions, apply tree_to_poly_uint64 to the TYPE_SIZE rather than
17770         multiplying int_size_in_bytes by BITS_PER_UNIT.  Treat GET_MODE_BISIZE
17771         as a poly_uint64 too.
17773 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17774             Alan Hayward  <alan.hayward@arm.com>
17775             David Sherwood  <david.sherwood@arm.com>
17777         * rtlanal.c (subreg_get_info): Handle polynomial mode sizes.
17779 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17780             Alan Hayward  <alan.hayward@arm.com>
17781             David Sherwood  <david.sherwood@arm.com>
17783         * combine.c (can_change_dest_mode): Handle polynomial
17784         REGMODE_NATURAL_SIZE.
17785         * expmed.c (store_bit_field_1): Likewise.
17786         * expr.c (store_constructor): Likewise.
17787         * emit-rtl.c (validate_subreg): Operate on polynomial mode sizes
17788         and polynomial REGMODE_NATURAL_SIZE.
17789         (gen_lowpart_common): Likewise.
17790         * reginfo.c (record_subregs_of_mode): Likewise.
17791         * rtlanal.c (read_modify_subreg_p): Likewise.
17793 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17794             Alan Hayward  <alan.hayward@arm.com>
17795             David Sherwood  <david.sherwood@arm.com>
17797         * internal-fn.c (expand_vector_ubsan_overflow): Handle polynomial
17798         numbers of elements.
17800 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17801             Alan Hayward  <alan.hayward@arm.com>
17802             David Sherwood  <david.sherwood@arm.com>
17804         * match.pd: Cope with polynomial numbers of vector elements.
17806 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17807             Alan Hayward  <alan.hayward@arm.com>
17808             David Sherwood  <david.sherwood@arm.com>
17810         * fold-const.c (fold_indirect_ref_1): Handle polynomial offsets
17811         in a POINTER_PLUS_EXPR.
17813 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17814             Alan Hayward  <alan.hayward@arm.com>
17815             David Sherwood  <david.sherwood@arm.com>
17817         * omp-simd-clone.c (simd_clone_subparts): New function.
17818         (simd_clone_init_simd_arrays): Use it instead of TYPE_VECTOR_SUBPARTS.
17819         (ipa_simd_modify_function_body): Likewise.
17821 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17822             Alan Hayward  <alan.hayward@arm.com>
17823             David Sherwood  <david.sherwood@arm.com>
17825         * tree-vect-generic.c (nunits_for_known_piecewise_op): New function.
17826         (expand_vector_piecewise): Use it instead of TYPE_VECTOR_SUBPARTS.
17827         (expand_vector_addition, add_rshift, expand_vector_divmod): Likewise.
17828         (expand_vector_condition, vector_element): Likewise.
17829         (subparts_gt): New function.
17830         (get_compute_type): Use subparts_gt.
17831         (count_type_subparts): Delete.
17832         (expand_vector_operations_1): Use subparts_gt instead of
17833         count_type_subparts.
17835 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17836             Alan Hayward  <alan.hayward@arm.com>
17837             David Sherwood  <david.sherwood@arm.com>
17839         * tree-vect-data-refs.c (vect_no_alias_p): Replace with...
17840         (vect_compile_time_alias): ...this new function.  Do the calculation
17841         on poly_ints rather than trees.
17842         (vect_prune_runtime_alias_test_list): Update call accordingly.
17844 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17845             Alan Hayward  <alan.hayward@arm.com>
17846             David Sherwood  <david.sherwood@arm.com>
17848         * tree-vect-slp.c (vect_build_slp_tree_1): Handle polynomial
17849         numbers of units.
17850         (vect_schedule_slp_instance): Likewise.
17852 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17853             Alan Hayward  <alan.hayward@arm.com>
17854             David Sherwood  <david.sherwood@arm.com>
17856         * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
17857         constant and extern definitions for variable-length vectors.
17858         (vect_get_constant_vectors): Note that the number of units
17859         is known to be constant.
17861 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17862             Alan Hayward  <alan.hayward@arm.com>
17863             David Sherwood  <david.sherwood@arm.com>
17865         * tree-vect-stmts.c (vectorizable_conversion): Treat the number
17866         of units as polynomial.  Choose between WIDE and NARROW based
17867         on multiple_p.
17869 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17870             Alan Hayward  <alan.hayward@arm.com>
17871             David Sherwood  <david.sherwood@arm.com>
17873         * tree-vect-stmts.c (simd_clone_subparts): New function.
17874         (vectorizable_simd_clone_call): Use it instead of TYPE_VECTOR_SUBPARTS.
17876 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17877             Alan Hayward  <alan.hayward@arm.com>
17878             David Sherwood  <david.sherwood@arm.com>
17880         * tree-vect-stmts.c (vectorizable_call): Treat the number of
17881         vectors as polynomial.  Use build_index_vector for
17882         IFN_GOMP_SIMD_LANE.
17884 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17885             Alan Hayward  <alan.hayward@arm.com>
17886             David Sherwood  <david.sherwood@arm.com>
17888         * tree-vect-stmts.c (get_load_store_type): Treat the number of
17889         units as polynomial.  Reject VMAT_ELEMENTWISE and VMAT_STRIDED_SLP
17890         for variable-length vectors.
17891         (vectorizable_mask_load_store): Treat the number of units as
17892         polynomial, asserting that it is constant if the condition has
17893         already been enforced.
17894         (vectorizable_store, vectorizable_load): Likewise.
17896 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17897             Alan Hayward  <alan.hayward@arm.com>
17898             David Sherwood  <david.sherwood@arm.com>
17900         * tree-vect-loop.c (vectorizable_live_operation): Treat the number
17901         of units as polynomial.  Punt if we can't tell at compile time
17902         which vector contains the final result.
17904 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17905             Alan Hayward  <alan.hayward@arm.com>
17906             David Sherwood  <david.sherwood@arm.com>
17908         * tree-vect-loop.c (vectorizable_induction): Treat the number
17909         of units as polynomial.  Punt on SLP inductions.  Use an integer
17910         VEC_SERIES_EXPR for variable-length integer reductions.  Use a
17911         cast of such a series for variable-length floating-point
17912         reductions.
17914 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17915             Alan Hayward  <alan.hayward@arm.com>
17916             David Sherwood  <david.sherwood@arm.com>
17918         * tree.h (build_index_vector): Declare.
17919         * tree.c (build_index_vector): New function.
17920         * tree-vect-loop.c (get_initial_defs_for_reduction): Treat the number
17921         of units as polynomial, forcibly converting it to a constant if
17922         vectorizable_reduction has already enforced the condition.
17923         (vect_create_epilog_for_reduction): Likewise.  Use build_index_vector
17924         to create a {1,2,3,...} vector.
17925         (vectorizable_reduction): Treat the number of units as polynomial.
17926         Choose vectype_in based on the largest scalar element size rather
17927         than the smallest number of units.  Enforce the restrictions
17928         relied on above.
17930 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17931             Alan Hayward  <alan.hayward@arm.com>
17932             David Sherwood  <david.sherwood@arm.com>
17934         * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
17935         number of units as polynomial.
17937 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17938             Alan Hayward  <alan.hayward@arm.com>
17939             David Sherwood  <david.sherwood@arm.com>
17941         * target.h (vector_sizes, auto_vector_sizes): New typedefs.
17942         * target.def (autovectorize_vector_sizes): Return the vector sizes
17943         by pointer, using vector_sizes rather than a bitmask.
17944         * targhooks.h (default_autovectorize_vector_sizes): Update accordingly.
17945         * targhooks.c (default_autovectorize_vector_sizes): Likewise.
17946         * config/aarch64/aarch64.c (aarch64_autovectorize_vector_sizes):
17947         Likewise.
17948         * config/arc/arc.c (arc_autovectorize_vector_sizes): Likewise.
17949         * config/arm/arm.c (arm_autovectorize_vector_sizes): Likewise.
17950         * config/i386/i386.c (ix86_autovectorize_vector_sizes): Likewise.
17951         * config/mips/mips.c (mips_autovectorize_vector_sizes): Likewise.
17952         * omp-general.c (omp_max_vf): Likewise.
17953         * omp-low.c (omp_clause_aligned_alignment): Likewise.
17954         * optabs-query.c (can_vec_mask_load_store_p): Likewise.
17955         * tree-vect-loop.c (vect_analyze_loop): Likewise.
17956         * tree-vect-slp.c (vect_slp_bb): Likewise.
17957         * doc/tm.texi: Regenerate.
17958         * tree-vectorizer.h (current_vector_size): Change from an unsigned int
17959         to a poly_uint64.
17960         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Take
17961         the vector size as a poly_uint64 rather than an unsigned int.
17962         (current_vector_size): Change from an unsigned int to a poly_uint64.
17963         (get_vectype_for_scalar_type): Update accordingly.
17964         * tree.h (build_truth_vector_type): Take the size and number of
17965         units as a poly_uint64 rather than an unsigned int.
17966         (build_vector_type): Add a temporary overload that takes
17967         the number of units as a poly_uint64 rather than an unsigned int.
17968         * tree.c (make_vector_type): Likewise.
17969         (build_truth_vector_type): Take the number of units as a poly_uint64
17970         rather than an unsigned int.
17972 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17973             Alan Hayward  <alan.hayward@arm.com>
17974             David Sherwood  <david.sherwood@arm.com>
17976         * target.def (get_mask_mode): Take the number of units and length
17977         as poly_uint64s rather than unsigned ints.
17978         * targhooks.h (default_get_mask_mode): Update accordingly.
17979         * targhooks.c (default_get_mask_mode): Likewise.
17980         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
17981         * doc/tm.texi: Regenerate.
17983 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17984             Alan Hayward  <alan.hayward@arm.com>
17985             David Sherwood  <david.sherwood@arm.com>
17987         * omp-general.h (omp_max_vf): Return a poly_uint64 instead of an int.
17988         * omp-general.c (omp_max_vf): Likewise.
17989         * omp-expand.c (omp_adjust_chunk_size): Update call to omp_max_vf.
17990         (expand_omp_simd): Handle polynomial safelen.
17991         * omp-low.c (omplow_simd_context): Add a default constructor.
17992         (omplow_simd_context::max_vf): Change from int to poly_uint64.
17993         (lower_rec_simd_input_clauses): Update accordingly.
17994         (lower_rec_input_clauses): Likewise.
17996 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
17997             Alan Hayward  <alan.hayward@arm.com>
17998             David Sherwood  <david.sherwood@arm.com>
18000         * tree-vectorizer.h (vect_nunits_for_cost): New function.
18001         * tree-vect-loop.c (vect_model_reduction_cost): Use it.
18002         * tree-vect-slp.c (vect_analyze_slp_cost_1): Likewise.
18003         (vect_analyze_slp_cost): Likewise.
18004         * tree-vect-stmts.c (vect_model_store_cost): Likewise.
18005         (vect_model_load_cost): Likewise.
18007 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18008             Alan Hayward  <alan.hayward@arm.com>
18009             David Sherwood  <david.sherwood@arm.com>
18011         * tree-vect-slp.c (vect_record_max_nunits, vect_build_slp_tree_1)
18012         (vect_build_slp_tree_2, vect_build_slp_tree): Change max_nunits
18013         from an unsigned int * to a poly_uint64_pod *.
18014         (calculate_unrolling_factor): New function.
18015         (vect_analyze_slp_instance): Use it.  Track polynomial max_nunits.
18017 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18018             Alan Hayward  <alan.hayward@arm.com>
18019             David Sherwood  <david.sherwood@arm.com>
18021         * tree-vectorizer.h (_slp_instance::unrolling_factor): Change
18022         from an unsigned int to a poly_uint64.
18023         (_loop_vec_info::slp_unrolling_factor): Likewise.
18024         (_loop_vec_info::vectorization_factor): Change from an int
18025         to a poly_uint64.
18026         (MAX_VECTORIZATION_FACTOR): Bump from 64 to INT_MAX.
18027         (vect_get_num_vectors): New function.
18028         (vect_update_max_nunits, vect_vf_for_cost): Likewise.
18029         (vect_get_num_copies): Use vect_get_num_vectors.
18030         (vect_analyze_data_ref_dependences): Change max_vf from an int *
18031         to an unsigned int *.
18032         (vect_analyze_data_refs): Change min_vf from an int * to a
18033         poly_uint64 *.
18034         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
18035         than an unsigned HOST_WIDE_INT.
18036         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr)
18037         (vect_analyze_data_ref_dependence): Change max_vf from an int *
18038         to an unsigned int *.
18039         (vect_analyze_data_ref_dependences): Likewise.
18040         (vect_compute_data_ref_alignment): Handle polynomial vf.
18041         (vect_enhance_data_refs_alignment): Likewise.
18042         (vect_prune_runtime_alias_test_list): Likewise.
18043         (vect_shift_permute_load_chain): Likewise.
18044         (vect_supportable_dr_alignment): Likewise.
18045         (dependence_distance_ge_vf): Take the vectorization factor as a
18046         poly_uint64 rather than an unsigned HOST_WIDE_INT.
18047         (vect_analyze_data_refs): Change min_vf from an int * to a
18048         poly_uint64 *.
18049         * tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Take
18050         vfm1 as a poly_uint64 rather than an int.  Make the same change
18051         for the returned bound_scalar.
18052         (vect_gen_vector_loop_niters): Handle polynomial vf.
18053         (vect_do_peeling): Likewise.  Update call to
18054         vect_gen_scalar_loop_niters and handle polynomial bound_scalars.
18055         (vect_gen_vector_loop_niters_mult_vf): Assert that the vf must
18056         be constant.
18057         * tree-vect-loop.c (vect_determine_vectorization_factor)
18058         (vect_update_vf_for_slp, vect_analyze_loop_2): Handle polynomial vf.
18059         (vect_get_known_peeling_cost): Likewise.
18060         (vect_estimate_min_profitable_iters, vectorizable_reduction): Likewise.
18061         (vect_worthwhile_without_simd_p, vectorizable_induction): Likewise.
18062         (vect_transform_loop): Likewise.  Use the lowest possible VF when
18063         updating the upper bounds of the loop.
18064         (vect_min_worthwhile_factor): Make static.  Return an unsigned int
18065         rather than an int.
18066         * tree-vect-slp.c (vect_attempt_slp_rearrange_stmts): Cope with
18067         polynomial unroll factors.
18068         (vect_analyze_slp_cost_1, vect_analyze_slp_instance): Likewise.
18069         (vect_make_slp_decision): Likewise.
18070         (vect_supported_load_permutation_p): Likewise, and polynomial
18071         vf too.
18072         (vect_analyze_slp_cost): Handle polynomial vf.
18073         (vect_slp_analyze_node_operations): Likewise.
18074         (vect_slp_analyze_bb_1): Likewise.
18075         (vect_transform_slp_perm_load): Take the vf as a poly_uint64 rather
18076         than an unsigned HOST_WIDE_INT.
18077         * tree-vect-stmts.c (vectorizable_simd_clone_call, vectorizable_store)
18078         (vectorizable_load): Handle polynomial vf.
18079         * tree-vectorizer.c (simduid_to_vf::vf): Change from an int to
18080         a poly_uint64.
18081         (adjust_simduid_builtins, shrink_simd_arrays): Update accordingly.
18083 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18084             Alan Hayward  <alan.hayward@arm.com>
18085             David Sherwood  <david.sherwood@arm.com>
18087         * match.pd: Handle bit operations involving three constants
18088         and try to fold one pair.
18090 2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
18092         * tree-vect-loop-manip.c: Include gimple-fold.h.
18093         (slpeel_make_loop_iterate_ntimes): Add step, final_iv and
18094         niters_maybe_zero parameters.  Handle other cases besides a step of 1.
18095         (vect_gen_vector_loop_niters): Add a step_vector_ptr parameter.
18096         Add a path that uses a step of VF instead of 1, but disable it
18097         for now.
18098         (vect_do_peeling): Add step_vector, niters_vector_mult_vf_var
18099         and niters_no_overflow parameters.  Update calls to
18100         slpeel_make_loop_iterate_ntimes and vect_gen_vector_loop_niters.
18101         Create a new SSA name if the latter choses to use a ste other
18102         than zero, and return it via niters_vector_mult_vf_var.
18103         * tree-vect-loop.c (vect_transform_loop): Update calls to
18104         vect_do_peeling, vect_gen_vector_loop_niters and
18105         slpeel_make_loop_iterate_ntimes.
18106         * tree-vectorizer.h (slpeel_make_loop_iterate_ntimes, vect_do_peeling)
18107         (vect_gen_vector_loop_niters): Update declarations after above changes.
18109 2018-01-02  Michael Meissner  <meissner@linux.vnet.ibm.com>
18111         * config/rs6000/rs6000.md (floor<mode>2): Add support for IEEE
18112         128-bit round to integer instructions.
18113         (ceil<mode>2): Likewise.
18114         (btrunc<mode>2): Likewise.
18115         (round<mode>2): Likewise.
18117 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
18119         * config/rs6000/rs6000-string.c (expand_block_move): Allow the use of
18120         unaligned VSX load/store on P8/P9.
18121         (expand_block_clear): Allow the use of unaligned VSX
18122         load/store on P8/P9.
18124 2018-01-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
18126         * config/rs6000/rs6000-p8swap.c (swap_feeds_both_load_and_store):
18127         New function.
18128         (rs6000_analyze_swaps): Mark a web unoptimizable if it contains a
18129         swap associated with both a load and a store.
18131 2018-01-02  Andrew Waterman  <andrew@sifive.com>
18133         * config/riscv/linux.h (ICACHE_FLUSH_FUNC): New.
18134         * config/riscv/riscv.md (clear_cache): Use it.
18136 2018-01-02  Artyom Skrobov  <tyomitch@gmail.com>
18138         * web.c: Remove out-of-date comment.
18140 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18142         * expr.c (fixup_args_size_notes): Check that any existing
18143         REG_ARGS_SIZE notes are correct, and don't try to re-add them.
18144         (emit_single_push_insn_1): Move stack_pointer_delta adjustment to...
18145         (emit_single_push_insn): ...here.
18147 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18149         * rtl.h (CONST_VECTOR_ELT): Redefine to const_vector_elt.
18150         (const_vector_encoded_nelts): New function.
18151         (CONST_VECTOR_NUNITS): Redefine to use GET_MODE_NUNITS.
18152         (const_vector_int_elt, const_vector_elt): Declare.
18153         * emit-rtl.c (const_vector_int_elt_1): New function.
18154         (const_vector_elt): Likewise.
18155         * simplify-rtx.c (simplify_immed_subreg): Avoid taking the address
18156         of CONST_VECTOR_ELT.
18158 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18160         * expr.c: Include rtx-vector-builder.h.
18161         (const_vector_mask_from_tree): Use rtx_vector_builder and operate
18162         directly on the tree encoding.
18163         (const_vector_from_tree): Likewise.
18164         * optabs.c: Include rtx-vector-builder.h.
18165         (expand_vec_perm_var): Use rtx_vector_builder and create a repeating
18166         sequence of "u" values.
18167         * vec-perm-indices.c: Include rtx-vector-builder.h.
18168         (vec_perm_indices_to_rtx): Use rtx_vector_builder and operate
18169         directly on the vec_perm_indices encoding.
18171 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18173         * doc/rtl.texi (const_vector): Describe new encoding scheme.
18174         * Makefile.in (OBJS): Add rtx-vector-builder.o.
18175         * rtx-vector-builder.h: New file.
18176         * rtx-vector-builder.c: Likewise.
18177         * rtl.h (rtx_def::u2): Add a const_vector field.
18178         (CONST_VECTOR_NPATTERNS): New macro.
18179         (CONST_VECTOR_NELTS_PER_PATTERN): Likewise.
18180         (CONST_VECTOR_DUPLICATE_P): Likewise.
18181         (CONST_VECTOR_STEPPED_P): Likewise.
18182         (CONST_VECTOR_ENCODED_ELT): Likewise.
18183         (const_vec_duplicate_p): Check for a duplicated vector encoding.
18184         (unwrap_const_vec_duplicate): Likewise.
18185         (const_vec_series_p): Check for a non-duplicated vector encoding.
18186         Say that the function only returns true for integer vectors.
18187         * emit-rtl.c: Include rtx-vector-builder.h.
18188         (gen_const_vec_duplicate_1): Delete.
18189         (gen_const_vector): Call gen_const_vec_duplicate instead of
18190         gen_const_vec_duplicate_1.
18191         (const_vec_series_p_1): Operate directly on the CONST_VECTOR encoding.
18192         (gen_const_vec_duplicate): Use rtx_vector_builder.
18193         (gen_const_vec_series): Likewise.
18194         (gen_rtx_CONST_VECTOR): Likewise.
18195         * config/powerpcspe/powerpcspe.c: Include rtx-vector-builder.h.
18196         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
18197         Build a new vector rather than modifying a CONST_VECTOR in-place.
18198         (handle_special_swappables): Update call accordingly.
18199         * config/rs6000/rs6000-p8swap.c: Include rtx-vector-builder.h.
18200         (swap_const_vector_halves): Take an rtx pointer rather than rtx.
18201         Build a new vector rather than modifying a CONST_VECTOR in-place.
18202         (handle_special_swappables): Update call accordingly.
18204 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18206         * simplify-rtx.c (simplify_const_binary_operation): Use
18207         CONST_VECTOR_ELT instead of XVECEXP.
18209 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18211         * tree-cfg.c (verify_gimple_assign_ternary): Allow the size of
18212         the selector elements to be different from the data elements
18213         if the selector is a VECTOR_CST.
18214         * tree-vect-stmts.c (vect_gen_perm_mask_any): Use a vector of
18215         ssizetype for the selector.
18217 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18219         * optabs.c (shift_amt_for_vec_perm_mask): Try using series_p
18220         before testing each element individually.
18221         * tree-vect-generic.c (lower_vec_perm): Likewise.
18223 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18225         * selftest.h (selftest::vec_perm_indices_c_tests): Declare.
18226         * selftest-run-tests.c (selftest::run_tests): Call it.
18227         * vector-builder.h (vector_builder::operator ==): New function.
18228         (vector_builder::operator !=): Likewise.
18229         * vec-perm-indices.h (vec_perm_indices::series_p): Declare.
18230         (vec_perm_indices::all_from_input_p): New function.
18231         * vec-perm-indices.c (vec_perm_indices::series_p): Likewise.
18232         (test_vec_perm_12, selftest::vec_perm_indices_c_tests): Likewise.
18233         * fold-const.c (fold_ternary_loc): Use tree_to_vec_perm_builder
18234         instead of reading the VECTOR_CST directly.  Detect whether both
18235         vector inputs are the same before constructing the vec_perm_indices,
18236         and update the number of inputs argument accordingly.  Use the
18237         utility functions added above.  Only construct sel2 if we need to.
18239 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18241         * optabs.c (expand_vec_perm_var): Use an explicit encoding for
18242         the broadcast of the low byte.
18243         (expand_mult_highpart): Use an explicit encoding for the permutes.
18244         * optabs-query.c (can_mult_highpart_p): Likewise.
18245         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
18246         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
18247         (vectorizable_bswap): Likewise.
18248         * tree-vect-data-refs.c (vect_grouped_store_supported): Use an
18249         explicit encoding for the power-of-2 permutes.
18250         (vect_permute_store_chain): Likewise.
18251         (vect_grouped_load_supported): Likewise.
18252         (vect_permute_load_chain): Likewise.
18254 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18256         * vec-perm-indices.h (vec_perm_indices_to_tree): Declare.
18257         * vec-perm-indices.c (vec_perm_indices_to_tree): New function.
18258         * tree-ssa-forwprop.c (simplify_vector_constructor): Use it.
18259         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
18260         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
18261         (vect_gen_perm_mask_any): Likewise.
18263 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18265         * int-vector-builder.h: New file.
18266         * vec-perm-indices.h: Include int-vector-builder.h.
18267         (vec_perm_indices): Redefine as an int_vector_builder.
18268         (auto_vec_perm_indices): Delete.
18269         (vec_perm_builder): Redefine as a stand-alone class.
18270         (vec_perm_indices::vec_perm_indices): New function.
18271         (vec_perm_indices::clamp): Likewise.
18272         * vec-perm-indices.c: Include fold-const.h and tree-vector-builder.h.
18273         (vec_perm_indices::new_vector): New function.
18274         (vec_perm_indices::new_expanded_vector): Update for new
18275         vec_perm_indices class.
18276         (vec_perm_indices::rotate_inputs): New function.
18277         (vec_perm_indices::all_in_range_p): Operate directly on the
18278         encoded form, without computing elided elements.
18279         (tree_to_vec_perm_builder): Operate directly on the VECTOR_CST
18280         encoding.  Update for new vec_perm_indices class.
18281         * optabs.c (expand_vec_perm_const): Create a vec_perm_indices for
18282         the given vec_perm_builder.
18283         (expand_vec_perm_var): Update vec_perm_builder constructor.
18284         (expand_mult_highpart): Use vec_perm_builder instead of
18285         auto_vec_perm_indices.
18286         * optabs-query.c (can_mult_highpart_p): Use vec_perm_builder and
18287         vec_perm_indices instead of auto_vec_perm_indices.  Use a single
18288         or double series encoding as appropriate.
18289         * fold-const.c (fold_ternary_loc): Use vec_perm_builder and
18290         vec_perm_indices instead of auto_vec_perm_indices.
18291         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
18292         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
18293         (vect_permute_store_chain): Likewise.
18294         (vect_grouped_load_supported): Likewise.
18295         (vect_permute_load_chain): Likewise.
18296         (vect_shift_permute_load_chain): Likewise.
18297         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
18298         (vect_transform_slp_perm_load): Likewise.
18299         (vect_schedule_slp_instance): Likewise.
18300         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
18301         (vectorizable_mask_load_store): Likewise.
18302         (vectorizable_bswap): Likewise.
18303         (vectorizable_store): Likewise.
18304         (vectorizable_load): Likewise.
18305         * tree-vect-generic.c (lower_vec_perm): Use vec_perm_builder and
18306         vec_perm_indices instead of auto_vec_perm_indices.  Use
18307         tree_to_vec_perm_builder to read the vector from a tree.
18308         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Take a
18309         vec_perm_builder instead of a vec_perm_indices.
18310         (have_whole_vector_shift): Use vec_perm_builder and
18311         vec_perm_indices instead of auto_vec_perm_indices.  Leave the
18312         truncation to calc_vec_perm_mask_for_shift.
18313         (vect_create_epilog_for_reduction): Likewise.
18314         * config/aarch64/aarch64.c (expand_vec_perm_d::perm): Change
18315         from auto_vec_perm_indices to vec_perm_indices.
18316         (aarch64_expand_vec_perm_const_1): Use rotate_inputs on d.perm
18317         instead of changing individual elements.
18318         (aarch64_vectorize_vec_perm_const): Use new_vector to install
18319         the vector in d.perm.
18320         * config/arm/arm.c (expand_vec_perm_d::perm): Change
18321         from auto_vec_perm_indices to vec_perm_indices.
18322         (arm_expand_vec_perm_const_1): Use rotate_inputs on d.perm
18323         instead of changing individual elements.
18324         (arm_vectorize_vec_perm_const): Use new_vector to install
18325         the vector in d.perm.
18326         * config/powerpcspe/powerpcspe.c (rs6000_expand_extract_even):
18327         Update vec_perm_builder constructor.
18328         (rs6000_expand_interleave): Likewise.
18329         * config/rs6000/rs6000.c (rs6000_expand_extract_even): Likewise.
18330         (rs6000_expand_interleave): Likewise.
18332 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18334         * optabs-query.c (can_vec_perm_var_p): Check whether lowering
18335         to qimode could truncate the indices.
18336         * optabs.c (expand_vec_perm_var): Likewise.
18338 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18340         * Makefile.in (OBJS): Add vec-perm-indices.o.
18341         * vec-perm-indices.h: New file.
18342         * vec-perm-indices.c: Likewise.
18343         * target.h (vec_perm_indices): Replace with a forward class
18344         declaration.
18345         (auto_vec_perm_indices): Move to vec-perm-indices.h.
18346         * optabs.h: Include vec-perm-indices.h.
18347         (expand_vec_perm): Delete.
18348         (selector_fits_mode_p, expand_vec_perm_var): Declare.
18349         (expand_vec_perm_const): Declare.
18350         * target.def (vec_perm_const_ok): Replace with...
18351         (vec_perm_const): ...this new hook.
18352         * doc/tm.texi.in (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Replace with...
18353         (TARGET_VECTORIZE_VEC_PERM_CONST): ...this new hook.
18354         * doc/tm.texi: Regenerate.
18355         * optabs.def (vec_perm_const): Delete.
18356         * doc/md.texi (vec_perm_const): Likewise.
18357         (vec_perm): Refer to TARGET_VECTORIZE_VEC_PERM_CONST.
18358         * expr.c (expand_expr_real_2): Use expand_vec_perm_const rather than
18359         expand_vec_perm for constant permutation vectors.  Assert that
18360         the mode of variable permutation vectors is the integer equivalent
18361         of the mode that is being permuted.
18362         * optabs-query.h (selector_fits_mode_p): Declare.
18363         * optabs-query.c: Include vec-perm-indices.h.
18364         (selector_fits_mode_p): New function.
18365         (can_vec_perm_const_p): Check whether targetm.vectorize.vec_perm_const
18366         is defined, instead of checking whether the vec_perm_const_optab
18367         exists.  Use targetm.vectorize.vec_perm_const instead of
18368         targetm.vectorize.vec_perm_const_ok.  Check whether the indices
18369         fit in the vector mode before using a variable permute.
18370         * optabs.c (shift_amt_for_vec_perm_mask): Take a mode and a
18371         vec_perm_indices instead of an rtx.
18372         (expand_vec_perm): Replace with...
18373         (expand_vec_perm_const): ...this new function.  Take the selector
18374         as a vec_perm_indices rather than an rtx.  Also take the mode of
18375         the selector.  Update call to shift_amt_for_vec_perm_mask.
18376         Use targetm.vectorize.vec_perm_const instead of vec_perm_const_optab.
18377         Use vec_perm_indices::new_expanded_vector to expand the original
18378         selector into bytes.  Check whether the indices fit in the vector
18379         mode before using a variable permute.
18380         (expand_vec_perm_var): Make global.
18381         (expand_mult_highpart): Use expand_vec_perm_const.
18382         * fold-const.c: Includes vec-perm-indices.h.
18383         * tree-ssa-forwprop.c: Likewise.
18384         * tree-vect-data-refs.c: Likewise.
18385         * tree-vect-generic.c: Likewise.
18386         * tree-vect-loop.c: Likewise.
18387         * tree-vect-slp.c: Likewise.
18388         * tree-vect-stmts.c: Likewise.
18389         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm_const):
18390         Delete.
18391         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>): Delete.
18392         * config/aarch64/aarch64.c (aarch64_expand_vec_perm_const)
18393         (aarch64_vectorize_vec_perm_const_ok): Fuse into...
18394         (aarch64_vectorize_vec_perm_const): ...this new function.
18395         (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
18396         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
18397         * config/arm/arm-protos.h (arm_expand_vec_perm_const): Delete.
18398         * config/arm/vec-common.md (vec_perm_const<mode>): Delete.
18399         * config/arm/arm.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
18400         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
18401         (arm_expand_vec_perm_const, arm_vectorize_vec_perm_const_ok): Merge
18402         into...
18403         (arm_vectorize_vec_perm_const): ...this new function.  Explicitly
18404         check for NEON modes.
18405         * config/i386/i386-protos.h (ix86_expand_vec_perm_const): Delete.
18406         * config/i386/sse.md (VEC_PERM_CONST, vec_perm_const<mode>): Delete.
18407         * config/i386/i386.c (ix86_expand_vec_perm_const_1): Update comment.
18408         (ix86_expand_vec_perm_const, ix86_vectorize_vec_perm_const_ok): Merge
18409         into...
18410         (ix86_vectorize_vec_perm_const): ...this new function.  Incorporate
18411         the old VEC_PERM_CONST conditions.
18412         * config/ia64/ia64-protos.h (ia64_expand_vec_perm_const): Delete.
18413         * config/ia64/vect.md (vec_perm_const<mode>): Delete.
18414         * config/ia64/ia64.c (ia64_expand_vec_perm_const)
18415         (ia64_vectorize_vec_perm_const_ok): Merge into...
18416         (ia64_vectorize_vec_perm_const): ...this new function.
18417         * config/mips/loongson.md (vec_perm_const<mode>): Delete.
18418         * config/mips/mips-msa.md (vec_perm_const<mode>): Delete.
18419         * config/mips/mips-ps-3d.md (vec_perm_constv2sf): Delete.
18420         * config/mips/mips-protos.h (mips_expand_vec_perm_const): Delete.
18421         * config/mips/mips.c (mips_expand_vec_perm_const)
18422         (mips_vectorize_vec_perm_const_ok): Merge into...
18423         (mips_vectorize_vec_perm_const): ...this new function.
18424         * config/powerpcspe/altivec.md (vec_perm_constv16qi): Delete.
18425         * config/powerpcspe/paired.md (vec_perm_constv2sf): Delete.
18426         * config/powerpcspe/spe.md (vec_perm_constv2si): Delete.
18427         * config/powerpcspe/vsx.md (vec_perm_const<mode>): Delete.
18428         * config/powerpcspe/powerpcspe-protos.h (altivec_expand_vec_perm_const)
18429         (rs6000_expand_vec_perm_const): Delete.
18430         * config/powerpcspe/powerpcspe.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK):
18431         Delete.
18432         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
18433         (altivec_expand_vec_perm_const_le): Take each operand individually.
18434         Operate on constant selectors rather than rtxes.
18435         (altivec_expand_vec_perm_const): Likewise.  Update call to
18436         altivec_expand_vec_perm_const_le.
18437         (rs6000_expand_vec_perm_const): Delete.
18438         (rs6000_vectorize_vec_perm_const_ok): Delete.
18439         (rs6000_vectorize_vec_perm_const): New function.
18440         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
18441         an element count and rtx array.
18442         (rs6000_expand_extract_even): Update call accordingly.
18443         (rs6000_expand_interleave): Likewise.
18444         * config/rs6000/altivec.md (vec_perm_constv16qi): Delete.
18445         * config/rs6000/paired.md (vec_perm_constv2sf): Delete.
18446         * config/rs6000/vsx.md (vec_perm_const<mode>): Delete.
18447         * config/rs6000/rs6000-protos.h (altivec_expand_vec_perm_const)
18448         (rs6000_expand_vec_perm_const): Delete.
18449         * config/rs6000/rs6000.c (TARGET_VECTORIZE_VEC_PERM_CONST_OK): Delete.
18450         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
18451         (altivec_expand_vec_perm_const_le): Take each operand individually.
18452         Operate on constant selectors rather than rtxes.
18453         (altivec_expand_vec_perm_const): Likewise.  Update call to
18454         altivec_expand_vec_perm_const_le.
18455         (rs6000_expand_vec_perm_const): Delete.
18456         (rs6000_vectorize_vec_perm_const_ok): Delete.
18457         (rs6000_vectorize_vec_perm_const): New function.  Remove stray
18458         reference to the SPE evmerge intructions.
18459         (rs6000_do_expand_vec_perm): Take a vec_perm_builder instead of
18460         an element count and rtx array.
18461         (rs6000_expand_extract_even): Update call accordingly.
18462         (rs6000_expand_interleave): Likewise.
18463         * config/sparc/sparc.md (vec_perm_constv8qi): Delete in favor of...
18464         * config/sparc/sparc.c (sparc_vectorize_vec_perm_const): ...this
18465         new function.
18466         (TARGET_VECTORIZE_VEC_PERM_CONST): Redefine.
18468 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18470         * optabs.c (expand_vec_perm_1): Assert that SEL has an integer
18471         vector mode and that that mode matches the mode of the data
18472         being permuted.
18473         (expand_vec_perm): Split handling of non-CONST_VECTOR selectors
18474         out into expand_vec_perm_var.  Do all CONST_VECTOR handling here,
18475         directly using expand_vec_perm_1 when forcing selectors into
18476         registers.
18477         (expand_vec_perm_var): New function, split out from expand_vec_perm.
18479 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18481         * optabs-query.h (can_vec_perm_p): Delete.
18482         (can_vec_perm_var_p, can_vec_perm_const_p): Declare.
18483         * optabs-query.c (can_vec_perm_p): Split into...
18484         (can_vec_perm_var_p, can_vec_perm_const_p): ...these two functions.
18485         (can_mult_highpart_p): Use can_vec_perm_const_p to test whether a
18486         particular selector is valid.
18487         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
18488         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
18489         (vect_grouped_load_supported): Likewise.
18490         (vect_shift_permute_load_chain): Likewise.
18491         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
18492         (vect_transform_slp_perm_load): Likewise.
18493         * tree-vect-stmts.c (perm_mask_for_reverse): Likewise.
18494         (vectorizable_bswap): Likewise.
18495         (vect_gen_perm_mask_checked): Likewise.
18496         * fold-const.c (fold_ternary_loc): Likewise.  Don't take
18497         implementations of variable permutation vectors into account
18498         when deciding which selector to use.
18499         * tree-vect-loop.c (have_whole_vector_shift): Don't check whether
18500         vec_perm_const_optab is supported; instead use can_vec_perm_const_p
18501         with a false third argument.
18502         * tree-vect-generic.c (lower_vec_perm): Use can_vec_perm_const_p
18503         to test whether the constant selector is valid and can_vec_perm_var_p
18504         to test whether a variable selector is valid.
18506 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18508         * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
18509         * optabs-query.c (can_vec_perm_p): Likewise.
18510         * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
18511         instead of vec_perm_indices.
18512         * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
18513         (vect_gen_perm_mask_checked): Likewise,
18514         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
18515         (vect_gen_perm_mask_checked): Likewise,
18517 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
18519         * optabs-query.h (qimode_for_vec_perm): Declare.
18520         * optabs-query.c (can_vec_perm_p): Split out qimode search to...
18521         (qimode_for_vec_perm): ...this new function.
18522         * optabs.c (expand_vec_perm): Use qimode_for_vec_perm.
18524 2018-01-02  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
18526         * rtlanal.c (canonicalize_condition): Return 0 if final rtx
18527         does not have a conditional at the top.
18529 2018-01-02  Richard Biener  <rguenther@suse.de>
18531         * ipa-inline.c (big_speedup_p): Fix expression.
18533 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
18535         PR target/81616
18536         * config/i386/x86-tune-costs.h: Increase cost of integer load costs
18537         for generic 4->6.
18539 2018-01-02  Jan Hubicka  <hubicka@ucw.cz>
18541         PR target/81616
18542         Generic tuning.
18543         * x86-tune-costs.h (generic_cost): Reduce cost of FDIV 20->17,
18544         cost of sqrt 20->14, DIVSS 18->13, DIVSD 32->17, SQRtSS 30->14
18545         and SQRTsD 58->18, cond_not_taken_branch_cost. 2->1. Increase
18546         cond_taken_branch_cost 3->4.
18548 2018-01-01  Jakub Jelinek  <jakub@redhat.com>
18550         PR tree-optimization/83581
18551         * tree-loop-distribution.c (pass_loop_distribution::execute): Return
18552         TODO_cleanup_cfg if any changes have been made.
18554         PR middle-end/83608
18555         * expr.c (store_expr_with_bounds): Use simplify_gen_subreg instead of
18556         convert_modes if target mode has the right side, but different mode
18557         class.
18559         PR middle-end/83609
18560         * expr.c (expand_assignment): Fix up a typo in simplify_gen_subreg
18561         last argument when extracting from CONCAT.  If either from_real or
18562         from_imag is NULL, use expansion through memory.  If result is not
18563         a CONCAT and simplify_gen_subreg fails, try to simplify_gen_subreg
18564         the parts directly to inner mode, if even that fails, use expansion
18565         through memory.
18567         PR middle-end/83623
18568         * expmed.c (expand_shift_1): For 2-byte rotates by BITS_PER_UNIT,
18569         check for bswap in mode rather than HImode and use that in expand_unop
18570         too.
18572 Copyright (C) 2018 Free Software Foundation, Inc.
18574 Copying and distribution of this file, with or without modification,
18575 are permitted in any medium without royalty provided the copyright
18576 notice and this notice are preserved.