aarch64-simd.md (aarch64_ld1x2<VQ:mode>): New.
[platform/upstream/gcc.git] / gcc / ChangeLog
1 2017-12-27  Kugan Vivekanandarajah  <kuganv@linaro.org>
2
3         * config/aarch64/aarch64-simd.md (aarch64_ld1x2<VQ:mode>): New.
4         (aarch64_ld1x2<VDC:mode>): Likewise.
5         (aarch64_simd_ld1<mode>_x2): Likewise.
6         (aarch64_simd_ld1<mode>_x2): Likewise.
7         * config/aarch64/arm_neon.h (vld1_u8_x2): New.
8         (vld1_s8_x2): Likewise.
9         (vld1_u16_x2): Likewise.
10         (vld1_s16_x2): Likewise.
11         (vld1_u32_x2): Likewise.
12         (vld1_s32_x2): Likewise.
13         (vld1_u64_x2): Likewise.
14         (vld1_s64_x2): Likewise.
15         (vld1_f16_x2): Likewise.
16         (vld1_f32_x2): Likewise.
17         (vld1_f64_x2): Likewise.
18         (vld1_p8_x2): Likewise.
19         (vld1_p16_x2): Likewise.
20         (vld1_p64_x2): Likewise.
21         (vld1q_u8_x2): Likewise.
22         (vld1q_s8_x2): Likewise.
23         (vld1q_u16_x2): Likewise.
24         (vld1q_s16_x2): Likewise.
25         (vld1q_u32_x2): Likewise.
26         (vld1q_s32_x2): Likewise.
27         (vld1q_u64_x2): Likewise.
28         (vld1q_s64_x2): Likewise.
29         (vld1q_f16_x2): Likewise.
30         (vld1q_f32_x2): Likewise.
31         (vld1q_f64_x2): Likewise.
32         (vld1q_p8_x2): Likewise.
33         (vld1q_p16_x2): Likewise.
34         (vld1q_p64_x2): Likewise.
35
36 2017-12-27  Martin Liska  <mliska@suse.cz>
37
38         PR tree-optimization/83552
39         * tree-ssa-strlen.c (fold_strstr_to_strncmp): Assign result
40         of get_string_lenth to a SSA_NAME if not a GIMPLE value.
41
42 2017-12-27  Tom de Vries  <tom@codesourcery.com>
43
44         * config/nvptx/nvptx.c (nvptx_option_override): Disable
45         -gstatement-frontiers.
46
47 2017-12-26  Alexander Monakov  <amonakov@ispras.ru>
48
49         PR rtl-optimization/83513
50         * sel-sched.c (sel_rank_for_schedule): Order by non-zero usefulness
51         before priority comparison.
52
53 2017-12-25  Jakub Jelinek  <jakub@redhat.com>
54
55         PR target/83488
56         * config/i386/i386.opt (-mavx512vpopcntdq, -mmavx512bitalg): Move from
57         ix86_isa_flags2 to ix86_isa_flags.
58         * config/i386/i386-c.c (ix86_target_macros_internal): Test
59         OPTION_MASK_ISA_AVX512BITALG and OPTION_MASK_ISA_AVX512VPOPCNTDQ in
60         isa_flags rather than isa_flags2.
61         * config/i386/i386.c (ix86_target_string): Move -mavx512vpopcntdq
62         and -mavx512bitalg from isa2_opts to isa_opts.
63         (ix86_option_override_internal): Test OPTION_MASK_ISA_AVX512VPOPCNTDQ
64         in x_ix86_isa_flags_explicit rather than x_ix86_isa_flags2_explicit
65         and set it in x_ix86_isa_flags rather than x_ix86_isa_flags2.
66         Formatting fixes.
67         (def_builtin): Treat OPTION_MASK_ISA_AVX512BW or
68         OPTION_MASK_ISA_AVX512F ored with another option similarly to
69         OPTION_MASK_ISA_AVX512VL.  Even for OPTION_MASK_ISA_AVX512VL don't
70         clear it if mask is just OPTION_MASK_ISA_AVX512VL itself.
71         (ix86_expand_builtin): Don't handle OPTION_MASK_ISA_GFNI and
72         OPTION_MASK_ISA_VPCLMULQDQ specially, instead handle
73         OPTION_MASK_ISA_AVX512BW and OPTION_MASK_ISA_AVX512F that way.
74         * config/i386/i386-builtin.def: Move AVX512VPOPCNTDQ and AVX512BITALG
75         builtins from bdesc_args2 to bdesc_args section.
76         (__builtin_ia32_compressstoreuqi512_mask,
77         __builtin_ia32_compressstoreuhi512_mask,
78         __builtin_ia32_compressstoreuqi256_mask,
79         __builtin_ia32_expandloadqi512_mask,
80         __builtin_ia32_expandloadqi512_maskz,
81         __builtin_ia32_expandloadhi512_mask,
82         __builtin_ia32_expandloadhi512_maskz,
83         __builtin_ia32_compressqi512_mask, __builtin_ia32_compresshi512_mask,
84         __builtin_ia32_compressqi256_mask, __builtin_ia32_expandqi512_mask,
85         __builtin_ia32_expandqi512_maskz, __builtin_ia32_expandhi512_mask,
86         __builtin_ia32_expandhi512_maskz, __builtin_ia32_expandqi256_mask,
87         __builtin_ia32_expandqi256_maskz, __builtin_ia32_vpshrd_v32hi_mask,
88         __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshrdv_v32hi_mask,
89         __builtin_ia32_vpshrdv_v32hi_maskz, __builtin_ia32_vpshldv_v32hi_mask,
90         __builtin_ia32_vpshldv_v32hi_maskz,
91         __builtin_ia32_vpopcountb_v64qi_mask,
92         __builtin_ia32_vpopcountw_v32hi_mask,
93         __builtin_ia32_vpshufbitqmb512_mask,
94         __builtin_ia32_vpshufbitqmb256_mask): Add
95         " | OPTION_MASK_ISA_AVX512BW".
96         (__builtin_ia32_expandloadqi256_mask,
97         __builtin_ia32_expandloadqi256_maskz,
98         __builtin_ia32_vpopcountb_v32qi_mask): Add
99         " | OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512BW".
100         (__builtin_ia32_expandloadhi256_mask,
101         __builtin_ia32_expandloadhi256_maskz,
102         __builtin_ia32_expandloadqi128_mask,
103         __builtin_ia32_expandloadqi128_maskz,
104         __builtin_ia32_expandloadhi128_mask,
105         __builtin_ia32_expandloadhi128_maskz,
106         __builtin_ia32_vpshrd_v16hi, __builtin_ia32_vpshrd_v16hi_mask,
107         __builtin_ia32_vpshrd_v8hi, __builtin_ia32_vpshrd_v8hi_mask,
108         __builtin_ia32_vpshrd_v8si, __builtin_ia32_vpshrd_v8si_mask,
109         __builtin_ia32_vpshrd_v4si, __builtin_ia32_vpshrd_v4si_mask,
110         __builtin_ia32_vpshrd_v4di, __builtin_ia32_vpshrd_v4di_mask,
111         __builtin_ia32_vpshrd_v2di, __builtin_ia32_vpshrd_v2di_mask,
112         __builtin_ia32_vpshld_v16hi, __builtin_ia32_vpshld_v16hi_mask,
113         __builtin_ia32_vpshld_v8hi, __builtin_ia32_vpshld_v8hi_mask,
114         __builtin_ia32_vpshld_v8si, __builtin_ia32_vpshld_v8si_mask,
115         __builtin_ia32_vpshld_v4si, __builtin_ia32_vpshld_v4si_mask,
116         __builtin_ia32_vpshld_v4di, __builtin_ia32_vpshld_v4di_mask,
117         __builtin_ia32_vpshld_v2di, __builtin_ia32_vpshld_v2di_mask,
118         __builtin_ia32_vpshrdv_v16hi, __builtin_ia32_vpshrdv_v16hi_mask,
119         __builtin_ia32_vpshrdv_v16hi_maskz, __builtin_ia32_vpshrdv_v8hi,
120         __builtin_ia32_vpshrdv_v8hi_mask, __builtin_ia32_vpshrdv_v8hi_maskz,
121         __builtin_ia32_vpshrdv_v8si, __builtin_ia32_vpshrdv_v8si_mask,
122         __builtin_ia32_vpshrdv_v8si_maskz, __builtin_ia32_vpshrdv_v4si,
123         __builtin_ia32_vpshrdv_v4si_mask, __builtin_ia32_vpshrdv_v4si_maskz,
124         __builtin_ia32_vpshrdv_v4di, __builtin_ia32_vpshrdv_v4di_mask,
125         __builtin_ia32_vpshrdv_v4di_maskz, __builtin_ia32_vpshrdv_v2di,
126         __builtin_ia32_vpshrdv_v2di_mask, __builtin_ia32_vpshrdv_v2di_maskz,
127         __builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,
128         __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,
129         __builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,
130         __builtin_ia32_vpshldv_v8si, __builtin_ia32_vpshldv_v8si_mask,
131         __builtin_ia32_vpshldv_v8si_maskz, __builtin_ia32_vpshldv_v4si,
132         __builtin_ia32_vpshldv_v4si_mask, __builtin_ia32_vpshldv_v4si_maskz,
133         __builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,
134         __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,
135         __builtin_ia32_vpshldv_v2di_mask, __builtin_ia32_vpshldv_v2di_maskz,
136         __builtin_ia32_vpopcountb_v32qi, __builtin_ia32_vpopcountb_v16qi,
137         __builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v16hi,
138         __builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi,
139         __builtin_ia32_vpopcountw_v8hi_mask): Add
140         " | OPTION_MASK_ISA_AVX512VL".
141         * config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,
142         _mm512_shrdi_epi32, _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32,
143         _mm512_shrdi_epi64, _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64,
144         _mm512_shldi_epi16, _mm512_shldi_epi32, _mm512_mask_shldi_epi32,
145         _mm512_maskz_shldi_epi32, _mm512_shldi_epi64, _mm512_mask_shldi_epi64,
146         _mm512_maskz_shldi_epi64, _mm512_shrdv_epi16, _mm512_shrdv_epi32,
147         _mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64,
148         _mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64, _mm512_shldv_epi16,
149         _mm512_shldv_epi32, _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32,
150         _mm512_shldv_epi64, _mm512_mask_shldv_epi64,
151         _mm512_maskz_shldv_epi64): Don't require avx512bw for these intrinsics.
152         * config/i386/avx512bitalgintrin.h (_mm_bitshuffle_epi64_mask,
153         _mm_mask_bitshuffle_epi64_mask): Likewise.
154         * common/config/i386/i386-common.c
155         (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,
156         OPTION_MASK_ISA_AVX512BITALG_SET): Or in OPTION_MASK_ISA_AVX512F_SET.
157         (OPTION_MASK_ISA_AVX512F_UNSET): Or in
158         OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET and
159         OPTION_MASK_ISA_AVX512BITALG_UNSET.
160         (OPTION_MASK_ISA2_AVX512F_UNSET,
161         OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Define.
162         (ix86_handle_option): For -mno-general-regs-only, clear from
163         ix86_isa_flags2 OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET rather than
164         just OPTION_MASK_ISA_MPX.  For -mno-sse{,2,3,4,4.1,4.2,avx,avx2} and
165         -mno-ssse3 clear OPTION_MASK_ISA2_AVX512F_UNSET bits from
166         ix86_isa_flags2.  For -mno-avx512f likewise, instead of masking
167         individually listed ISAs.  For -m{,no-}avx512{vpopcntdq,bitalg} adjust
168         for moving from ix86_isa_flags2 to ix86_isa_flags.
169
170 2017-12-23  Jakub Jelinek  <jakub@redhat.com>
171
172         PR c++/83553
173         * fold-const.c (struct contains_label_data): New type.
174         (contains_label_1): Return non-NULL even for CASE_LABEL_EXPR, unless
175         inside of a SWITCH_BODY seen during the walk.
176         (contains_label_p): Use walk_tree instead of
177         walk_tree_without_duplicates, prepare data for contains_label_1 and
178         provide own pset.
179
180 2017-12-22  Jakub Jelinek  <jakub@redhat.com>
181
182         PR debug/83547
183         * tree-iterator.c (alloc_stmt_list): Start with cleared
184         TREE_SIDE_EFFECTS regardless whether a new STATEMENT_LIST is allocated
185         or old one reused.
186
187         PR target/83488
188         * config/i386/avx512vnniintrin.h: Don't check for __AVX512F__ nor
189         enable avx512f explicitly in #pragma GCC target.
190         * config/i386/i386-builtin.def (__builtin_ia32_vpdpbusd_v8si,
191         __builtin_ia32_vpdpbusd_v8si_mask, __builtin_ia32_vpdpbusd_v8si_maskz,
192         __builtin_ia32_vpdpbusd_v4si, __builtin_ia32_vpdpbusd_v4si_mask,
193         __builtin_ia32_vpdpbusd_v4si_maskz, __builtin_ia32_vpdpbusds_v8si,
194         __builtin_ia32_vpdpbusds_v8si_mask,
195         __builtin_ia32_vpdpbusds_v8si_maskz, __builtin_ia32_vpdpbusds_v4si,
196         __builtin_ia32_vpdpbusds_v4si_mask,
197         __builtin_ia32_vpdpbusds_v4si_maskz, __builtin_ia32_vpdpwssd_v8si,
198         __builtin_ia32_vpdpwssd_v8si_mask, __builtin_ia32_vpdpwssd_v8si_maskz,
199         __builtin_ia32_vpdpwssd_v4si, __builtin_ia32_vpdpwssd_v4si_mask,
200         __builtin_ia32_vpdpwssd_v4si_maskz, __builtin_ia32_vpdpwssds_v8si,
201         __builtin_ia32_vpdpwssds_v8si_mask,
202         __builtin_ia32_vpdpwssds_v8si_maskz, __builtin_ia32_vpdpwssds_v4si,
203         __builtin_ia32_vpdpwssds_v4si_mask,
204         __builtin_ia32_vpdpwssds_v4si_maskz): Use
205         OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL instead of
206         just OPTION_MASK_ISA_AVX512VNNI.
207
208 2017-12-22  Martin Jambor  <mjambor@suse.cz>
209
210         PR lto/82027
211         * lto-cgraph.c (output_cgraph_opt_summary_p): Also check former
212         clones.
213
214 2017-12-22  Julia Koval  <julia.koval@intel.com>
215             Sebastian Peryt  <sebastian.peryt@intel.com>
216
217         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512BITALG_SET,
218         OPTION_MASK_ISA_AVX512BITALG_UNSET): New.
219         (ix86_handle_option): Handle -mavx512bitalg, fix 4VNNIW formatting.
220         * config.gcc: Add avx512vpopcntdqvlintrin.h and avx512bitalgintrin.h.
221         * config/i386/avx512bitalgintrin.h (_mm512_popcnt_epi8, _mm512_popcnt_epi16,
222         _mm512_mask_popcnt_epi8, _mm512_maskz_popcnt_epi8, _mm512_mask_popcnt_epi16,
223         _mm512_maskz_popcnt_epi16, _mm512_bitshuffle_epi64_mask, _mm256_popcnt_epi8,
224         _mm512_mask_bitshuffle_epi64_mask, _mm256_mask_popcnt_epi8, _mm_popcnt_epi8,
225         _mm256_maskz_popcnt_epi8, _mm_bitshuffle_epi64_mask, _mm256_popcnt_epi16,
226         _mm_mask_bitshuffle_epi64_mask, _mm256_bitshuffle_epi64_mask,
227         _mm256_mask_bitshuffle_epi64_mask, _mm_popcnt_epi16, _mm_maskz_popcnt_epi8,
228         _mm256_mask_popcnt_epi16, _mm256_maskz_popcnt_epi16, _mm_mask_popcnt_epi8,
229         _mm_mask_popcnt_epi16, _mm_maskz_popcnt_epi16): New intrinsics.
230         * config/i386/avx512vpopcntdqvlintrin.h (_mm_popcnt_epi32, _mm_popcnt_epi64,
231         _mm_mask_popcnt_epi32, _mm_maskz_popcnt_epi32, _mm256_popcnt_epi32,
232         _mm256_mask_popcnt_epi32, _mm256_maskz_popcnt_epi32, _mm_mask_popcnt_epi64,
233         _mm_maskz_popcnt_epi64, _mm256_popcnt_epi64, _mm256_mask_popcnt_epi64,
234         _mm256_maskz_popcnt_epi64): New intrinsics.
235         * config/i386/cpuid.h (bit_AVX512BITALG): New bit.
236         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mavx512bitalg.
237         * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI, V64QI_FTYPE_V64QI,
238         V4DI_FTYPE_V4DI, UHI_FTYPE_V2DI_V2DI_UHI, USI_FTYPE_V4DI_V4DI_USI,
239         V4SI_FTYPE_V4SI_V4SI_UHI, V8SI_FTYPE_V8SI_V8SI_UHI): New types.
240         * config/i386/i386-builtin.def (__builtin_ia32_vpopcountq_v4di,
241         __builtin_ia32_vpopcountq_v4di_mask, __builtin_ia32_vpopcountq_v2di,
242         __builtin_ia32_vpopcountq_v2di_mask, __builtin_ia32_vpopcountd_v4si,
243         __builtin_ia32_vpopcountd_v4si_mask, __builtin_ia32_vpopcountd_v8si,
244         __builtin_ia32_vpopcountd_v8si_mask, __builtin_ia32_vpopcountb_v64qi,
245         __builtin_ia32_vpopcountb_v64qi_mask, __builtin_ia32_vpopcountb_v32qi,
246         __builtin_ia32_vpopcountb_v32qi_mask, __builtin_ia32_vpopcountb_v16qi,
247         __builtin_ia32_vpopcountb_v16qi_mask, __builtin_ia32_vpopcountw_v32hi,
248         __builtin_ia32_vpopcountw_v32hi_mask, __builtin_ia32_vpopcountw_v16hi,
249         __builtin_ia32_vpopcountw_v16hi_mask, __builtin_ia32_vpopcountw_v8hi,
250         __builtin_ia32_vpopcountw_v8hi_mask, __builtin_ia32_vpshufbitqmb128_mask,
251         __builtin_ia32_vpshufbitqmb256_mask,
252         __builtin_ia32_vpshufbitqmb512_mask): New builtins.
253         * config/i386/i386-c.c (__AVX512BITALG__): New.
254         * config/i386/i386.c (isa2_opts): Add -mavx512bitalg.
255         (ix86_valid_target_attribute_inner_p): Ditto.
256         (ix86_expand_args_builtin): Handle new types.
257         * config/i386/i386.h (TARGET_AVX512BITALG, TARGET_AVX512BITALG_P): New.
258         * config/i386/i386.opt: Add -mavx512bitalg.
259         * config/i386/immintrin.h: Add avx512vpopcntdqvlintrin.h and
260         avx512bitalgintrin.h.
261         * config/i386/sse.md (VI48_AVX512VLBW): New iterator.
262         (vpopcount<mode><mask_name>): Add more types.
263         (avx512vl_vpshufbitqmb<mode><mask_scalar_merge_name>): New.
264         * doc/invoke.texi: Add -mavx512bitalg and -mavx512vpopcntdq.
265
266 2017-12-22  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
267
268         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET):
269         Or in OPTION_MASK_ISA_AVX512F_SET.
270         (OPTION_MASK_ISA_AVX512F_UNSET): Or in
271         OPTION_MASK_ISA_AVX512VNNI_UNSET.
272         (ix86_handle_option): Adjust for
273         OPTION_MASK_ISA_AVX512VNNI_*SET being in ix86_isa_flags.
274         * config/i386/i386-builtin.def: Move VNNI builtins from ARGS2
275         section to ARGS.
276         * config/i386/i386-c.c: Check for OPTION_MASK_ISA_AVX512VNNI in
277         isa_flag instead of isa_flag2.
278         * config/i386/i386.c (ix86_target_string): Move -mavx512vnni from
279         isa_opts2 to isa_opts.
280         * config/i386/i386.opt (mavx512vnni): Move from ix86_isa_flags2
281         to ix86_isa_flags.
282
283 2017-12-22  Mike Stump  <mikestump@comcast.net>
284             Eric Botcazou  <ebotcazou@adacore.com>
285
286         * doc/extend.texi (Loop-Specific Pragmas): Document pragma GCC unroll.
287
288 2017-12-21  Jakub Jelinek  <jakub@redhat.com>
289
290         PR middle-end/83487
291         * config/i386/i386.c (ix86_function_arg_boundary): Return
292         PARM_BOUNDARY for TYPE_EMPTY_P types.
293
294         PR c/83448
295         * gimple-ssa-sprintf.c (maybe_warn): Don't call set_caret_index
296         if navail is >= dir.len.
297
298 2017-12-21  Steve Ellcey  <sellcey@cavium.com>
299
300         * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Fix
301         triplet for ilp32.
302
303 2017-12-21  Jakub Jelinek  <jakub@redhat.com>
304
305         PR rtl-optimization/80747
306         PR rtl-optimization/83512
307         * cfgrtl.c (force_nonfallthru_and_redirect): When splitting
308         succ edge from ENTRY, copy partition from e->dest to the newly
309         created bb.
310         * bb-reorder.c (reorder_basic_blocks_simple): If last_tail is
311         ENTRY, use BB_PARTITION of its successor block as current_partition.
312         Don't copy partition when splitting succ edge from ENTRY.
313
314         PR tree-optimization/83523
315         * tree-ssa-math-opts.c (is_widening_mult_p): Return false if
316         for INTEGER_TYPE TYPE_OVERFLOW_TRAPS.
317         (convert_mult_to_fma): Likewise.
318
319         PR tree-optimization/83521
320         * tree-ssa-phiopt.c (factor_out_conditional_conversion): Use
321         gimple_build_assign without code on result of
322         fold_build1 (VIEW_CONVERT_EXPR, ...), as it might not create
323         a VIEW_CONVERT_EXPR.
324
325 2017-12-21  Andrew Pinski  <apinski@cavium.com>
326             Steve Ellcey  <sellcey@cavium.com>
327
328         * config/aarch64/t-aarch64-linux (MULTILIB_OSDIRNAMES): Handle
329         multi-arch for ilp32.
330
331 2017-12-21  Uros Bizjak  <ubizjak@gmail.com>
332
333         PR target/83467
334         * config/i386/i386.md (*ashl<mode>3_mask): Add operand
335         constraints to operand 2.
336         (*ashl<mode>3_mask_1): Ditto.
337         (*<shift_insn><mode>3_mask): Ditto.
338         (*<shift_insn><mode>3_mask_1): Ditto.
339         (*<rotate_insn><mode>3_mask): Ditto.
340         (*<rotate_insn><mode>3_mask_1): Ditto.
341
342 2017-12-21  Alexandre Oliva  <aoliva@redhat.com>
343
344         * reorg.c (make_return_insns): Reemit each insn with its own location.
345
346 2017-12-21  James Greenhalgh  <james.greenhalgh@arm.com>
347
348         * config/aarch64/aarch64.c (aarch64_expand_vector_init): Modify code
349         generation for cases where splatting a value is not useful.
350         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
351         across a vec_duplicate and a paradoxical subreg forming a vector
352         mode to a vec_concat.
353
354 2017-12-21  James Greenhalgh  <james.greenhalgh@arm.com>
355
356         * combine.c (simplify_set): Do not transform subregs to zero_extends
357         if the destination is not a scalar int mode.
358
359 2017-12-21  Eric Botcazou  <ebotcazou@adacore.com>
360
361         PR c++/82872
362         * convert.c (convert_to_integer_1) <POINTER_TYPE>: Do not return the
363         shared zero if the input has overflowed.
364
365 2017-12-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
366
367         * config/arm/driver-arm.c (arm_cpu_table): Specify dotprod
368         support for Cortex-A55 and Cortex-A75.
369
370 2017-12-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
371
372         * common/config/arm/arm-common.c (compare_opt_names): Add function
373         comment.  Use strcmp instead of manual loop.
374
375 2017-12-21  Martin Liska  <mliska@suse.cz>
376
377         PR gcov-profile/83509
378         * gcov-dump.c (dump_gcov_file): Do not read info about
379         support_unexecuted_blocks for gcda files.
380
381 2017-12-21  Jakub Jelinek  <jakub@redhat.com>
382
383         PR rtl-optimization/82973
384         * emit-rtl.h (valid_for_const_vec_duplicate_p): Rename to ...
385         (valid_for_const_vector_p): ... this.
386         * emit-rtl.c (valid_for_const_vec_duplicate_p): Rename to ...
387         (valid_for_const_vector_p): ... this.  Adjust function comment.
388         (gen_vec_duplicate): Adjust caller.
389         * optabs.c (expand_vector_broadcast): Likewise.
390         * simplify-rtx.c (simplify_const_unary_operation): Don't optimize into
391         CONST_VECTOR if some element isn't simplified valid_for_const_vector_p
392         constant.
393         (simplify_const_binary_operation): Likewise.  Use CONST_FIXED_P macro
394         instead of GET_CODE == CONST_FIXED.
395         (simplify_subreg): Use CONST_FIXED_P macro instead of
396         GET_CODE == CONST_FIXED.
397
398         PR target/83488
399         * config/i386/i386.c (ix86_target_string): Move -mavx512vbmi2 and
400         -mshstk entries from isa_opts2 to isa_opts and -mhle, -mmovbe,
401         -mclzero and -mmwaitx entries from isa_opts to isa_opts2.
402         (ix86_option_override_internal): Adjust for
403         OPTION_MASK_ISA_{HLE,MOVBE,CLZERO,MWAITX} moving to ix86_isa_flags2
404         and OPTION_MASK_ISA_SHSTK moving to ix86_isa_flags.
405         (BDESC_VERIFYS): Remove SPECIAL_ARGS2 related checks.
406         (ix86_init_mmx_sse_builtins): Remove bdesc_special_args2 handling.
407         Use def_builtin2 instead of def_builtin for OPTION_MASK_ISA_MWAITX
408         and OPTION_MASK_ISA_CLZERO builtins.  Use def_builtin instead of
409         def_builtin2 for CET builtins.
410         (ix86_expand_builtin): Remove bdesc_special_args2 handling.  Fix
411         up formatting in IX86_BUILTIN_RDPID code.
412         * config/i386/i386-builtin.def: Move VBMI2 builtins from SPECIAL_ARGS2
413         section to SPECIAL_ARGS and from ARGS2 section to ARGS.
414         * config/i386/i386.opt (mavx512vbmi2, mshstk): Move from
415         ix86_isa_flags2 to ix86_isa_flags.
416         (mhle, mmovbe, mclzero, mmwaitx): Move from ix86_isa_flags to
417         ix86_isa_flags2.
418         * config/i386/i386-c.c (ix86_target_macros_internal): Check for
419         OPTION_MASK_ISA_{CLZERO,MWAITX} in isa_flag2 instead of isa_flag.
420         Check for OPTION_MASK_ISA_{SHSTK,AVX512VBMI2} in isa_flag instead
421         of isa_flag2.
422         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET):
423         Or in OPTION_MASK_ISA_AVX512F_SET.
424         (OPTION_MASK_ISA_AVX512F_UNSET): Or in
425         OPTION_MASK_ISA_AVX512VBMI2_UNSET.
426         (ix86_handle_option): Adjust for
427         OPTION_MASK_ISA_{SHSTK,AVX512VBMI2}_*SET being in ix86_isa_flags
428         and OPTION_MASK_ISA_{MOVBE,MWAITX,CLZERO}_*SET in ix86_isa_flags2.
429
430 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
431             Alan Hayward  <alan.hayward@arm.com>
432             David Sherwood  <david.sherwood@arm.com>
433
434         * tree-data-ref.h (prune_runtime_alias_test_list): Take the
435         factor as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
436         * tree-data-ref.c (prune_runtime_alias_test_list): Likewise.
437         Track polynomial offsets.
438
439 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
440             Alan Hayward  <alan.hayward@arm.com>
441             David Sherwood  <david.sherwood@arm.com>
442
443         * tree-vect-data-refs.c (vect_compute_data_ref_alignment):
444         Treat drb->init as a poly_int.  Fail if its misalignment wrt
445         vector_alignment isn't known.
446
447 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
448             Alan Hayward  <alan.hayward@arm.com>
449             David Sherwood  <david.sherwood@arm.com>
450
451         * tree-vectorizer.h (_loop_vec_info): Add a versioning_threshold
452         field.
453         (LOOP_VINFO_VERSIONING_THRESHOLD): New macro
454         (vect_loop_versioning): Take the loop versioning threshold as a
455         separate parameter.
456         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
457         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
458         versioning_threshold.
459         (vect_analyze_loop_2): Compute the loop versioning threshold
460         whenever loop versioning is needed, and store it in the new
461         field rather than combining it with the cost model threshold.
462         (vect_transform_loop): Update call to vect_loop_versioning.
463         Try to combine the loop versioning and cost thresholds here.
464
465 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
466             Alan Hayward  <alan.hayward@arm.com>
467             David Sherwood  <david.sherwood@arm.com>
468
469         * tree-ssa-loop-ivopts.h (strip_offset): Return the offset as
470         poly_uint64_pod rather than an unsigned HOST_WIDE_INT.
471         * tree-loop-distribution.c (classify_builtin_st): Update accordingly.
472         * tree-ssa-loop-ivopts.c (iv_use::addr_offset): Change from
473         an unsigned HOST_WIDE_INT to a poly_uint64_pod.
474         (group_compare_offset): Update accordingly.
475         (split_small_address_groups_p): Likewise.
476         (record_use): Take addr_offset as a poly_uint64 rather than
477         an unsigned HOST_WIDE_INT.
478         (strip_offset): Return the offset as a poly_uint64 rather than
479         an unsigned HOST_WIDE_INT.
480         (record_group_use, split_address_groups): Track polynomial offsets.
481         (add_iv_candidate_for_use): Likewise.
482         (addr_offset_valid_p): Take the offset as a poly_int64 rather
483         than a HOST_WIDE_INT.
484         (strip_offset_1): Return the offset as a poly_int64 rather than
485         a HOST_WIDE_INT.
486
487 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
488             Alan Hayward  <alan.hayward@arm.com>
489             David Sherwood  <david.sherwood@arm.com>
490
491         * tree.h (get_binfo_at_offset): Take the offset as a poly_int64
492         rather than a HOST_WIDE_INT.
493         * tree.c (get_binfo_at_offset): Likewise.
494
495 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
496             Alan Hayward  <alan.hayward@arm.com>
497             David Sherwood  <david.sherwood@arm.com>
498
499         * ipa-prop.h (build_ref_for_offset): Take the offset as a poly_int64
500         rather than a HOST_WIDE_INT.
501         * tree-sra.c (build_ref_for_offset): Likewise.
502
503 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
504             Alan Hayward  <alan.hayward@arm.com>
505             David Sherwood  <david.sherwood@arm.com>
506
507         * fold-const.h (mem_ref_offset): Return a poly_offset_int rather
508         than an offset_int.
509         * tree.c (mem_ref_offset): Likewise.
510         (build_simple_mem_ref_loc): Treat MEM_REF offsets as poly_ints.
511         * builtins.c (get_object_alignment_2): Likewise.
512         * expr.c (get_inner_reference, expand_expr_real_1): Likewise.
513         * gimple-fold.c (get_base_constructor): Likewise.
514         * gimple-ssa-strength-reduction.c (restructure_reference): Likewise.
515         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
516         Likewise.
517         * ipa-polymorphic-call.c
518         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
519         * ipa-prop.c (compute_complex_assign_jump_func): Likewise.
520         (get_ancestor_addr_info): Likewise.
521         * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Likewise.
522         * match.pd: Likewise.
523         * tree-data-ref.c (dr_analyze_innermost): Likewise.
524         * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise.
525         * tree-eh.c (tree_could_trap_p): Likewise.
526         * tree-object-size.c (addr_object_size): Likewise.
527         * tree-ssa-address.c (copy_ref_info): Likewise.
528         * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise.
529         (indirect_refs_may_alias_p): Likewise.
530         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
531         * tree-ssa.c (maybe_rewrite_mem_ref_base): Likewise.
532         (non_rewritable_mem_ref_base): Likewise.
533         * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
534         * tree-vrp.c (vrp_prop::check_array_ref): Likewise.
535         * varasm.c (decode_addr_const): Likewise.
536
537 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
538             Alan Hayward  <alan.hayward@arm.com>
539             David Sherwood  <david.sherwood@arm.com>
540
541         * gimple-ssa-stor-merging.c (find_bswap_or_nop_load): Track polynomial
542         offsets for MEM_REFs.
543
544 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
545             Alan Hayward  <alan.hayward@arm.com>
546             David Sherwood  <david.sherwood@arm.com>
547
548         * tree-ssanames.h (adjust_ptr_info_misalignment): Take the increment
549         as a poly_uint64 rather than an unsigned int.
550         * tree-ssanames.c (adjust_ptr_info_misalignment): Likewise.
551
552 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
553             Alan Hayward  <alan.hayward@arm.com>
554             David Sherwood  <david.sherwood@arm.com>
555
556         * varasm.c (addr_const::offset): Change from HOST_WIDE_INT
557         to poly_int64.
558         (decode_addr_const): Update accordingly.
559
560 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
561             Alan Hayward  <alan.hayward@arm.com>
562             David Sherwood  <david.sherwood@arm.com>
563
564         * tree.h (bit_field_size, bit_field_offset): New functions.
565         * hsa-gen.c (gen_hsa_addr): Use them.
566         * tree-ssa-forwprop.c (simplify_bitfield_ref): Likewise.
567         (simplify_vector_constructor): Likewise.
568         * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.
569         * tree-cfg.c (verify_expr): Require the sizes and offsets of a
570         BIT_FIELD_REF to be poly_uint64s rather than uhwis.
571         * fold-const.c (fold_ternary_loc): Protect tree_to_uhwi with
572         tree_fits_uhwi_p.
573
574 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
575             Alan Hayward  <alan.hayward@arm.com>
576             David Sherwood  <david.sherwood@arm.com>
577
578         * expr.h (emit_group_load, emit_group_load_into_temps)
579         (emit_group_store): Take the size as a poly_int64 rather than an int.
580         * expr.c (emit_group_load_1, emit_group_load): Likewise.
581         (emit_group_load_into_temp, emit_group_store): Likewise.
582
583 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
584             Alan Hayward  <alan.hayward@arm.com>
585             David Sherwood  <david.sherwood@arm.com>
586
587         * ira-int.h (ira_spilled_reg_stack_slot::width): Change from
588         an unsigned int to a poly_uint64.
589         * ira.h (ira_reuse_stack_slot, ira_mark_new_stack_slot): Take the
590         sizes as poly_uint64s rather than unsigned ints.
591         * ira-color.c (ira_reuse_stack_slot, ira_mark_new_stack_slot):
592         Likewise.
593
594 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
595             Alan Hayward  <alan.hayward@arm.com>
596             David Sherwood  <david.sherwood@arm.com>
597
598         * lra-constraints.c (emit_inc): Change inc_amount from an int
599         to a poly_int64.
600
601 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
602             Alan Hayward  <alan.hayward@arm.com>
603             David Sherwood  <david.sherwood@arm.com>
604
605         * cfgexpand.c (stack_var::size): Change from a HOST_WIDE_INT
606         to a poly_uint64.
607         (add_stack_var, stack_var_cmp, partition_stack_vars)
608         (dump_stack_var_partition): Update accordingly.
609         (alloc_stack_frame_space): Take the size as a poly_int64 rather
610         than a HOST_WIDE_INT.
611         (expand_stack_vars, expand_one_stack_var_1): Handle polynomial sizes.
612         (defer_stack_allocation, estimated_stack_frame_size): Likewise.
613         (account_stack_vars, expand_one_var): Likewise.  Return a poly_uint64
614         rather than a HOST_WIDE_INT.
615
616 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
617             Alan Hayward  <alan.hayward@arm.com>
618             David Sherwood  <david.sherwood@arm.com>
619
620         * target.def (return_pops_args): Treat both the input and output
621         sizes as poly_int64s rather than HOST_WIDE_INTS.
622         * targhooks.h (default_return_pops_args): Update accordingly.
623         * targhooks.c (default_return_pops_args): Likewise.
624         * doc/tm.texi: Regenerate.
625         * emit-rtl.h (incoming_args): Change pops_args, size and
626         outgoing_args_size from int to poly_int64_pod.
627         * function.h (expr_status): Change x_pending_stack_adjust and
628         x_stack_pointer_delta from int to poly_int64.
629         (args_size::constant): Change from HOST_WIDE_INT to poly_int64.
630         (ARGS_SIZE_RTX): Update accordingly.
631         * calls.c (highest_outgoing_arg_in_use): Change from int to
632         unsigned int.
633         (stack_usage_watermark, stored_args_watermark): New variables.
634         (stack_region_maybe_used_p, mark_stack_region_used): New functions.
635         (emit_call_1): Change the stack_size and rounded_stack_size
636         parameters from HOST_WIDE_INT to poly_int64.  Track n_popped
637         as a poly_int64.
638         (save_fixed_argument_area): Check stack_usage_watermark.
639         (initialize_argument_information): Change old_pending_adj from
640         a HOST_WIDE_INT * to a poly_int64_pod *.
641         (compute_argument_block_size): Return the size as a poly_int64
642         rather than an int.
643         (finalize_must_preallocate): Track polynomial argument sizes.
644         (compute_argument_addresses): Likewise.
645         (internal_arg_pointer_based_exp): Track polynomial offsets.
646         (mem_overlaps_already_clobbered_arg_p): Rename to...
647         (mem_might_overlap_already_clobbered_arg_p): ...this and take the
648         size as a poly_uint64 rather than an unsigned HOST_WIDE_INT.
649         Check stored_args_used_watermark.
650         (load_register_parameters): Update accordingly.
651         (check_sibcall_argument_overlap_1): Likewise.
652         (combine_pending_stack_adjustment_and_call): Take the unadjusted
653         args size as a poly_int64 rather than an int.  Return a bool
654         indicating whether the optimization was possible and return
655         the new adjustment by reference.
656         (check_sibcall_argument_overlap): Track polynomail argument sizes.
657         Update stored_args_watermark.
658         (can_implement_as_sibling_call_p): Handle polynomial argument sizes.
659         (expand_call): Likewise.  Maintain stack_usage_watermark and
660         stored_args_watermark.  Update calls to
661         combine_pending_stack_adjustment_and_call.
662         (emit_library_call_value_1): Handle polynomial argument sizes.
663         Call stack_region_maybe_used_p and mark_stack_region_used.
664         Maintain stack_usage_watermark.
665         (store_one_arg): Likewise.  Update call to
666         mem_overlaps_already_clobbered_arg_p.
667         * config/arm/arm.c (arm_output_function_prologue): Add a cast to
668         HOST_WIDE_INT.
669         * config/avr/avr.c (avr_outgoing_args_size): Likewise.
670         * config/microblaze/microblaze.c (microblaze_function_prologue):
671         Likewise.
672         * config/cr16/cr16.c (cr16_return_pops_args): Update for new
673         TARGET_RETURN_POPS_ARGS interface.
674         (cr16_compute_frame, cr16_initial_elimination_offset): Add casts
675         to HOST_WIDE_INT.
676         * config/ft32/ft32.c (ft32_compute_frame): Likewise.
677         * config/i386/i386.c (ix86_return_pops_args): Update for new
678         TARGET_RETURN_POPS_ARGS interface.
679         (ix86_expand_split_stack_prologue): Add a cast to HOST_WIDE_INT.
680         * config/moxie/moxie.c (moxie_compute_frame): Likewise.
681         * config/m68k/m68k.c (m68k_return_pops_args): Update for new
682         TARGET_RETURN_POPS_ARGS interface.
683         * config/vax/vax.c (vax_return_pops_args): Likewise.
684         * config/pa/pa.h (STACK_POINTER_OFFSET): Add a cast to poly_int64.
685         (EXIT_IGNORE_STACK): Update reference to crtl->outgoing_args_size.
686         * config/arm/arm.h (CALLER_INTERWORKING_SLOT_SIZE): Likewise.
687         * config/powerpcspe/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
688         * config/powerpcspe/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
689         * config/powerpcspe/powerpcspe.h (STACK_DYNAMIC_OFFSET): Likewise.
690         * config/rs6000/aix.h (STACK_DYNAMIC_OFFSET): Likewise.
691         * config/rs6000/darwin.h (STACK_DYNAMIC_OFFSET): Likewise.
692         * config/rs6000/rs6000.h (STACK_DYNAMIC_OFFSET): Likewise.
693         * dojump.h (saved_pending_stack_adjust): Change x_pending_stack_adjust
694         and x_stack_pointer_delta from int to poly_int64.
695         * dojump.c (do_pending_stack_adjust): Update accordingly.
696         * explow.c (allocate_dynamic_stack_space): Handle polynomial
697         stack_pointer_deltas.
698         * function.c (STACK_DYNAMIC_OFFSET): Add a cast to poly_int64.
699         (pad_to_arg_alignment): Track polynomial offsets.
700         (assign_parm_find_stack_rtl): Likewise.
701         (assign_parms, locate_and_pad_parm): Handle polynomial argument sizes.
702         * toplev.c (output_stack_usage): Update reference to
703         current_function_pushed_stack_size.
704
705 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
706             Alan Hayward  <alan.hayward@arm.com>
707             David Sherwood  <david.sherwood@arm.com>
708
709         * function.c (in_arg_offset, var_offset, dynamic_offset)
710         (out_arg_offset, cfa_offset): Change from int to poly_int64.
711         (instantiate_new_reg): Return the new offset as a poly_int64_pod
712         rather than a HOST_WIDE_INT.
713         (instantiate_virtual_regs_in_rtx): Track polynomial offsets.
714         (instantiate_virtual_regs_in_insn): Likewise.
715
716 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
717             Alan Hayward  <alan.hayward@arm.com>
718             David Sherwood  <david.sherwood@arm.com>
719
720         * rtl.h (get_args_size, add_args_size_note): New functions.
721         (find_args_size_adjust): Return a poly_int64 rather than a
722         HOST_WIDE_INT.
723         (fixup_args_size_notes): Likewise.  Make the same change to the
724         end_args_size parameter.
725         * rtlanal.c (get_args_size, add_args_size_note): New functions.
726         * builtins.c (expand_builtin_trap): Use add_args_size_note.
727         * calls.c (emit_call_1): Likewise.
728         * explow.c (adjust_stack_1): Likewise.
729         * cfgcleanup.c (old_insns_match_p): Update use of
730         find_args_size_adjust.
731         * combine.c (distribute_notes): Track polynomial arg sizes.
732         * dwarf2cfi.c (dw_trace_info): Change beg_true_args_size,
733         end_true_args_size, beg_delay_args_size and end_delay_args_size
734         from HOST_WIDE_INT to poly_int64.
735         (add_cfi_args_size): Take the args_size as a poly_int64 rather
736         than a HOST_WIDE_INT.
737         (notice_args_size, notice_eh_throw, maybe_record_trace_start)
738         (maybe_record_trace_start_abnormal, scan_trace, connect_traces): Track
739         polynomial arg sizes.
740         * emit-rtl.c (try_split): Use get_args_size.
741         * recog.c (peep2_attempt): Likewise.
742         * reload1.c (reload_as_needed): Likewise.
743         * expr.c (find_args_size_adjust): Return the adjustment as a
744         poly_int64 rather than a HOST_WIDE_INT.
745         (fixup_args_size_notes): Change end_args_size from a HOST_WIDE_INT
746         to a poly_int64 and change the return type in the same way.
747         (emit_single_push_insn): Track polynomial arg sizes.
748
749 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
750             Alan Hayward  <alan.hayward@arm.com>
751             David Sherwood  <david.sherwood@arm.com>
752
753         * expr.h (push_block, emit_push_insn): Change the "extra" parameter
754         from HOST_WIDE_INT to poly_int64.
755         * expr.c (push_block, emit_push_insn): Likewise.
756
757 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
758             Alan Hayward  <alan.hayward@arm.com>
759             David Sherwood  <david.sherwood@arm.com>
760
761         * function.h (frame_space): Change start and length from HOST_WIDE_INT
762         to poly_int64.
763         (get_frame_size): Return the size as a poly_int64 rather than a
764         HOST_WIDE_INT.
765         (frame_offset_overflow): Take the offset as a poly_int64 rather
766         than a HOST_WIDE_INT.
767         (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
768         (assign_stack_temp): Likewise for the size.
769         * function.c (get_frame_size): Return a poly_int64 rather than
770         a HOST_WIDE_INT.
771         (frame_offset_overflow): Take the offset as a poly_int64 rather
772         than a HOST_WIDE_INT.
773         (try_fit_stack_local): Take the start, length and size as poly_int64s
774         rather than HOST_WIDE_INTs.  Return the offset as a poly_int64_pod
775         rather than a HOST_WIDE_INT.
776         (add_frame_space): Take the start and end as poly_int64s rather than
777         HOST_WIDE_INTs.
778         (assign_stack_local_1, assign_stack_local, assign_stack_temp_for_type)
779         (assign_stack_temp): Likewise for the size.
780         (temp_slot): Change size, base_offset and full_size from HOST_WIDE_INT
781         to poly_int64.
782         (find_temp_slot_from_address): Handle polynomial offsets.
783         (combine_temp_slots): Likewise.
784         * emit-rtl.h (rtl_data::x_frame_offset): Change from HOST_WIDE_INT
785         to poly_int64.
786         * cfgexpand.c (alloc_stack_frame_space): Return the offset as a
787         poly_int64 rather than a HOST_WIDE_INT.
788         (expand_one_stack_var_at): Take the offset as a poly_int64 rather
789         than a HOST_WIDE_INT.
790         (expand_stack_vars, expand_one_stack_var_1, expand_used_vars): Handle
791         polynomial frame offsets.
792         * config/m32r/m32r-protos.h (m32r_compute_frame_size): Take the size
793         as a poly_int64 rather than an int.
794         * config/m32r/m32r.c (m32r_compute_frame_size): Likewise.
795         * config/v850/v850-protos.h (compute_frame_size): Likewise.
796         * config/v850/v850.c (compute_frame_size): Likewise.
797         * config/xtensa/xtensa-protos.h (compute_frame_size): Likewise.
798         * config/xtensa/xtensa.c (compute_frame_size): Likewise.
799         * config/pa/pa-protos.h (pa_compute_frame_size): Likewise.
800         * config/pa/pa.c (pa_compute_frame_size): Likewise.
801         * explow.h (get_dynamic_stack_base): Take the offset as a poly_int64
802         rather than a HOST_WIDE_INT.
803         * explow.c (get_dynamic_stack_base): Likewise.
804         * final.c (final_start_function): Use the constant lower bound
805         of the frame size for -Wframe-larger-than.
806         * ira.c (do_reload): Adjust for new get_frame_size return type.
807         * lra.c (lra): Likewise.
808         * reload1.c (reload): Likewise.
809         * config/avr/avr.c (avr_asm_function_end_prologue): Likewise.
810         * config/pa/pa.h (EXIT_IGNORE_STACK): Likewise.
811         * rtlanal.c (get_initial_register_offset): Return the offset as
812         a poly_int64 rather than a HOST_WIDE_INT.
813
814 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
815             Alan Hayward  <alan.hayward@arm.com>
816             David Sherwood  <david.sherwood@arm.com>
817
818         * reload1.c (elim_table): Change initial_offset, offset and
819         previous_offset from HOST_WIDE_INT to poly_int64_pod.
820         (offsets_at): Change the target array's element type from
821         HOST_WIDE_INT to poly_int64_pod.
822         (set_label_offsets, eliminate_regs_1, eliminate_regs_in_insn)
823         (elimination_costs_in_insn, update_eliminable_offsets)
824         (verify_initial_elim_offsets, set_offsets_for_label)
825         (init_eliminable_invariants): Update after above changes.
826
827 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
828             Alan Hayward  <alan.hayward@arm.com>
829             David Sherwood  <david.sherwood@arm.com>
830
831         * reload.h (reload::inc): Change from an int to a poly_int64_pod.
832         * reload.c (combine_reloads, debug_reload_to_stream): Likewise.
833         (decomposition): Change start and end from HOST_WIDE_INT
834         to poly_int64_pod.
835         (decompose, immune_p): Update accordingly.
836         (find_inc_amount): Return a poly_int64 rather than an int.
837         * reload1.c (inc_for_reload): Take the inc_amount as a poly_int64
838         rather than an int.
839
840 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
841             Alan Hayward  <alan.hayward@arm.com>
842             David Sherwood  <david.sherwood@arm.com>
843
844         * tree.h (get_inner_reference): Return the bitsize and bitpos
845         as poly_int64_pods rather than HOST_WIDE_INT.
846         * fold-const.h (ptr_difference_const): Return the pointer difference
847         as a poly_int64_pod rather than a HOST_WIDE_INT.
848         * expr.c (get_inner_reference): Return the bitsize and bitpos
849         as poly_int64_pods rather than HOST_WIDE_INT.
850         (expand_expr_addr_expr_1, expand_expr_real_1): Track polynomial
851         offsets and sizes.
852         * fold-const.c (make_bit_field_ref): Take the bitpos as a poly_int64
853         rather than a HOST_WIDE_INT.  Update call to get_inner_reference.
854         (optimize_bit_field_compare): Update call to get_inner_reference.
855         (decode_field_reference): Likewise.
856         (fold_unary_loc): Track polynomial offsets and sizes.
857         (split_address_to_core_and_offset): Return the bitpos as a
858         poly_int64_pod rather than a HOST_WIDE_INT.
859         (ptr_difference_const): Likewise for the pointer difference.
860         * asan.c (instrument_derefs): Track polynomial offsets and sizes.
861         * config/mips/mips.c (r10k_safe_mem_expr_p): Likewise.
862         * dbxout.c (dbxout_expand_expr): Likewise.
863         * dwarf2out.c (loc_list_for_address_of_addr_expr_of_indirect_ref)
864         (loc_list_from_tree_1, fortran_common): Likewise.
865         * gimple-laddress.c (pass_laddress::execute): Likewise.
866         * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Likewise.
867         * gimplify.c (gimplify_scan_omp_clauses): Likewise.
868         * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
869         * tree-affine.c (tree_to_aff_combination): Likewise.
870         (get_inner_reference_aff): Likewise.
871         * tree-data-ref.c (split_constant_offset_1): Likewise.
872         (dr_analyze_innermost): Likewise.
873         * tree-scalar-evolution.c (interpret_rhs_expr): Likewise.
874         * tree-sra.c (ipa_sra_check_caller): Likewise.
875         * tree-vect-data-refs.c (vect_check_gather_scatter): Likewise.
876         * ubsan.c (maybe_instrument_pointer_overflow): Likewise.
877         (instrument_bool_enum_load, instrument_object_size): Likewise.
878         * gimple-ssa-strength-reduction.c (slsr_process_ref): Update call
879         to get_inner_reference.
880         * hsa-gen.c (gen_hsa_addr): Likewise.
881         * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Likewise.
882         * tsan.c (instrument_expr): Likewise.
883         * match.pd: Update call to ptr_difference_const.
884
885 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
886             Alan Hayward  <alan.hayward@arm.com>
887             David Sherwood  <david.sherwood@arm.com>
888
889         * fold-const.c (fold_comparison): Track sizes and offsets as
890         poly_int64s rather than HOST_WIDE_INTs when folding address
891         comparisons.
892
893 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
894             Alan Hayward  <alan.hayward@arm.com>
895             David Sherwood  <david.sherwood@arm.com>
896
897         * expr.h (get_bit_range): Return the bitstart and bitend as
898         poly_uint64s rather than unsigned HOST_WIDE_INTs.  Return the bitpos
899         as a poly_int64 rather than a HOST_WIDE_INT.
900         * expr.c (get_bit_range): Likewise.
901         (expand_assignment): Update call accordingly.
902         * fold-const.c (optimize_bit_field_compare): Likewise.
903
904 2017-12-21  Richard Sandiford  <richard.sandiford@linaro.org>
905             Alan Hayward  <alan.hayward@arm.com>
906             David Sherwood  <david.sherwood@arm.com>
907
908         * config/aarch64/aarch64-protos.h (aarch64_addr_query_type): New enum.
909         (aarch64_legitimate_address_p): Use it instead of an rtx code,
910         as an optional final parameter.
911         * config/aarch64/aarch64.c (aarch64_classify_address): Likewise.
912         (aarch64_legitimate_address_p): Likewise.
913         (aarch64_print_address_internal): Take an aarch64_addr_query_type
914         instead of an rtx code.
915         (aarch64_address_valid_for_prefetch_p): Update calls accordingly.
916         (aarch64_legitimate_address_hook_p): Likewise.
917         (aarch64_print_ldpstp_address): Likewise.
918         (aarch64_print_operand_address): Likewise.
919         (aarch64_address_cost): Likewise.
920         * config/aarch64/constraints.md (Uml, Umq, Ump, Utq): Likewise.
921         * config/aarch64/predicates.md (aarch64_mem_pair_operand): Likewise.
922         (aarch64_mem_pair_lanes_operand): Likewise.
923
924 2017-12-20  Richard Biener  <rguenther@suse.de>
925
926         * tree-ssa-dom.c (dom_opt_dom_walker::optimize_stmt): Call
927         update_stmt_if_modified.
928
929 2017-12-20  Wilco Dijkstra  <wdijkstr@arm.com>
930
931         PR tree-optimization/83491
932         * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Check for SSA_NAME
933         before walking uses.  Improve coding style and comments.
934
935 2017-12-20  Tom de Vries  <tom@codesourcery.com>
936
937         * gimple-fold.c (fold_internal_goacc_dim): Simplify.
938
939 2017-12-20  Jakub Jelinek  <jakub@redhat.com>
940
941         PR ipa/83506
942         * ipa-fnsummary.c (pass_data_ipa_free_fn_summary): Use 0 for
943         todo_flags_finish.
944         (pass_ipa_free_fn_summary): Add small_p private data member,
945         initialize to false in the ctor.
946         (pass_ipa_free_fn_summary::clone,
947         pass_ipa_free_fn_summary::set_pass_param,
948         pass_ipa_free_fn_summary::gate): New methods.
949         (pass_ipa_free_fn_summary::execute): Return TODO_remove_functions
950         | TODO_dump_symtab if small_p.
951         * passes.def: Add true parm for the existing pass_ipa_free_fn_summary
952         entry and add another instance of the pass with false parm after
953         ipa-pure-const.
954         * ipa-pure-const.c (pass_ipa_pure_const): Don't call
955         ipa_free_fn_summary here.
956
957 2017-12-20  Paolo Carlini  <paolo.carlini@oracle.com>
958
959         * gimplify.c (gimplify_return_expr): Remove dead error_mark_node check.
960
961 2017-12-20  Martin Sebor  <msebor@redhat.com>
962
963         PR testsuite/83131
964         * builtins.c (expand_builtin_strlen): Use get_callee_fndecl.
965         (expand_builtin_strcmp): Call maybe_warn_nonstring_arg.
966         (expand_builtin_strncmp): Same.
967
968 2017-12-20  Alexandre Oliva  <aoliva@redhat.com>
969
970         PR bootstrap/83396
971         * cfgexpand.c (label_rtx_for_bb): Revert SFN changes that
972         allowed debug stmts before labels.
973         (expand_gimple_basic_block): Likewise.
974         * gimple-iterator.c (gimple_find_edge_insert_loc): Likewise.
975         * gimple-iterator.h (gsi_after_labels): Likewise.
976         * tree-cfgcleanup (remove_forwarder_block): Likewise, but
977         rename reused variable, and simplify using gsi_move_before.
978         * tree-ssa-tail-merge.c (find_duplicate): Likewise.
979         * tree-cfg.c (make_edges, cleanup_dead_labels): Likewise.
980         (gimple_can_merge_blocks_p, verify_gimple_in_cfg): Likewise.
981         (gimple_verify_flow_info, gimple_block_label): Likewise.
982         (make_blocks): Move debug markers after adjacent labels.
983         * cfgrtl.c (skip_insns_after_block): Revert SFN changes that
984         allowed debug insns outside blocks.
985         * df-scan.c (df_insn_delete): Likewise.
986         * lra-constraints.c (update_ebb_live_info): Likewise.
987         * var-tracking.c (get_first_insn, vt_emit_notes): Likewise.
988         (vt_initialize, delete_vta_debug_insns): Likewise.
989         (reemit_marker_as_note): Drop BB parm.  Adjust callers.
990
991 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
992             Alan Hayward  <alan.hayward@arm.com>
993             David Sherwood  <david.sherwood@arm.com>
994
995         * poly-int-types.h (round_down_to_byte_boundary): New macro.
996         (round_up_to_byte_boundary): Likewise.
997         * expr.h (get_bit_range): Add temporary shim.
998         * gimple-ssa-store-merging.c (store_operand_info): Change the
999         bitsize, bitpos, bitregion_start and bitregion_end fields from
1000         unsigned HOST_WIDE_INT to poly_uint64.
1001         (merged_store_group): Likewise load_align_base.
1002         (compatible_load_p, compatible_load_p): Update accordingly.
1003         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
1004         (split_group, imm_store_chain_info::output_merged_store): Likewise.
1005         (mem_valid_for_store_merging): Return the bitsize, bitpos,
1006         bitregion_start and bitregion_end as poly_uint64s rather than
1007         unsigned HOST_WIDE_INTs.  Track polynomial offsets internally.
1008         (handled_load): Take the bitsize, bitpos,
1009         bitregion_start and bitregion_end as poly_uint64s rather than
1010         unsigned HOST_WIDE_INTs.
1011         (pass_store_merging::process_store): Update call to
1012         mem_valid_for_store_merging.
1013
1014 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1015             Alan Hayward  <alan.hayward@arm.com>
1016             David Sherwood  <david.sherwood@arm.com>
1017
1018         * builtins.c (get_object_alignment_2): Track polynomial offsets
1019         and sizes.  Update the alignment handling.
1020
1021 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1022             Alan Hayward  <alan.hayward@arm.com>
1023             David Sherwood  <david.sherwood@arm.com>
1024
1025         * tree.h (get_inner_reference): Add a version that returns the
1026         offset and size as poly_int64_pods rather than HOST_WIDE_INTs.
1027         * cfgexpand.c (expand_debug_expr): Track polynomial offsets.  Simply
1028         the case in which bitpos is not associated with the first byte.
1029
1030 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1031             Alan Hayward  <alan.hayward@arm.com>
1032             David Sherwood  <david.sherwood@arm.com>
1033
1034         * tree-affine.h (get_inner_reference_aff): Return the size as a
1035         poly_widest_int.
1036         * tree-affine.c (get_inner_reference_aff): Likewise.
1037         * tree-data-ref.c (dr_may_alias_p): Update accordingly.
1038         * tree-ssa-loop-im.c (mem_refs_may_alias_p): Likewise.
1039
1040 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1041             Alan Hayward  <alan.hayward@arm.com>
1042             David Sherwood  <david.sherwood@arm.com>
1043
1044         * fold-const.c (pointer_may_wrap_p): Take the offset as a
1045         HOST_WIDE_INT rather than a poly_int64.
1046
1047 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1048             Alan Hayward  <alan.hayward@arm.com>
1049             David Sherwood  <david.sherwood@arm.com>
1050
1051         * gimple-ssa-store-merging.c (symbolic_number::bytepos): Change from
1052         HOST_WIDE_INT to poly_int64_pod.
1053         (perform_symbolic_merge): Update accordingly.
1054         (bswap_replace): Likewise.
1055
1056 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1057             Alan Hayward  <alan.hayward@arm.com>
1058             David Sherwood  <david.sherwood@arm.com>
1059
1060         * tree-affine.h (aff_tree::offset): Change from widest_int
1061         to poly_widest_int.
1062         (wide_int_ext_for_comb): Delete.
1063         (aff_combination_const, aff_comb_cannot_overlap_p): Take the
1064         constants as poly_widest_int rather than widest_int.
1065         (aff_combination_constant_multiple_p): Return the multiplier
1066         as a poly_widest_int.
1067         (aff_combination_zero_p, aff_combination_singleton_var_p): Handle
1068         polynomial offsets.
1069         * tree-affine.c (wide_int_ext_for_comb): Make original widest_int
1070         version static and add an overload for poly_widest_int.
1071         (aff_combination_const, aff_combination_add_cst)
1072         (wide_int_constant_multiple_p, aff_comb_cannot_overlap_p): Take
1073         the constants as poly_widest_int rather than widest_int.
1074         (tree_to_aff_combination): Generalize INTEGER_CST case to
1075         poly_int_tree_p.
1076         (aff_combination_to_tree): Track offsets as poly_widest_ints.
1077         (aff_combination_add_product, aff_combination_mult): Handle
1078         polynomial offsets.
1079         (aff_combination_constant_multiple_p): Return the multiplier
1080         as a poly_widest_int.
1081         * tree-predcom.c (determine_offset): Return the offset as a
1082         poly_widest_int.
1083         (split_data_refs_to_components, suitable_component_p): Update
1084         accordingly.
1085         (valid_initializer_p): Update call to
1086         aff_combination_constant_multiple_p.
1087         * tree-ssa-address.c (addr_to_parts): Handle polynomial offsets.
1088         * tree-ssa-loop-ivopts.c (get_address_cost_ainc): Take the step
1089         as a poly_int64 rather than a HOST_WIDE_INT.
1090         (get_address_cost): Handle polynomial offsets.
1091         (iv_elimination_compare_lt): Likewise.
1092         (rewrite_use_nonlinear_expr): Likewise.
1093
1094 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1095             Alan Hayward  <alan.hayward@arm.com>
1096             David Sherwood  <david.sherwood@arm.com>
1097
1098         * tree-dfa.h (get_addr_base_and_unit_offset_1): Return the offset
1099         as a poly_int64_pod rather than a HOST_WIDE_INT.
1100         (get_addr_base_and_unit_offset): Likewise.
1101         * tree-dfa.c (get_addr_base_and_unit_offset_1): Likewise.
1102         (get_addr_base_and_unit_offset): Likewise.
1103         * doc/match-and-simplify.texi: Change off from HOST_WIDE_INT
1104         to poly_int64 in example.
1105         * fold-const.c (fold_binary_loc): Update call to
1106         get_addr_base_and_unit_offset.
1107         * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
1108         (maybe_canonicalize_mem_ref_addr): Likewise.
1109         (gimple_fold_stmt_to_constant_1): Likewise.
1110         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
1111         Likewise.
1112         * ipa-param-manipulation.c (ipa_modify_call_arguments): Likewise.
1113         * match.pd: Likewise.
1114         * omp-low.c (lower_omp_target): Likewise.
1115         * tree-sra.c (build_ref_for_offset): Likewise.
1116         (build_debug_ref_for_model): Likewise.
1117         * tree-ssa-address.c (maybe_fold_tmr): Likewise.
1118         * tree-ssa-alias.c (ao_ref_init_from_ptr_and_size): Likewise.
1119         * tree-ssa-ccp.c (optimize_memcpy): Likewise.
1120         * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Likewise.
1121         (constant_pointer_difference): Likewise.
1122         * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
1123         * tree-ssa-phiopt.c (jump_function_from_stmt): Likewise.
1124         * tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise.
1125         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
1126         (vn_reference_maybe_forwprop_address, vn_reference_lookup_3): Likewise.
1127         (set_ssa_val_to): Likewise.
1128         * tree-ssa-strlen.c (get_addr_stridx, addr_stridxptr)
1129         (maybe_diag_stxncpy_trunc): Likewise.
1130         * tree-vrp.c (vrp_prop::check_array_ref): Likewise.
1131         * tree.c (build_simple_mem_ref_loc): Likewise.
1132         (array_at_struct_end_p): Likewise.
1133
1134 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1135             Alan Hayward  <alan.hayward@arm.com>
1136             David Sherwood  <david.sherwood@arm.com>
1137
1138         * tree-dfa.h (get_ref_base_and_extent): Return the base, size and
1139         max_size as poly_int64_pods rather than HOST_WIDE_INTs.
1140         (get_ref_base_and_extent_hwi): Declare.
1141         * tree-dfa.c (get_ref_base_and_extent): Return the base, size and
1142         max_size as poly_int64_pods rather than HOST_WIDE_INTs.
1143         (get_ref_base_and_extent_hwi): New function.
1144         * cfgexpand.c (expand_debug_expr): Update call to
1145         get_ref_base_and_extent.
1146         * dwarf2out.c (add_var_loc_to_decl): Likewise.
1147         * gimple-fold.c (get_base_constructor): Return the offset as a
1148         poly_int64_pod rather than a HOST_WIDE_INT.
1149         (fold_const_aggregate_ref_1): Track polynomial sizes and offsets.
1150         * ipa-polymorphic-call.c
1151         (ipa_polymorphic_call_context::set_by_invariant)
1152         (extr_type_from_vtbl_ptr_store): Track polynomial offsets.
1153         (ipa_polymorphic_call_context::ipa_polymorphic_call_context)
1154         (check_stmt_for_type_change): Use get_ref_base_and_extent_hwi
1155         rather than get_ref_base_and_extent.
1156         (ipa_polymorphic_call_context::get_dynamic_type): Likewise.
1157         * ipa-prop.c (ipa_load_from_parm_agg, compute_complex_assign_jump_func)
1158         (get_ancestor_addr_info, determine_locally_known_aggregate_parts):
1159         Likewise.
1160         * ipa-param-manipulation.c (ipa_get_adjustment_candidate): Update
1161         call to get_ref_base_and_extent.
1162         * tree-sra.c (create_access, get_access_for_expr): Likewise.
1163         * tree-ssa-alias.c (ao_ref_base, aliasing_component_refs_p)
1164         (stmt_kills_ref_p): Likewise.
1165         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
1166         * tree-ssa-scopedtables.c (avail_expr_hash, equal_mem_array_ref_p):
1167         Likewise.
1168         * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
1169         Use get_ref_base_and_extent_hwi rather than get_ref_base_and_extent
1170         when calling native_encode_expr.
1171         * tree-ssa-structalias.c (get_constraint_for_component_ref): Update
1172         call to get_ref_base_and_extent.
1173         (do_structure_copy): Use get_ref_base_and_extent_hwi rather than
1174         get_ref_base_and_extent.
1175         * var-tracking.c (track_expr_p): Likewise.
1176
1177 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1178             Alan Hayward  <alan.hayward@arm.com>
1179             David Sherwood  <david.sherwood@arm.com>
1180
1181         * ipa-param-manipulation.h (ipa_parm_adjustment::offset): Change from
1182         HOST_WIDE_INT to poly_int64_pod.
1183         * ipa-param-manipulation.c (ipa_modify_call_arguments): Track
1184         polynomail parameter offsets.
1185
1186 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1187             Alan Hayward  <alan.hayward@arm.com>
1188             David Sherwood  <david.sherwood@arm.com>
1189
1190         * gengtype.c (main): Handle poly_int64_pod.
1191         * dwarf2out.h (dw_cfi_oprnd_cfa_loc): New dw_cfi_oprnd_type.
1192         (dw_cfi_oprnd::dw_cfi_cfa_loc): New field.
1193         (dw_cfa_location::offset, dw_cfa_location::base_offset): Change
1194         from HOST_WIDE_INT to poly_int64_pod.
1195         * dwarf2cfi.c (queued_reg_save::cfa_offset): Likewise.
1196         (copy_cfa): New function.
1197         (lookup_cfa_1): Use the cached dw_cfi_cfa_loc, if it exists.
1198         (cfi_oprnd_equal_p): Handle dw_cfi_oprnd_cfa_loc.
1199         (cfa_equal_p, dwarf2out_frame_debug_adjust_cfa)
1200         (dwarf2out_frame_debug_cfa_offset, dwarf2out_frame_debug_expr)
1201         (initial_return_save): Treat offsets as poly_ints.
1202         (def_cfa_0): Likewise.  Cache the CFA in dw_cfi_cfa_loc if either
1203         offset is nonconstant.
1204         (reg_save): Take the offset as a poly_int64.  Fall back to
1205         DW_CFA_expression for nonconstant offsets.
1206         (queue_reg_save): Take the offset as a poly_int64.
1207         * dwarf2out.c (dw_cfi_oprnd2_desc): Handle DW_CFA_def_cfa_expression.
1208
1209 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1210             Alan Hayward  <alan.hayward@arm.com>
1211             David Sherwood  <david.sherwood@arm.com>
1212
1213         * rtl.h (operand_subword, operand_subword_force): Take the offset
1214         as a poly_uint64 an unsigned int.
1215         * emit-rtl.c (operand_subword, operand_subword_force): Likewise.
1216
1217 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1218             Alan Hayward  <alan.hayward@arm.com>
1219             David Sherwood  <david.sherwood@arm.com>
1220
1221         * doc/rtl.texi: Update documentation of SUBREG_BYTE.  Document the
1222         'p' format code.  Use INT_LIST rather than SUBREG as the example of
1223         a code with an XINT and an XEXP.  Remove the implication that
1224         accessing an rtx field using XINT is expected to work.
1225         * rtl.def (SUBREG): Change format from "ei" to "ep".
1226         * rtl.h (rtunion::rt_subreg): New field.
1227         (XCSUBREG): New macro.
1228         (SUBREG_BYTE): Use it.
1229         (subreg_shape): Change offset from an unsigned int to a poly_uint16.
1230         Update constructor accordingly.
1231         (subreg_shape::operator ==): Update accordingly.
1232         (subreg_shape::unique_id): Return an unsigned HOST_WIDE_INT rather
1233         than an unsigned int.
1234         (subreg_lsb, subreg_lowpart_offset, subreg_highpart_offset): Return
1235         a poly_uint64 rather than an unsigned int.
1236         (subreg_lsb_1): Likewise.  Take the offset as a poly_uint64 rather
1237         than an unsigned int.
1238         (subreg_size_offset_from_lsb, subreg_size_lowpart_offset)
1239         (subreg_size_highpart_offset): Return a poly_uint64 rather than
1240         an unsigned int.  Take the sizes as poly_uint64s.
1241         (subreg_offset_from_lsb): Return a poly_uint64 rather than
1242         an unsigned int.  Take the shift as a poly_uint64 rather than
1243         an unsigned int.
1244         (subreg_regno_offset, subreg_offset_representable_p): Take the offset
1245         as a poly_uint64 rather than an unsigned int.
1246         (simplify_subreg_regno): Likewise.
1247         (byte_lowpart_offset): Return the memory offset as a poly_int64
1248         rather than an int.
1249         (subreg_memory_offset): Likewise.  Take the subreg offset as a
1250         poly_uint64 rather than an unsigned int.
1251         (simplify_subreg, simplify_gen_subreg, subreg_get_info)
1252         (gen_rtx_SUBREG, validate_subreg): Take the subreg offset as a
1253         poly_uint64 rather than an unsigned int.
1254         * rtl.c (rtx_format): Describe 'p' in comment.
1255         (copy_rtx, rtx_equal_p_cb, rtx_equal_p): Handle 'p'.
1256         * emit-rtl.c (validate_subreg, gen_rtx_SUBREG): Take the subreg
1257         offset as a poly_uint64 rather than an unsigned int.
1258         (byte_lowpart_offset): Return the memory offset as a poly_int64
1259         rather than an int.
1260         (subreg_memory_offset): Likewise.  Take the subreg offset as a
1261         poly_uint64 rather than an unsigned int.
1262         (subreg_size_lowpart_offset, subreg_size_highpart_offset): Take the
1263         mode sizes as poly_uint64s rather than unsigned ints.  Return a
1264         poly_uint64 rather than an unsigned int.
1265         (subreg_lowpart_p): Treat subreg offsets as poly_ints.
1266         (copy_insn_1): Handle 'p'.
1267         * rtlanal.c (set_noop_p): Treat subregs offsets as poly_uint64s.
1268         (subreg_lsb_1): Take the subreg offset as a poly_uint64 rather than
1269         an unsigned int.  Return the shift in the same way.
1270         (subreg_lsb): Return the shift as a poly_uint64 rather than an
1271         unsigned int.
1272         (subreg_size_offset_from_lsb): Take the sizes and shift as
1273         poly_uint64s rather than unsigned ints.  Return the offset as
1274         a poly_uint64.
1275         (subreg_get_info, subreg_regno_offset, subreg_offset_representable_p)
1276         (simplify_subreg_regno): Take the offset as a poly_uint64 rather than
1277         an unsigned int.
1278         * rtlhash.c (add_rtx): Handle 'p'.
1279         * genemit.c (gen_exp): Likewise.
1280         * gengenrtl.c (type_from_format, gendef): Likewise.
1281         * gensupport.c (subst_pattern_match, get_alternatives_number)
1282         (collect_insn_data, alter_predicate_for_insn, alter_constraints)
1283         (subst_dup): Likewise.
1284         * gengtype.c (adjust_field_rtx_def): Likewise.
1285         * genrecog.c (find_operand, find_matching_operand, validate_pattern)
1286         (match_pattern_2): Likewise.
1287         (rtx_test::SUBREG_FIELD): New rtx_test::kind_enum.
1288         (rtx_test::subreg_field): New function.
1289         (operator ==, safe_to_hoist_p, transition_parameter_type)
1290         (print_nonbool_test, print_test): Handle SUBREG_FIELD.
1291         * genattrtab.c (attr_rtx_1): Say that 'p' is deliberately not handled.
1292         * genpeep.c (match_rtx): Likewise.
1293         * print-rtl.c (print_poly_int): Include if GENERATOR_FILE too.
1294         (rtx_writer::print_rtx_operand): Handle 'p'.
1295         (print_value): Handle SUBREG.
1296         * read-rtl.c (apply_int_iterator): Likewise.
1297         (rtx_reader::read_rtx_operand): Handle 'p'.
1298         * alias.c (rtx_equal_for_memref_p): Likewise.
1299         * cselib.c (rtx_equal_for_cselib_1, cselib_hash_rtx): Likewise.
1300         * caller-save.c (replace_reg_with_saved_mem): Treat subreg offsets
1301         as poly_ints.
1302         * calls.c (expand_call): Likewise.
1303         * combine.c (combine_simplify_rtx, expand_field_assignment): Likewise.
1304         (make_extraction, gen_lowpart_for_combine): Likewise.
1305         * loop-invariant.c (hash_invariant_expr_1, invariant_expr_equal_p):
1306         Likewise.
1307         * cse.c (remove_invalid_subreg_refs): Take the offset as a poly_uint64
1308         rather than an unsigned int.  Treat subreg offsets as poly_ints.
1309         (exp_equiv_p): Handle 'p'.
1310         (hash_rtx_cb): Likewise.  Treat subreg offsets as poly_ints.
1311         (equiv_constant, cse_insn): Treat subreg offsets as poly_ints.
1312         * dse.c (find_shift_sequence): Likewise.
1313         * dwarf2out.c (rtl_for_decl_location): Likewise.
1314         * expmed.c (extract_low_bits): Likewise.
1315         * expr.c (emit_group_store, undefined_operand_subword_p): Likewise.
1316         (expand_expr_real_2): Likewise.
1317         * final.c (alter_subreg): Likewise.
1318         (leaf_renumber_regs_insn): Handle 'p'.
1319         * function.c (assign_parm_find_stack_rtl, assign_parm_setup_stack):
1320         Treat subreg offsets as poly_ints.
1321         * fwprop.c (forward_propagate_and_simplify): Likewise.
1322         * ifcvt.c (noce_emit_move_insn, noce_emit_cmove): Likewise.
1323         * ira.c (get_subreg_tracking_sizes): Likewise.
1324         * ira-conflicts.c (go_through_subreg): Likewise.
1325         * ira-lives.c (process_single_reg_class_operands): Likewise.
1326         * jump.c (rtx_renumbered_equal_p): Likewise.  Handle 'p'.
1327         * lower-subreg.c (simplify_subreg_concatn): Take the subreg offset
1328         as a poly_uint64 rather than an unsigned int.
1329         (simplify_gen_subreg_concatn, resolve_simple_move): Treat
1330         subreg offsets as poly_ints.
1331         * lra-constraints.c (operands_match_p): Handle 'p'.
1332         (match_reload, curr_insn_transform): Treat subreg offsets as poly_ints.
1333         * lra-spills.c (assign_mem_slot): Likewise.
1334         * postreload.c (move2add_valid_value_p): Likewise.
1335         * recog.c (general_operand, indirect_operand): Likewise.
1336         * regcprop.c (copy_value, maybe_mode_change): Likewise.
1337         (copyprop_hardreg_forward_1): Likewise.
1338         * reginfo.c (simplifiable_subregs_hasher::hash, simplifiable_subregs)
1339         (record_subregs_of_mode): Likewise.
1340         * rtlhooks.c (gen_lowpart_general, gen_lowpart_if_possible): Likewise.
1341         * reload.c (operands_match_p): Handle 'p'.
1342         (find_reloads_subreg_address): Treat subreg offsets as poly_ints.
1343         * reload1.c (alter_reg, choose_reload_regs): Likewise.
1344         (compute_reload_subreg_offset): Likewise, and return an poly_int64.
1345         * simplify-rtx.c (simplify_truncation, simplify_binary_operation_1):
1346         (test_vector_ops_duplicate): Treat subreg offsets as poly_ints.
1347         (simplify_const_poly_int_tests<N>::run): Likewise.
1348         (simplify_subreg, simplify_gen_subreg): Take the subreg offset as
1349         a poly_uint64 rather than an unsigned int.
1350         * valtrack.c (debug_lowpart_subreg): Likewise.
1351         * var-tracking.c (var_lowpart): Likewise.
1352         (loc_cmp): Handle 'p'.
1353
1354 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1355             Alan Hayward  <alan.hayward@arm.com>
1356             David Sherwood  <david.sherwood@arm.com>
1357
1358         * ira.c (get_subreg_tracking_sizes): New function.
1359         (init_live_subregs): Take an integer size rather than a register.
1360         (build_insn_chain): Use get_subreg_tracking_sizes.  Update calls
1361         to init_live_subregs.
1362
1363 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1364             Alan Hayward  <alan.hayward@arm.com>
1365             David Sherwood  <david.sherwood@arm.com>
1366
1367         * expr.c (store_constructor_field): Change bitsize from a
1368         unsigned HOST_WIDE_INT to a poly_uint64 and bitpos from a
1369         HOST_WIDE_INT to a poly_int64.
1370         (store_constructor): Change size from a HOST_WIDE_INT to
1371         a poly_int64.
1372         (store_field): Likewise bitsize and bitpos.
1373
1374 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1375             Alan Hayward  <alan.hayward@arm.com>
1376             David Sherwood  <david.sherwood@arm.com>
1377
1378         * expmed.h (store_bit_field): Change bitregion_start and
1379         bitregion_end from unsigned HOST_WIDE_INT to poly_uint64.
1380         * expmed.c (adjust_bit_field_mem_for_reg, strict_volatile_bitfield_p)
1381         (store_bit_field_1, store_integral_bit_field, store_bit_field)
1382         (store_fixed_bit_field, store_split_bit_field): Likewise.
1383         * expr.c (store_constructor_field, store_field): Likewise.
1384         (optimize_bitfield_assignment_op): Likewise.  Make the same change
1385         to bitsize and bitpos.
1386         * machmode.h (bit_field_mode_iterator): Change m_bitregion_start
1387         and m_bitregion_end from HOST_WIDE_INT to poly_int64.  Make the
1388         same change in the constructor arguments.
1389         (get_best_mode): Change bitregion_start and bitregion_end from
1390         unsigned HOST_WIDE_INT to poly_uint64.
1391         * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
1392         Change bitregion_start and bitregion_end from HOST_WIDE_INT to
1393         poly_int64.
1394         (bit_field_mode_iterator::next_mode): Update for new types
1395         of m_bitregion_start and m_bitregion_end.
1396         (get_best_mode): Change bitregion_start and bitregion_end from
1397         unsigned HOST_WIDE_INT to poly_uint64.
1398
1399 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1400             Alan Hayward  <alan.hayward@arm.com>
1401             David Sherwood  <david.sherwood@arm.com>
1402
1403         * rtl.h (simplify_gen_subreg): Add a temporary overload that
1404         accepts poly_uint64 offsets.
1405         * expmed.h (extract_bit_field): Take bitsize and bitnum as
1406         poly_uint64s rather than unsigned HOST_WIDE_INTs.
1407         * expmed.c (lowpart_bit_field_p): Likewise.
1408         (extract_bit_field_as_subreg): New function, split out from...
1409         (extract_bit_field_1): ...here.  Take bitsize and bitnum as
1410         poly_uint64s rather than unsigned HOST_WIDE_INTs.  For vector
1411         extractions, check that BITSIZE matches the size of the extracted
1412         value and that BITNUM is an exact multiple of that size.
1413         If all else fails, try forcing the value into memory if
1414         BITNUM is variable, and adjusting the address so that the
1415         offset is constant.  Split the part that can only handle constant
1416         bitsize and bitnum out into...
1417         (extract_integral_bit_field): ...this new function.
1418         (extract_bit_field): Take bitsize and bitnum as poly_uint64s
1419         rather than unsigned HOST_WIDE_INTs.
1420
1421 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1422             Alan Hayward  <alan.hayward@arm.com>
1423             David Sherwood  <david.sherwood@arm.com>
1424
1425         * expmed.h (store_bit_field): Take bitsize and bitnum as
1426         poly_uint64s rather than unsigned HOST_WIDE_INTs.
1427         * expmed.c (simple_mem_bitfield_p): Likewise.  Add a parameter
1428         that returns the byte size.
1429         (store_bit_field_1): Take bitsize and bitnum as
1430         poly_uint64s rather than unsigned HOST_WIDE_INTs.  Update call
1431         to simple_mem_bitfield_p.  Split the part that can only handle
1432         constant bitsize and bitnum out into...
1433         (store_integral_bit_field): ...this new function.
1434         (store_bit_field): Take bitsize and bitnum as poly_uint64s rather
1435         than unsigned HOST_WIDE_INTs.
1436         (extract_bit_field_1): Update call to simple_mem_bitfield_p.
1437
1438 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1439             Alan Hayward  <alan.hayward@arm.com>
1440             David Sherwood  <david.sherwood@arm.com>
1441
1442         * lra-int.h (lra_reg): Change offset from int to poly_int64.
1443         (lra_insn_recog_data): Change sp_offset from HOST_WIDE_INT
1444         to poly_int64.
1445         (lra_eliminate_regs_1, eliminate_regs_in_insn): Change
1446         update_sp_offset from a HOST_WIDE_INT to a poly_int64.
1447         (lra_update_reg_val_offset, lra_reg_val_equal_p): Take the
1448         offset as a poly_int64 rather than an int.
1449         * lra-assigns.c (find_hard_regno_for_1): Handle poly_int64 offsets.
1450         (setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
1451         * lra-constraints.c (equiv_address_substitution): Track offsets
1452         as poly_int64s.
1453         (emit_inc): Check poly_int_rtx_p instead of CONST_INT_P.
1454         (curr_insn_transform): Handle the new form of sp_offset.
1455         * lra-eliminations.c (lra_elim_table): Change previous_offset
1456         and offset from HOST_WIDE_INT to poly_int64.
1457         (print_elim_table, update_reg_eliminate): Update accordingly.
1458         (self_elim_offsets): Change from HOST_WIDE_INT to poly_int64_pod.
1459         (get_elimination): Update accordingly.
1460         (form_sum): Check poly_int_rtx_p instead of CONST_INT_P.
1461         (lra_eliminate_regs_1, eliminate_regs_in_insn): Change
1462         update_sp_offset from a HOST_WIDE_INT to a poly_int64.  Handle
1463         poly_int64 offsets generally.
1464         (curr_sp_change): Change from HOST_WIDE_INT to poly_int64.
1465         (mark_not_eliminable, init_elimination): Update accordingly.
1466         (remove_reg_equal_offset_note): Return a bool and pass the new
1467         offset back by pointer as a poly_int64.
1468         * lra-remat.c (change_sp_offset): Take sp_offset as a poly_int64
1469         rather than a HOST_WIDE_INT.
1470         (do_remat): Track offsets poly_int64s.
1471         * lra.c (lra_update_insn_recog_data, setup_sp_offset): Likewise.
1472
1473 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1474             Alan Hayward  <alan.hayward@arm.com>
1475             David Sherwood  <david.sherwood@arm.com>
1476
1477         * rtl.h (mem_attrs): Add a default constructor.  Change size and
1478         offset from HOST_WIDE_INT to poly_int64.
1479         * emit-rtl.h (set_mem_offset, set_mem_size, adjust_address_1)
1480         (adjust_automodify_address_1, set_mem_attributes_minus_bitpos)
1481         (widen_memory_access): Take the sizes and offsets as poly_int64s
1482         rather than HOST_WIDE_INTs.
1483         * alias.c (ao_ref_from_mem): Handle the new form of MEM_OFFSET.
1484         (offset_overlap_p): Take poly_int64s rather than HOST_WIDE_INTs
1485         and ints.
1486         (adjust_offset_for_component_ref): Change the offset from a
1487         HOST_WIDE_INT to a poly_int64.
1488         (nonoverlapping_memrefs_p): Track polynomial offsets and sizes.
1489         * cfgcleanup.c (merge_memattrs): Update after mem_attrs changes.
1490         * dce.c (find_call_stack_args): Likewise.
1491         * dse.c (record_store): Likewise.
1492         * dwarf2out.c (tls_mem_loc_descriptor, dw_sra_loc_expr): Likewise.
1493         * print-rtl.c (rtx_writer::print_rtx): Likewise.
1494         * read-rtl-function.c (test_loading_mem): Likewise.
1495         * rtlanal.c (may_trap_p_1): Likewise.
1496         * simplify-rtx.c (delegitimize_mem_from_attrs): Likewise.
1497         * var-tracking.c (int_mem_offset, track_expr_p): Likewise.
1498         * emit-rtl.c (mem_attrs_eq_p, get_mem_align_offset): Likewise.
1499         (mem_attrs::mem_attrs): New function.
1500         (set_mem_attributes_minus_bitpos): Change bitpos from a
1501         HOST_WIDE_INT to poly_int64.
1502         (set_mem_alias_set, set_mem_addr_space, set_mem_align, set_mem_expr)
1503         (clear_mem_offset, clear_mem_size, change_address)
1504         (get_spill_slot_decl, set_mem_attrs_for_spill): Directly
1505         initialize mem_attrs.
1506         (set_mem_offset, set_mem_size, adjust_address_1)
1507         (adjust_automodify_address_1, offset_address, widen_memory_access):
1508         Likewise.  Take poly_int64s rather than HOST_WIDE_INT.
1509
1510 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1511             Alan Hayward  <alan.hayward@arm.com>
1512             David Sherwood  <david.sherwood@arm.com>
1513
1514         * rtlanal.c (rtx_addr_can_trap_p_1): Take the offset and size
1515         as poly_int64s rather than HOST_WIDE_INTs.  Use a size of -1
1516         rather than 0 to represent an unknown size.  Assert that the size
1517         is known when the mode isn't BLKmode.
1518         (may_trap_p_1): Use -1 for unknown sizes.
1519         (rtx_addr_can_trap_p): Likewise.  Pass BLKmode rather than VOIDmode.
1520
1521 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1522             Alan Hayward  <alan.hayward@arm.com>
1523             David Sherwood  <david.sherwood@arm.com>
1524
1525         * dse.c (store_info): Change offset and width from HOST_WIDE_INT
1526         to poly_int64.  Update commentary for positions_needed.large.
1527         (read_info_type): Change offset and width from HOST_WIDE_INT
1528         to poly_int64.
1529         (set_usage_bits): Likewise.
1530         (canon_address): Return the offset as a poly_int64 rather than
1531         a HOST_WIDE_INT.  Use strip_offset_and_add.
1532         (set_all_positions_unneeded, any_positions_needed_p): Use
1533         positions_needed.large to track stores with non-constant widths.
1534         (all_positions_needed_p): Likewise.  Take the offset and width
1535         as poly_int64s rather than ints.  Assert that rhs is nonnull.
1536         (record_store): Cope with non-constant offsets and widths.
1537         Nullify the rhs of an earlier store if we can't tell which bytes
1538         of it are needed.
1539         (find_shift_sequence): Take the access_size and shift as poly_int64s
1540         rather than ints.
1541         (get_stored_val): Take the read_offset and read_width as poly_int64s
1542         rather than HOST_WIDE_INTs.
1543         (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Handle
1544         non-constant offsets and widths.
1545
1546 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1547             Alan Hayward  <alan.hayward@arm.com>
1548             David Sherwood  <david.sherwood@arm.com>
1549
1550         * inchash.h (inchash::hash::add_poly_int): New function.
1551         * tree-ssa-alias.h (ao_ref::offset, ao_ref::size, ao_ref::max_size):
1552         Use poly_int64 rather than HOST_WIDE_INT.
1553         (ao_ref::max_size_known_p): New function.
1554         * tree-ssa-sccvn.h (vn_reference_op_struct::off): Use poly_int64_pod
1555         rather than HOST_WIDE_INT.
1556         * tree-ssa-alias.c (ao_ref_base): Apply get_ref_base_and_extent
1557         to temporaries until its interface is adjusted to match.
1558         (ao_ref_init_from_ptr_and_size): Handle polynomial offsets and sizes.
1559         (aliasing_component_refs_p, decl_refs_may_alias_p)
1560         (indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p): Take
1561         the offsets and max_sizes as poly_int64s instead of HOST_WIDE_INTs.
1562         (refs_may_alias_p_1, stmt_kills_ref_p): Adjust for changes to
1563         ao_ref fields.
1564         * alias.c (ao_ref_from_mem): Likewise.
1565         * tree-ssa-dce.c (mark_aliased_reaching_defs_necessary_1): Likewise.
1566         * tree-ssa-dse.c (valid_ao_ref_for_dse, normalize_ref)
1567         (clear_bytes_written_by, setup_live_bytes_from_ref, compute_trims)
1568         (maybe_trim_complex_store, maybe_trim_constructor_store)
1569         (live_bytes_read, dse_classify_store): Likewise.
1570         * tree-ssa-sccvn.c (vn_reference_compute_hash, vn_reference_eq):
1571         (copy_reference_ops_from_ref, ao_ref_init_from_vn_reference)
1572         (fully_constant_vn_reference_p, valueize_refs_1): Likewise.
1573         (vn_reference_lookup_3): Likewise.
1574         * tree-ssa-uninit.c (warn_uninitialized_vars): Likewise.
1575
1576 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1577             Alan Hayward  <alan.hayward@arm.com>
1578             David Sherwood  <david.sherwood@arm.com>
1579
1580         * tree-ssa-alias.c (indirect_ref_may_alias_decl_p)
1581         (indirect_refs_may_alias_p): Use ranges_may_overlap_p
1582         instead of ranges_overlap_p.
1583
1584 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1585             Alan Hayward  <alan.hayward@arm.com>
1586             David Sherwood  <david.sherwood@arm.com>
1587
1588         * tree-ssa-alias.c (same_addr_size_stores_p): Take the offsets and
1589         sizes as poly_int64s rather than HOST_WIDE_INTs.
1590
1591 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1592             Alan Hayward  <alan.hayward@arm.com>
1593             David Sherwood  <david.sherwood@arm.com>
1594
1595         * gimple-fold.h (fold_ctor_reference): Take the offset and size
1596         as poly_uint64 rather than unsigned HOST_WIDE_INT.
1597         * gimple-fold.c (fold_ctor_reference): Likewise.
1598
1599 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1600             Alan Hayward  <alan.hayward@arm.com>
1601             David Sherwood  <david.sherwood@arm.com>
1602
1603         * target.def (dwarf_poly_indeterminate_value): New hook.
1604         * targhooks.h (default_dwarf_poly_indeterminate_value): Declare.
1605         * targhooks.c (default_dwarf_poly_indeterminate_value): New function.
1606         * doc/tm.texi.in (TARGET_DWARF_POLY_INDETERMINATE_VALUE): Document.
1607         * doc/tm.texi: Regenerate.
1608         * dwarf2out.h (build_cfa_loc, build_cfa_aligned_loc): Take the
1609         offset as a poly_int64.
1610         * dwarf2out.c (new_reg_loc_descr): Move later in file.  Take the
1611         offset as a poly_int64.
1612         (loc_descr_plus_const, loc_list_plus_const, build_cfa_aligned_loc):
1613         Take the offset as a poly_int64.
1614         (build_cfa_loc): Likewise.  Use loc_descr_plus_const.
1615         (frame_pointer_fb_offset): Change to a poly_int64.
1616         (int_loc_descriptor): Take the offset as a poly_int64.  Use
1617         targetm.dwarf_poly_indeterminate_value for polynomial offsets.
1618         (based_loc_descr): Take the offset as a poly_int64.
1619         Use strip_offset_and_add to handle (plus X (const)).
1620         Use new_reg_loc_descr instead of an open-coded version of the
1621         previous implementation.
1622         (mem_loc_descriptor): Handle CONST_POLY_INT.
1623         (compute_frame_pointer_to_fb_displacement): Take the offset as a
1624         poly_int64.  Use strip_offset_and_add to handle (plus X (const)).
1625
1626 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1627             Alan Hayward  <alan.hayward@arm.com>
1628             David Sherwood  <david.sherwood@arm.com>
1629
1630         * rtl.h (reg_attrs::offset): Change from HOST_WIDE_INT to poly_int64.
1631         (gen_rtx_REG_offset): Take the offset as a poly_int64.
1632         * inchash.h (inchash::hash::add_poly_hwi): New function.
1633         * gengtype.c (main): Register poly_int64.
1634         * emit-rtl.c (reg_attr_hasher::hash): Use inchash.  Treat the
1635         offset as a poly_int.
1636         (reg_attr_hasher::equal): Use must_eq to compare offsets.
1637         (get_reg_attrs, update_reg_offset, gen_rtx_REG_offset): Take the
1638         offset as a poly_int64.
1639         (set_reg_attrs_from_value): Treat the offset as a poly_int64.
1640         * print-rtl.c (print_poly_int): New function.
1641         (rtx_writer::print_rtx_operand_code_r): Treat REG_OFFSET as
1642         a poly_int.
1643         * var-tracking.c (track_offset_p, get_tracked_reg_offset): New
1644         functions.
1645         (var_reg_set, var_reg_delete_and_set, var_reg_delete): Use them.
1646         (same_variable_part_p, track_loc_p): Take the offset as a poly_int64.
1647         (vt_get_decl_and_offset): Return the offset as a poly_int64.
1648         Enforce track_offset_p for parts of a PARALLEL.
1649         (vt_add_function_parameter): Use const_offset for the final
1650         offset to track.  Use get_tracked_reg_offset for the parts
1651         of a PARALLEL.
1652
1653 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1654             Alan Hayward  <alan.hayward@arm.com>
1655             David Sherwood  <david.sherwood@arm.com>
1656
1657         * target.def (truly_noop_truncation): Take poly_uint64s instead of
1658         unsigned ints.  Change default to hook_bool_puint64_puint64_true.
1659         * doc/tm.texi: Regenerate.
1660         * hooks.h (hook_bool_uint_uint_true): Delete.
1661         (hook_bool_puint64_puint64_true): Declare.
1662         * hooks.c (hook_bool_uint_uint_true): Delete.
1663         (hook_bool_puint64_puint64_true): New function.
1664         * config/mips/mips.c (mips_truly_noop_truncation): Take poly_uint64s
1665         instead of unsigned ints.
1666         * config/spu/spu.c (spu_truly_noop_truncation): Likewise.
1667         * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): Likewise.
1668
1669 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1670             Alan Hayward  <alan.hayward@arm.com>
1671             David Sherwood  <david.sherwood@arm.com>
1672
1673         * optabs.h (expand_operand): Add an int_value field.
1674         (create_expand_operand): Add an int_value parameter and use it
1675         to initialize the new expand_operand field.
1676         (create_integer_operand): Replace with a declaration of a function
1677         that accepts poly_int64s.  Move the implementation to...
1678         * optabs.c (create_integer_operand): ...here.
1679         (maybe_legitimize_operand): For EXPAND_INTEGER, check whether
1680         the mode preserves the value of int_value, instead of calling
1681         const_int_operand on the rtx.  Use gen_int_mode to generate
1682         the new rtx.
1683
1684 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1685             Alan Hayward  <alan.hayward@arm.com>
1686             David Sherwood  <david.sherwood@arm.com>
1687
1688         * dumpfile.h (dump_dec): Declare.
1689         * dumpfile.c (dump_dec): New function.
1690         * pretty-print.h (pp_wide_integer): Turn into a function and
1691         declare a poly_int version.
1692         * pretty-print.c (pp_wide_integer): New function for poly_ints.
1693
1694 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1695             Alan Hayward  <alan.hayward@arm.com>
1696             David Sherwood  <david.sherwood@arm.com>
1697
1698         * doc/generic.texi (POLY_INT_CST): Document.
1699         * tree.def (POLY_INT_CST): New tree code.
1700         * treestruct.def (TS_POLY_INT_CST): New tree layout.
1701         * tree-core.h (tree_poly_int_cst): New struct.
1702         (tree_node): Add a poly_int_cst field.
1703         * tree.h (POLY_INT_CST_P, POLY_INT_CST_COEFF): New macros.
1704         (wide_int_to_tree, force_fit_type): Take a poly_wide_int_ref
1705         instead of a wide_int_ref.
1706         (build_int_cst, build_int_cst_type): Take a poly_int64 instead
1707         of a HOST_WIDE_INT.
1708         (build_int_cstu, build_array_type_nelts): Take a poly_uint64
1709         instead of an unsigned HOST_WIDE_INT.
1710         (build_poly_int_cst, tree_fits_poly_int64_p, tree_fits_poly_uint64_p)
1711         (ptrdiff_tree_p): Declare.
1712         (tree_to_poly_int64, tree_to_poly_uint64): Likewise.  Provide
1713         extern inline implementations if the target doesn't use POLY_INT_CST.
1714         (poly_int_tree_p): New function.
1715         (wi::unextended_tree): New class.
1716         (wi::int_traits <unextended_tree>): New override.
1717         (wi::extended_tree): Add a default constructor.
1718         (wi::extended_tree::get_tree): New function.
1719         (wi::widest_extended_tree, wi::offset_extended_tree): New typedefs.
1720         (wi::tree_to_widest_ref, wi::tree_to_offset_ref): Use them.
1721         (wi::tree_to_poly_widest_ref, wi::tree_to_poly_offset_ref)
1722         (wi::tree_to_poly_wide_ref): New typedefs.
1723         (wi::ints_for): Provide overloads for extended_tree and
1724         unextended_tree.
1725         (poly_int_cst_value, wi::to_poly_widest, wi::to_poly_offset)
1726         (wi::to_wide): New functions.
1727         (wi::fits_to_boolean_p, wi::fits_to_tree_p): Handle poly_ints.
1728         * tree.c (poly_int_cst_hasher): New struct.
1729         (poly_int_cst_hash_table): New variable.
1730         (tree_node_structure_for_code, tree_code_size, simple_cst_equal)
1731         (valid_constant_size_p, add_expr, drop_tree_overflow): Handle
1732         POLY_INT_CST.
1733         (initialize_tree_contains_struct): Handle TS_POLY_INT_CST.
1734         (init_ttree): Initialize poly_int_cst_hash_table.
1735         (build_int_cst, build_int_cst_type, build_invariant_address): Take
1736         a poly_int64 instead of a HOST_WIDE_INT.
1737         (build_int_cstu, build_array_type_nelts): Take a poly_uint64
1738         instead of an unsigned HOST_WIDE_INT.
1739         (wide_int_to_tree): Rename to...
1740         (wide_int_to_tree_1): ...this.
1741         (build_new_poly_int_cst, build_poly_int_cst): New functions.
1742         (force_fit_type): Take a poly_wide_int_ref instead of a wide_int_ref.
1743         (wide_int_to_tree): New function that takes a poly_wide_int_ref.
1744         (ptrdiff_tree_p, tree_to_poly_int64, tree_to_poly_uint64)
1745         (tree_fits_poly_int64_p, tree_fits_poly_uint64_p): New functions.
1746         * lto-streamer-out.c (DFS::DFS_write_tree_body, hash_tree): Handle
1747         TS_POLY_INT_CST.
1748         * tree-streamer-in.c (lto_input_ts_poly_tree_pointers): Likewise.
1749         (streamer_read_tree_body): Likewise.
1750         * tree-streamer-out.c (write_ts_poly_tree_pointers): Likewise.
1751         (streamer_write_tree_body): Likewise.
1752         * tree-streamer.c (streamer_check_handled_ts_structures): Likewise.
1753         * asan.c (asan_protect_global): Require the size to be an INTEGER_CST.
1754         * cfgexpand.c (expand_debug_expr): Handle POLY_INT_CST.
1755         * expr.c (expand_expr_real_1, const_vector_from_tree): Likewise.
1756         * gimple-expr.h (is_gimple_constant): Likewise.
1757         * gimplify.c (maybe_with_size_expr): Likewise.
1758         * print-tree.c (print_node): Likewise.
1759         * tree-data-ref.c (data_ref_compare_tree): Likewise.
1760         * tree-pretty-print.c (dump_generic_node): Likewise.
1761         * tree-ssa-address.c (addr_for_mem_ref): Likewise.
1762         * tree-vect-data-refs.c (dr_group_sort_cmp): Likewise.
1763         * tree-vrp.c (compare_values_warnv): Likewise.
1764         * tree-ssa-loop-ivopts.c (determine_base_object, constant_multiple_of)
1765         (get_loop_invariant_expr, add_candidate_1, get_computation_aff_1)
1766         (force_expr_to_var_cost): Likewise.
1767         * tree-ssa-loop.c (for_each_index): Likewise.
1768         * fold-const.h (build_invariant_address, size_int_kind): Take a
1769         poly_int64 instead of a HOST_WIDE_INT.
1770         * fold-const.c (fold_negate_expr_1, const_binop, const_unop)
1771         (fold_convert_const, multiple_of_p, fold_negate_const): Handle
1772         POLY_INT_CST.
1773         (size_binop_loc): Likewise.  Allow int_const_binop_1 to fail.
1774         (int_const_binop_2): New function, split out from...
1775         (int_const_binop_1): ...here.  Handle POLY_INT_CST.
1776         (size_int_kind): Take a poly_int64 instead of a HOST_WIDE_INT.
1777         * expmed.c (make_tree): Handle CONST_POLY_INT_P.
1778         * gimple-ssa-strength-reduction.c (slsr_process_add)
1779         (slsr_process_mul): Check for INTEGER_CSTs before using them
1780         as candidates.
1781         * stor-layout.c (bits_from_bytes): New function.
1782         (bit_from_pos): Use it.
1783         (layout_type): Likewise.  For vectors, multiply the TYPE_SIZE_UNIT
1784         by BITS_PER_UNIT to get the TYPE_SIZE.
1785         * tree-cfg.c (verify_expr, verify_types_in_gimple_reference): Allow
1786         MEM_REF and TARGET_MEM_REF offsets to be a POLY_INT_CST.
1787
1788 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1789             Alan Hayward  <alan.hayward@arm.com>
1790             David Sherwood  <david.sherwood@arm.com>
1791
1792         * doc/rtl.texi (const_poly_int): Document.  Also document the
1793         rtl sharing behavior.
1794         * gengenrtl.c (excluded_rtx): Return true for CONST_POLY_INT.
1795         * rtl.h (const_poly_int_def): New struct.
1796         (rtx_def::u): Add a cpi field.
1797         (CASE_CONST_UNIQUE, CASE_CONST_ANY): Add CONST_POLY_INT.
1798         (CONST_POLY_INT_P, CONST_POLY_INT_COEFFS): New macros.
1799         (wi::rtx_to_poly_wide_ref): New typedef
1800         (const_poly_int_value, wi::to_poly_wide, rtx_to_poly_int64)
1801         (poly_int_rtx_p): New functions.
1802         (trunc_int_for_mode): Declare a poly_int64 version.
1803         (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
1804         (immed_wide_int_const): Take a poly_wide_int_ref rather than
1805         a wide_int_ref.
1806         (strip_offset): Declare.
1807         (strip_offset_and_add): New function.
1808         * rtl.def (CONST_POLY_INT): New rtx code.
1809         * rtl.c (rtx_size): Handle CONST_POLY_INT.
1810         (shared_const_p): Use poly_int_rtx_p.
1811         * emit-rtl.h (gen_int_mode): Take a poly_int64 instead of a
1812         HOST_WIDE_INT.
1813         (gen_int_shift_amount): Likewise.
1814         * emit-rtl.c (const_poly_int_hasher): New class.
1815         (const_poly_int_htab): New variable.
1816         (init_emit_once): Initialize it when NUM_POLY_INT_COEFFS > 1.
1817         (const_poly_int_hasher::hash): New function.
1818         (const_poly_int_hasher::equal): Likewise.
1819         (gen_int_mode): Take a poly_int64 instead of a HOST_WIDE_INT.
1820         (immed_wide_int_const): Rename to...
1821         (immed_wide_int_const_1): ...this and make static.
1822         (immed_wide_int_const): New function, taking a poly_wide_int_ref
1823         instead of a wide_int_ref.
1824         (gen_int_shift_amount): Take a poly_int64 instead of a HOST_WIDE_INT.
1825         (gen_lowpart_common): Handle CONST_POLY_INT.
1826         * cse.c (hash_rtx_cb, equiv_constant): Likewise.
1827         * cselib.c (cselib_hash_rtx): Likewise.
1828         * dwarf2out.c (const_ok_for_output_1): Likewise.
1829         * expr.c (convert_modes): Likewise.
1830         * print-rtl.c (rtx_writer::print_rtx, print_value): Likewise.
1831         * rtlhash.c (add_rtx): Likewise.
1832         * explow.c (trunc_int_for_mode): Add a poly_int64 version.
1833         (plus_constant): Take a poly_int64 instead of a HOST_WIDE_INT.
1834         Handle existing CONST_POLY_INT rtxes.
1835         * expmed.h (expand_shift): Take a poly_int64 instead of a
1836         HOST_WIDE_INT.
1837         * expmed.c (expand_shift): Likewise.
1838         * rtlanal.c (strip_offset): New function.
1839         (commutative_operand_precedence): Give CONST_POLY_INT the same
1840         precedence as CONST_DOUBLE and put CONST_WIDE_INT between that
1841         and CONST_INT.
1842         * rtl-tests.c (const_poly_int_tests): New struct.
1843         (rtl_tests_c_tests): Use it.
1844         * simplify-rtx.c (simplify_const_unary_operation): Handle
1845         CONST_POLY_INT.
1846         (simplify_const_binary_operation): Likewise.
1847         (simplify_binary_operation_1): Fold additions of symbolic constants
1848         and CONST_POLY_INTs.
1849         (simplify_subreg): Handle extensions and truncations of
1850         CONST_POLY_INTs.
1851         (simplify_const_poly_int_tests): New struct.
1852         (simplify_rtx_c_tests): Use it.
1853         * wide-int.h (storage_ref): Add default constructor.
1854         (wide_int_ref_storage): Likewise.
1855         (trailing_wide_ints): Use GTY((user)).
1856         (trailing_wide_ints::operator[]): Add a const version.
1857         (trailing_wide_ints::get_precision): New function.
1858         (trailing_wide_ints::extra_size): Likewise.
1859
1860 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1861             Alan Hayward  <alan.hayward@arm.com>
1862             David Sherwood  <david.sherwood@arm.com>
1863
1864         * emit-rtl.h (gen_int_shift_amount): Declare.
1865         * emit-rtl.c (gen_int_shift_amount): New function.
1866         * asan.c (asan_emit_stack_protection): Use gen_int_shift_amount
1867         instead of GEN_INT.
1868         * calls.c (shift_return_value): Likewise.
1869         * cse.c (fold_rtx): Likewise.
1870         * dse.c (find_shift_sequence): Likewise.
1871         * expmed.c (init_expmed_one_mode, store_bit_field_1, expand_shift_1)
1872         (expand_shift, expand_smod_pow2): Likewise.
1873         * lower-subreg.c (shift_cost): Likewise.
1874         * optabs.c (expand_superword_shift, expand_doubleword_mult)
1875         (expand_unop, expand_binop, shift_amt_for_vec_perm_mask)
1876         (expand_vec_perm_var): Likewise.
1877         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
1878         (simplify_binary_operation_1): Likewise.
1879         * combine.c (try_combine, find_split_point, force_int_to_mode)
1880         (simplify_shift_const_1, simplify_shift_const): Likewise.
1881         (change_zero_ext): Likewise.  Use simplify_gen_binary.
1882
1883 2017-12-20  Richard Sandiford  <richard.sandiford@linaro.org>
1884
1885         * poly-int.h (multiple_p): Fix handling of two non-poly_ints.
1886
1887 2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1888
1889         * doc/invoke.texi (ARM Options): Document accepted extension options
1890         for -march=armv8.3-a.
1891
1892 2017-12-20  Richard Earnshaw  <rearnsha@arm.com>
1893
1894         PR target/83105
1895         * config.gcc (arm*-*-linux*): When configured with --with-float=hard
1896         or --with-float=softfp, set the default CPU to arm10e.
1897
1898 2017-12-20  Eric Botcazou  <ebotcazou@adacore.com>
1899
1900         * config/visium/constraints.md (J, K, L): Use IN_RANGE macro.
1901         * config/visium/predicates.md (const_shift_operand): Likewise.
1902         * config/visium/visium.c (visium_legitimize_address): Fix oversight.
1903         (visium_legitimize_reload_address): Likewise.
1904
1905 2017-12-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
1906
1907         PR target/82975
1908         * config/arm/arm.h (TEST_REGNO): Adjust comment as expected in r255830.
1909
1910 2017-12-20  Jakub Jelinek  <jakub@redhat.com>
1911
1912         PR c++/83490
1913         * calls.c (compute_argument_addresses): Ignore TYPE_EMPTY_P arguments.
1914
1915 2017-12-20  Julia Koval  <julia.koval@intel.com>
1916
1917         * common/config/i386/i386-common.c (OPTION_MASK_ISA_VPCLMULQDQ_SET,
1918         OPTION_MASK_ISA_VPCLMULQDQ_UNSET): New.
1919         (ix86_handle_option): Handle -mvpclmulqdq, move cx6 to flags2.
1920         * config.gcc: Include vpclmulqdqintrin.h.
1921         * config/i386/cpuid.h: Handle bit_VPCLMULQDQ.
1922         * config/i386/driver-i386.c (host_detect_local_cpu): Handle
1923         -mvpclmulqdq.
1924         * config/i386/i386-builtin.def (__builtin_ia32_vpclmulqdq_v2di,
1925         __builtin_ia32_vpclmulqdq_v4di, __builtin_ia32_vpclmulqdq_v8di): New.
1926         * config/i386/i386-c.c (__VPCLMULQDQ__): New.
1927         * config/i386/i386.c (isa2_opts): Add -mcx16.
1928         (isa_opts): Add -mpclmulqdq, remove -mcx16.
1929         (ix86_option_override_internal): Move mcx16 to flags2.
1930         (ix86_valid_target_attribute_inner_p): Add vpclmulqdq.
1931         (ix86_expand_builtin): Handle OPTION_MASK_ISA_VPCLMULQDQ.
1932         * config/i386/i386.h (TARGET_VPCLMULQDQ, TARGET_VPCLMULQDQ_P): New.
1933         * config/i386/i386.opt: Add mvpclmulqdq, move mcx16 to flags2.
1934         * config/i386/immintrin.h: Include vpclmulqdqintrin.h.
1935         * config/i386/sse.md (vpclmulqdq_<mode>): New pattern.
1936         * config/i386/vpclmulqdqintrin.h (_mm512_clmulepi64_epi128,
1937         _mm_clmulepi64_epi128, _mm256_clmulepi64_epi128): New intrinsics.
1938         * doc/invoke.texi: Add -mvpclmulqdq.
1939
1940 2017-12-20  Tom de Vries  <tom@codesourcery.com>
1941
1942         PR middle-end/83423
1943         * config/i386/i386.c (ix86_static_chain): Move
1944         DECL_STATIC_CHAIN test ...
1945         * calls.c (rtx_for_static_chain): ... here.  New function.
1946         * calls.h (rtx_for_static_chain): Declare.
1947         * builtins.c (expand_builtin_setjmp_receiver): Use rtx_for_static_chain
1948         instead of targetm.calls.static_chain.
1949         * df-scan.c (df_get_entry_block_def_set): Same.
1950
1951 2017-12-19  Tom de Vries  <tom@codesourcery.com>
1952
1953         PR tree-optimization/83493
1954         * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for): Unshare ub
1955         and lb.
1956
1957 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1958
1959         * gimple-ssa-sprintf.c (format_directive): Use inform_n instead of
1960         inform with hardcoded english plural handling.
1961
1962 2017-12-18  Jeff Law  <law@redhat.com>
1963
1964         PR tree-optimization/83477
1965         * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): For
1966         a non-virtual PHI, always push a new range.
1967
1968 2017-12-19  Martin Sebor  <msebor@redhat.com>
1969
1970         PR middle-end/77608
1971         * builtins.c (compute_objsize): Handle non-constant offsets.
1972
1973 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1974
1975         PR tree-optimization/83444
1976         * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): For the
1977         character load case, if get_stridx on MEM_REF's operand doesn't
1978         look usable, retry with get_addr_stridx.
1979
1980 2017-12-19  Alexandre Oliva  <aoliva@redhat.com>
1981
1982         PR debug/83422
1983         * var-tracking.c (vt_debug_insns_local): Do not drop markers.
1984         (variable_tracking_main_1): Keep markers even when VTA fails.
1985
1986         PR bootstrap/83396
1987         * cfgexpand.c (expand_gimple_basic_block): Expand label first,
1988         even if there are markers before it.
1989         * cfgrtl.c (rtl_verify_bb_layout): Reject DEBUG_INSNs outside BBs.
1990
1991 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
1992
1993         * read-rtl.c (parse_reg_note_name): Replace Yoda conditions with
1994         typical order conditions.
1995         * sel-sched.c (extract_new_fences_from): Likewise.
1996         * config/visium/constraints.md (J, K, L): Likewise.
1997         * config/visium/predicates.md (const_shift_operand): Likewise.
1998         * config/visium/visium.c (visium_legitimize_address,
1999         visium_legitimize_reload_address): Likewise.
2000         * config/m68k/m68k.c (output_reg_adjust, emit_reg_adjust): Likewise.
2001         * config/arm/arm.c (arm_block_move_unaligned_straight): Likewise.
2002         * config/avr/constraints.md (Y01, Ym1, Y02, Ym2): Likewise.
2003         * config/avr/avr-log.c (avr_vdump, avr_log_set_avr_log,
2004         SET_DUMP_DETAIL): Likewise.
2005         * config/avr/predicates.md (const_8_16_24_operand): Likewise.
2006         * config/avr/avr.c (STR_PREFIX_P, avr_popcount_each_byte,
2007         avr_is_casesi_sequence, avr_casei_sequence_check_operands,
2008         avr_set_core_architecture, avr_set_current_function,
2009         avr_legitimize_reload_address, avr_asm_len, avr_print_operand,
2010         output_movqi, output_movsisf, avr_out_plus, avr_out_bitop,
2011         avr_out_fract, avr_adjust_insn_length, avr_encode_section_info,
2012         avr_2word_insn_p, output_reload_in_const, avr_has_nibble_0xf,
2013         avr_map_decompose, avr_fold_builtin): Likewise.
2014         * config/avr/driver-avr.c (avr_devicespecs_file): Likewise.
2015         * config/avr/gen-avr-mmcu-specs.c (str_prefix_p, print_mcu): Likewise.
2016         * config/i386/i386.c (ix86_parse_stringop_strategy_string): Likewise.
2017         * config/m32c/m32c-pragma.c (m32c_pragma_memregs): Likewise.
2018         * config/m32c/m32c.c (m32c_conditional_register_usage,
2019         m32c_address_cost): Likewise.
2020         * config/m32c/predicates.md (shiftcount_operand,
2021         longshiftcount_operand): Likewise.
2022         * config/iq2000/iq2000.c (iq2000_expand_prologue): Likewise.
2023         * config/nios2/nios2.c (nios2_handle_custom_fpu_insn_option,
2024         can_use_cdx_ldstw): Likewise.
2025         * config/nios2/nios2.h (CDX_REG_P): Likewise.
2026         * config/cr16/cr16.h (RETURN_ADDR_RTX, REGNO_MODE_OK_FOR_BASE_P):
2027         Likewise.
2028         * config/cr16/cr16.md (*mov<mode>_double): Likewise.
2029         * config/cr16/cr16.c (cr16_create_dwarf_for_multi_push): Likewise.
2030         * config/h8300/h8300.c (h8300_rtx_costs, get_shift_alg): Likewise.
2031         * config/vax/constraints.md (U06, U08, U16, CN6, S08, S16): Likewise.
2032         * config/vax/vax.c (adjacent_operands_p): Likewise.
2033         * config/ft32/constraints.md (L, b, KA): Likewise.
2034         * config/ft32/ft32.c (ft32_load_immediate, ft32_expand_prologue):
2035         Likewise.
2036         * cfgexpand.c (expand_stack_alignment): Likewise.
2037         * gcse.c (insert_expr_in_table): Likewise.
2038         * print-rtl.c (rtx_writer::print_rtx_operand_codes_E_and_V): Likewise.
2039         * cgraphunit.c (cgraph_node::expand): Likewise.
2040         * ira-build.c (setup_min_max_allocno_live_range_point): Likewise.
2041         * emit-rtl.c (add_insn): Likewise.
2042         * input.c (dump_location_info): Likewise.
2043         * passes.c (NEXT_PASS): Likewise.
2044         * read-rtl-function.c (parse_note_insn_name,
2045         function_reader::read_rtx_operand_r, function_reader::parse_mem_expr):
2046         Likewise.
2047         * sched-rgn.c (sched_rgn_init): Likewise.
2048         * diagnostic-show-locus.c (layout::show_ruler): Likewise.
2049         * combine.c (find_split_point, simplify_if_then_else, force_to_mode,
2050         if_then_else_cond, simplify_shift_const_1, simplify_comparison):
2051         Likewise.
2052         * explow.c (eliminate_constant_term): Likewise.
2053         * final.c (leaf_renumber_regs_insn): Likewise.
2054         * cfgrtl.c (print_rtl_with_bb): Likewise.
2055         * genhooks.c (emit_init_macros): Likewise.
2056         * poly-int.h (maybe_ne, maybe_le, maybe_lt): Likewise.
2057         * tree-data-ref.c (conflict_fn): Likewise.
2058         * selftest.c (assert_streq): Likewise.
2059         * expr.c (store_constructor_field, expand_expr_real_1): Likewise.
2060         * fold-const.c (fold_range_test, extract_muldiv_1, fold_truth_andor,
2061         fold_binary_loc, multiple_of_p): Likewise.
2062         * reload.c (push_reload, find_equiv_reg): Likewise.
2063         * et-forest.c (et_nca, et_below): Likewise.
2064         * dbxout.c (dbxout_symbol_location): Likewise.
2065         * reorg.c (relax_delay_slots): Likewise.
2066         * dojump.c (do_compare_rtx_and_jump): Likewise.
2067         * gengtype-parse.c (type): Likewise.
2068         * simplify-rtx.c (simplify_gen_ternary, simplify_gen_relational,
2069         simplify_const_relational_operation): Likewise.
2070         * reload1.c (do_output_reload): Likewise.
2071         * dumpfile.c (get_dump_file_info_by_switch): Likewise.
2072         * gengtype.c (type_for_name): Likewise.
2073         * gimple-ssa-sprintf.c (format_directive): Likewise.
2074
2075 2017-12-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2076
2077         PR target/82975
2078         * config/arm/arm.h (TEST_REGNO): Check reg_renumber is set before
2079         accessing it.  Adjust comment.
2080
2081 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
2082
2083         PR middle-end/81914
2084         * predict.c (zero_one_minusone): New function.
2085         (apply_return_prediction): Avoid return prediction for functions
2086         returning only -1, 0 and 1 values, unless they only return -1 and 0
2087         or 0 and 1.
2088
2089 2017-12-19  Claudiu Zissulescu  <claziss@synopsys.com>
2090
2091         * config/arc/arc.c (legitimate_scaled_address_p): Clean
2092         fall-through warning.
2093         (arc_compute_frame_size): Remove unused variables.
2094         (arc_print_operand): Fix fprintif format.
2095         (arc_can_follow_jump): Clean fall-through warning.
2096
2097 2017-12-19  Marek Polacek  <polacek@redhat.com>
2098
2099         PR c++/83489
2100         * config/i386/i386.c (init_cumulative_args): Don't check TYPE_EMPTY_P
2101         on an error node.
2102
2103 2017-12-19  Claudiu Zissulescu  <claziss@synopsys.com>
2104
2105         * config/arc/arc.c (overriderregs): New variable.
2106         (arc_override_options): Track fixed/call saved/call options.
2107         (arc_conditional_register_usage): Check against overrideregs
2108         variable whenever we change register properties.
2109
2110 2017-12-19  Nathan Sidwell  <nathan@acm.org>
2111
2112         * opts.c (finish_options): Don't prefix dump_base_name if it
2113         already contains directories.
2114
2115 2017-12-19  Martin Liska  <mliska@suse.cz>
2116
2117         PR rtl-optimization/82675
2118         * loop-unroll.c (unroll_loop_constant_iterations): Allocate one
2119         more element in sbitmap.
2120
2121 2017-12-19  Paolo Carlini  <paolo.carlini@oracle.com>
2122
2123         * gimplify.c (gimplify_expr): Use error_operand_p.
2124
2125 2017-12-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
2126
2127         PR target/83387
2128         * config/rs6000/t-rtems (MULTILIB_REQUIRED): Remove 64-bit soft-float
2129         multilib.
2130
2131 2017-12-19  Daniel Cederman  <cederman@gaisler.com>
2132
2133         * config/sparc/sparc.c (sparc_do_work_around_errata): Make sure
2134         the jump is to a label.
2135
2136 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
2137
2138         PR tree-optimization/83444
2139         * tree-ssa-strlen.c (strlen_check_and_optimize_stmt): Optimize
2140         character loads.
2141
2142         PR ipa/82801
2143         PR ipa/83346
2144         * ipa-inline.c (flatten_remove_node_hook): New function.
2145         (ipa_inline): Keep only nodes with flatten attribute at the end of
2146         the array in the order from ipa_reverse_postorder, only walk that
2147         portion of array for flattening, if there is more than one such
2148         node, temporarily register a removal hook and ignore removed nodes.
2149
2150         PR tree-optimization/80631
2151         * tree-vect-loop.c (vect_create_epilog_for_reduction): Compare
2152         induc_code against MAX_EXPR or MIN_EXPR instead of reduc_fn against
2153         IFN_REDUC_MAX or IFN_REDUC_MIN.
2154
2155 2017-12-18  Jeff Law  <law@redhat.com>
2156
2157         * tree-ssa-dom.c (record_equivalences_from_phis): Do not
2158         record symbolic equivalences from backedges in the CFG.
2159
2160         Revert
2161         2017-11-19  Jeff Law  <law@redhat.com>
2162
2163         * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
2164         of degenerates resulting from ignoring an edge.
2165
2166 2017-12-18  Martin Sebor  <msebor@redhat.com>
2167
2168         PR middle-end/83373
2169         PR tree-optimization/78450
2170         * tree-ssa-strlen.c (maybe_set_strlen_range): New function.
2171         (handle_builtin_strlen): Call it.
2172
2173 2017-12-18  Segher Boessenkool  <segher@kernel.crashing.org>
2174
2175         PR rtl-optimization/83424
2176         * rtlanal.c (dead_or_set_regno_p): Handle CLOBBER just like SET.
2177
2178 2017-12-18  Marek Polacek  <polacek@redhat.com>
2179
2180         PR middle-end/83463
2181         * gimple-ssa-warn-restrict.c (builtin_memref::builtin_memref):
2182         Check if TYPE is INTEGRAL_TYPE_P before accessing its min/max
2183         values.
2184
2185 2017-12-18  Claudiu Zissulescu  <claziss@synopsys.com>
2186
2187         * config/arc/arc.md (maddsidi4, maddsidi4_split): Update pattern.
2188         (umaddsidi4, umaddsidi_split): Likewise.
2189
2190 2017-12-18  Claudiu Zissulescu  <claziss@synopsys.com>
2191
2192         * config/arc/arc.c (arc_legitimate_constant_p): Always check all
2193         constants.
2194
2195 2017-12-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
2196
2197         PR target/83420
2198         * config/s390/s390.c (s390_option_override): Avoid strncpy.
2199
2200 2017-12-18  Richard Biener  <rguenther@suse.de>
2201
2202         PR tree-optimization/81877
2203         * tree-ssa-loop-im.c (ref_indep_loop_p): Remove safelen parameters.
2204         (outermost_indep_loop): Adjust.
2205         (ref_indep_loop_p_1): Likewise.  Remove safelen handling again.
2206         (can_sm_ref_p): Adjust.
2207
2208 2017-12-18  Richard Biener  <rguenther@suse.de>
2209
2210         PR middle-end/77291
2211         * tree.c (array_at_struct_end_p): Return true if the underlying
2212         object has space for at least one element in excess of what
2213         the array domain specifies.
2214
2215 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
2216
2217         * doc/extend.texi (x86 Function Attributes): Reformat nocf_check
2218         example to avoid overfull hbox.
2219         * doc/invoke.texi (Option Summary): Add missing @gol.
2220         (C++ Dialect Options): Reformat -Wnoexcept-type example to avoid
2221         overfull hbox.
2222
2223 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
2224             Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2225
2226         * doc/invoke.texi (Option Summary): Add -mverbose-cost-dump
2227         to AArch64 and ARM lists, plus missing -mflip-thumb for ARM.
2228         (AArch64 Options): Document -mverbose-cost-dump.
2229         (ARM Options): Likewise, plus -mflip-thumb.
2230
2231 2017-12-17  Martin Sebor  <msebor@redhat.com>
2232
2233         PR bootstrap/83446
2234         * gimple-ssa-warn-restrict.c
2235         (builtin_memref::offset_out_of_bounds): Correct the handling of
2236         anti-ranges.
2237
2238 2017-12-17  Sandra Loosemore  <sandra@codesourcery.com>
2239
2240         * doc/invoke.texi (ARC Options): Add missing -mlra entry.
2241
2242 2017-12-17  John David Anglin  <danglin@gcc.gnu.org>
2243
2244         * config/pa/pa.c (pa_som_asm_init_sections): Fix comment.
2245
2246 2017-12-17  Markus Trippelsdorf  <markus@trippelsdorf.de>
2247
2248         * x86-tune-costs.h (skylake_cost, core_cost): Decrease r64 multiply
2249         latencies.
2250
2251 2017-12-16  Sandra Loosemore  <sandra@codesourcery.com>
2252
2253         * doc/invoke.texi: Fix some typos.
2254
2255 2017-12-16  Martin Sebor  <msebor@redhat.com>
2256
2257         PR tree-optimization/78918
2258         * Makefile.in (OBJS): Add gimple-ssa-warn-restrict.o.
2259         * builtins.c (check_sizes): Rename...
2260         (check_access): ...to this.  Rename function arguments for clarity.
2261         (check_memop_sizes): Adjust names.
2262         (expand_builtin_memchr, expand_builtin_memcpy): Same.
2263         (expand_builtin_memmove, expand_builtin_mempcpy): Same.
2264         (expand_builtin_strcat, expand_builtin_stpncpy): Same.
2265         (check_strncat_sizes, expand_builtin_strncat): Same.
2266         (expand_builtin_strncpy, expand_builtin_memset): Same.
2267         (expand_builtin_bzero, expand_builtin_memcmp): Same.
2268         (expand_builtin_memory_chk, maybe_emit_chk_warning): Same.
2269         (maybe_emit_sprintf_chk_warning): Same.
2270         (expand_builtin_strcpy): Adjust.
2271         (expand_builtin_stpcpy): Same.
2272         (expand_builtin_with_bounds): Detect out-of-bounds accesses
2273         in pointer-checking forms of memcpy, memmove, and mempcpy.
2274         (gcall_to_tree_minimal, max_object_size): Define new functions.
2275         * builtins.h (max_object_size): Declare.
2276         * calls.c (alloc_max_size): Call max_object_size instead of
2277         hardcoding ssizetype limit.
2278         (get_size_range): Handle new argument.
2279         * calls.h (get_size_range): Add a new argument.
2280         * cfgexpand.c (expand_call_stmt): Propagate no-warning bit.
2281         * doc/invoke.texi (-Wrestrict): Adjust, add example.
2282         * gimple-fold.c (gimple_fold_builtin_memory_op): Detect overlapping
2283         operations.
2284         (gimple_fold_builtin_memory_chk): Same.
2285         (gimple_fold_builtin_stxcpy_chk): New function.
2286         * gimple-ssa-warn-restrict.c: New source.
2287         * gimple-ssa-warn-restrict.h: New header.
2288         * gimple.c (gimple_build_call_from_tree): Propagate location.
2289         * passes.def (pass_warn_restrict): Add new pass.
2290         * tree-pass.h (make_pass_warn_restrict): Declare.
2291         * tree-ssa-strlen.c (handle_builtin_strcpy): Detect overlapping
2292         operations.
2293         (handle_builtin_strcat): Same.
2294         (strlen_optimize_stmt): Rename...
2295         (strlen_check_and_optimize_stmt): ...to this.  Handle strncat,
2296         stpncpy, strncpy, and their checking forms.
2297
2298 2017-12-16  Jan Hubicka  <hubicka@ucw.cz>
2299
2300         PR rtl-optimization/82849
2301         * modulo-sched.c (sms_schedule): Use get_estimated_loop_iterations_int
2302         and get_max_loop_iterations_int.
2303
2304 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2305             Alan Hayward  <alan.hayward@arm.com>
2306             David Sherwood  <david.sherwood@arm.com>
2307
2308         * machmode.h (mode_for_size, int_mode_for_size, float_mode_for_size)
2309         (smallest_mode_for_size, smallest_int_mode_for_size): Take the mode
2310         size as a poly_uint64.
2311         (mode_for_vector, mode_for_int_vector): Take the number of vector
2312         elements as a poly_uint64.
2313         * stor-layout.c (mode_for_size, smallest_mode_for_size): Take the mode
2314         size as a poly_uint64.
2315         (mode_for_vector, mode_for_int_vector): Take the number of vector
2316         elements as a poly_uint64.
2317
2318 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2319             Alan Hayward  <alan.hayward@arm.com>
2320             David Sherwood  <david.sherwood@arm.com>
2321
2322         * machmode.h (MACRO_MODE): New macro.
2323         * addresses.h (base_reg_class, ok_for_base_p_1): Use it.
2324         * targhooks.c (default_libcall_value, default_secondary_reload)
2325         (default_memory_move_cost, default_register_move_cost)
2326         (default_class_max_nregs): Likewise.
2327
2328 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2329             Alan Hayward  <alan.hayward@arm.com>
2330             David Sherwood  <david.sherwood@arm.com>
2331
2332         * doc/sourcebuild.texi: Document IN_TARGET_CODE.
2333         * genattrtab.c (write_header): Define IN_TARGET_CODE to 1 in the
2334         target C file.
2335         * genautomata.c (main): Likewise.
2336         * genconditions.c (write_header): Likewise.
2337         * genemit.c (main): Likewise.
2338         * genextract.c (print_header): Likewise.
2339         * genopinit.c (main): Likewise.
2340         * genoutput.c (output_prologue): Likewise.
2341         * genpeep.c (main): Likewise.
2342         * genpreds.c (write_insn_preds_c): Likewise.
2343         * genrecog.c (writer_header): Likewise.
2344         * config/aarch64/aarch64-builtins.c (IN_TARGET_CODE): Define.
2345         * config/aarch64/aarch64-c.c (IN_TARGET_CODE): Likewise.
2346         * config/aarch64/aarch64.c (IN_TARGET_CODE): Likewise.
2347         * config/aarch64/cortex-a57-fma-steering.c (IN_TARGET_CODE): Likewise.
2348         * config/aarch64/driver-aarch64.c (IN_TARGET_CODE): Likewise.
2349         * config/alpha/alpha.c (IN_TARGET_CODE): Likewise.
2350         * config/alpha/driver-alpha.c (IN_TARGET_CODE): Likewise.
2351         * config/arc/arc-c.c (IN_TARGET_CODE): Likewise.
2352         * config/arc/arc.c (IN_TARGET_CODE): Likewise.
2353         * config/arc/driver-arc.c (IN_TARGET_CODE): Likewise.
2354         * config/arm/aarch-common.c (IN_TARGET_CODE): Likewise.
2355         * config/arm/arm-builtins.c (IN_TARGET_CODE): Likewise.
2356         * config/arm/arm-c.c (IN_TARGET_CODE): Likewise.
2357         * config/arm/arm.c (IN_TARGET_CODE): Likewise.
2358         * config/arm/driver-arm.c (IN_TARGET_CODE): Likewise.
2359         * config/avr/avr-c.c (IN_TARGET_CODE): Likewise.
2360         * config/avr/avr-devices.c (IN_TARGET_CODE): Likewise.
2361         * config/avr/avr-log.c (IN_TARGET_CODE): Likewise.
2362         * config/avr/avr.c (IN_TARGET_CODE): Likewise.
2363         * config/avr/driver-avr.c (IN_TARGET_CODE): Likewise.
2364         * config/avr/gen-avr-mmcu-specs.c (IN_TARGET_CODE): Likewise.
2365         * config/bfin/bfin.c (IN_TARGET_CODE): Likewise.
2366         * config/c6x/c6x.c (IN_TARGET_CODE): Likewise.
2367         * config/cr16/cr16.c (IN_TARGET_CODE): Likewise.
2368         * config/cris/cris.c (IN_TARGET_CODE): Likewise.
2369         * config/darwin.c (IN_TARGET_CODE): Likewise.
2370         * config/epiphany/epiphany.c (IN_TARGET_CODE): Likewise.
2371         * config/epiphany/mode-switch-use.c (IN_TARGET_CODE): Likewise.
2372         * config/epiphany/resolve-sw-modes.c (IN_TARGET_CODE): Likewise.
2373         * config/fr30/fr30.c (IN_TARGET_CODE): Likewise.
2374         * config/frv/frv.c (IN_TARGET_CODE): Likewise.
2375         * config/ft32/ft32.c (IN_TARGET_CODE): Likewise.
2376         * config/h8300/h8300.c (IN_TARGET_CODE): Likewise.
2377         * config/i386/djgpp.c (IN_TARGET_CODE): Likewise.
2378         * config/i386/driver-i386.c (IN_TARGET_CODE): Likewise.
2379         * config/i386/driver-mingw32.c (IN_TARGET_CODE): Likewise.
2380         * config/i386/host-cygwin.c (IN_TARGET_CODE): Likewise.
2381         * config/i386/host-i386-darwin.c (IN_TARGET_CODE): Likewise.
2382         * config/i386/host-mingw32.c (IN_TARGET_CODE): Likewise.
2383         * config/i386/i386-c.c (IN_TARGET_CODE): Likewise.
2384         * config/i386/i386.c (IN_TARGET_CODE): Likewise.
2385         * config/i386/intelmic-mkoffload.c (IN_TARGET_CODE): Likewise.
2386         * config/i386/msformat-c.c (IN_TARGET_CODE): Likewise.
2387         * config/i386/winnt-cxx.c (IN_TARGET_CODE): Likewise.
2388         * config/i386/winnt-stubs.c (IN_TARGET_CODE): Likewise.
2389         * config/i386/winnt.c (IN_TARGET_CODE): Likewise.
2390         * config/i386/x86-tune-sched-atom.c (IN_TARGET_CODE): Likewise.
2391         * config/i386/x86-tune-sched-bd.c (IN_TARGET_CODE): Likewise.
2392         * config/i386/x86-tune-sched-core.c (IN_TARGET_CODE): Likewise.
2393         * config/i386/x86-tune-sched.c (IN_TARGET_CODE): Likewise.
2394         * config/ia64/ia64-c.c (IN_TARGET_CODE): Likewise.
2395         * config/ia64/ia64.c (IN_TARGET_CODE): Likewise.
2396         * config/iq2000/iq2000.c (IN_TARGET_CODE): Likewise.
2397         * config/lm32/lm32.c (IN_TARGET_CODE): Likewise.
2398         * config/m32c/m32c-pragma.c (IN_TARGET_CODE): Likewise.
2399         * config/m32c/m32c.c (IN_TARGET_CODE): Likewise.
2400         * config/m32r/m32r.c (IN_TARGET_CODE): Likewise.
2401         * config/m68k/m68k.c (IN_TARGET_CODE): Likewise.
2402         * config/mcore/mcore.c (IN_TARGET_CODE): Likewise.
2403         * config/microblaze/microblaze-c.c (IN_TARGET_CODE): Likewise.
2404         * config/microblaze/microblaze.c (IN_TARGET_CODE): Likewise.
2405         * config/mips/driver-native.c (IN_TARGET_CODE): Likewise.
2406         * config/mips/frame-header-opt.c (IN_TARGET_CODE): Likewise.
2407         * config/mips/mips.c (IN_TARGET_CODE): Likewise.
2408         * config/mmix/mmix.c (IN_TARGET_CODE): Likewise.
2409         * config/mn10300/mn10300.c (IN_TARGET_CODE): Likewise.
2410         * config/moxie/moxie.c (IN_TARGET_CODE): Likewise.
2411         * config/msp430/driver-msp430.c (IN_TARGET_CODE): Likewise.
2412         * config/msp430/msp430-c.c (IN_TARGET_CODE): Likewise.
2413         * config/msp430/msp430.c (IN_TARGET_CODE): Likewise.
2414         * config/nds32/nds32-cost.c (IN_TARGET_CODE): Likewise.
2415         * config/nds32/nds32-fp-as-gp.c (IN_TARGET_CODE): Likewise.
2416         * config/nds32/nds32-intrinsic.c (IN_TARGET_CODE): Likewise.
2417         * config/nds32/nds32-isr.c (IN_TARGET_CODE): Likewise.
2418         * config/nds32/nds32-md-auxiliary.c (IN_TARGET_CODE): Likewise.
2419         * config/nds32/nds32-memory-manipulation.c (IN_TARGET_CODE): Likewise.
2420         * config/nds32/nds32-pipelines-auxiliary.c (IN_TARGET_CODE): Likewise.
2421         * config/nds32/nds32-predicates.c (IN_TARGET_CODE): Likewise.
2422         * config/nds32/nds32.c (IN_TARGET_CODE): Likewise.
2423         * config/nios2/nios2.c (IN_TARGET_CODE): Likewise.
2424         * config/nvptx/mkoffload.c (IN_TARGET_CODE): Likewise.
2425         * config/nvptx/nvptx.c (IN_TARGET_CODE): Likewise.
2426         * config/pa/pa.c (IN_TARGET_CODE): Likewise.
2427         * config/pdp11/pdp11.c (IN_TARGET_CODE): Likewise.
2428         * config/powerpcspe/driver-powerpcspe.c (IN_TARGET_CODE): Likewise.
2429         * config/powerpcspe/host-darwin.c (IN_TARGET_CODE): Likewise.
2430         * config/powerpcspe/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
2431         * config/powerpcspe/powerpcspe-c.c (IN_TARGET_CODE): Likewise.
2432         * config/powerpcspe/powerpcspe-linux.c (IN_TARGET_CODE): Likewise.
2433         * config/powerpcspe/powerpcspe.c (IN_TARGET_CODE): Likewise.
2434         * config/riscv/riscv-builtins.c (IN_TARGET_CODE): Likewise.
2435         * config/riscv/riscv-c.c (IN_TARGET_CODE): Likewise.
2436         * config/riscv/riscv.c (IN_TARGET_CODE): Likewise.
2437         * config/rl78/rl78-c.c (IN_TARGET_CODE): Likewise.
2438         * config/rl78/rl78.c (IN_TARGET_CODE): Likewise.
2439         * config/rs6000/driver-rs6000.c (IN_TARGET_CODE): Likewise.
2440         * config/rs6000/host-darwin.c (IN_TARGET_CODE): Likewise.
2441         * config/rs6000/host-ppc64-darwin.c (IN_TARGET_CODE): Likewise.
2442         * config/rs6000/rs6000-c.c (IN_TARGET_CODE): Likewise.
2443         * config/rs6000/rs6000-linux.c (IN_TARGET_CODE): Likewise.
2444         * config/rs6000/rs6000-p8swap.c (IN_TARGET_CODE): Likewise.
2445         * config/rs6000/rs6000-string.c (IN_TARGET_CODE): Likewise.
2446         * config/rs6000/rs6000.c (IN_TARGET_CODE): Likewise.
2447         * config/rx/rx.c (IN_TARGET_CODE): Likewise.
2448         * config/s390/driver-native.c (IN_TARGET_CODE): Likewise.
2449         * config/s390/s390-c.c (IN_TARGET_CODE): Likewise.
2450         * config/s390/s390.c (IN_TARGET_CODE): Likewise.
2451         * config/sh/sh-c.c (IN_TARGET_CODE): Likewise.
2452         * config/sh/sh-mem.cc (IN_TARGET_CODE): Likewise.
2453         * config/sh/sh.c (IN_TARGET_CODE): Likewise.
2454         * config/sh/sh_optimize_sett_clrt.cc (IN_TARGET_CODE): Likewise.
2455         * config/sh/sh_treg_combine.cc (IN_TARGET_CODE): Likewise.
2456         * config/sparc/driver-sparc.c (IN_TARGET_CODE): Likewise.
2457         * config/sparc/sparc-c.c (IN_TARGET_CODE): Likewise.
2458         * config/sparc/sparc.c (IN_TARGET_CODE): Likewise.
2459         * config/spu/spu-c.c (IN_TARGET_CODE): Likewise.
2460         * config/spu/spu.c (IN_TARGET_CODE): Likewise.
2461         * config/stormy16/stormy16.c (IN_TARGET_CODE): Likewise.
2462         * config/tilegx/mul-tables.c (IN_TARGET_CODE): Likewise.
2463         * config/tilegx/tilegx-c.c (IN_TARGET_CODE): Likewise.
2464         * config/tilegx/tilegx.c (IN_TARGET_CODE): Likewise.
2465         * config/tilepro/mul-tables.c (IN_TARGET_CODE): Likewise.
2466         * config/tilepro/tilepro-c.c (IN_TARGET_CODE): Likewise.
2467         * config/tilepro/tilepro.c (IN_TARGET_CODE): Likewise.
2468         * config/v850/v850-c.c (IN_TARGET_CODE): Likewise.
2469         * config/v850/v850.c (IN_TARGET_CODE): Likewise.
2470         * config/vax/vax.c (IN_TARGET_CODE): Likewise.
2471         * config/visium/visium.c (IN_TARGET_CODE): Likewise.
2472         * config/vms/vms-c.c (IN_TARGET_CODE): Likewise.
2473         * config/vms/vms-f.c (IN_TARGET_CODE): Likewise.
2474         * config/vms/vms.c (IN_TARGET_CODE): Likewise.
2475         * config/xtensa/xtensa.c (IN_TARGET_CODE): Likewise.
2476
2477 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2478             Alan Hayward  <alan.hayward@arm.com>
2479             David Sherwood  <david.sherwood@arm.com>
2480
2481         * tree-ssa-sccvn.c (vn_reference_lookup_3): Avoid repeated
2482         checks for MEM_REF.
2483
2484 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2485             Alan Hayward  <alan.hayward@arm.com>
2486             David Sherwood  <david.sherwood@arm.com>
2487
2488         * doc/generic.texi (VEC_SERIES_EXPR): Document.
2489         * doc/md.texi (vec_series@var{m}): Document.
2490         * tree.def (VEC_SERIES_EXPR): New tree code.
2491         * tree.h (build_vec_series): Declare.
2492         * tree.c (build_vec_series): New function.
2493         * cfgexpand.c (expand_debug_expr): Handle VEC_SERIES_EXPR.
2494         * tree-pretty-print.c (dump_generic_node): Likewise.
2495         * gimple-pretty-print.c (dump_binary_rhs): Likewise.
2496         * tree-inline.c (estimate_operator_cost): Likewise.
2497         * expr.c (expand_expr_real_2): Likewise.
2498         * optabs-tree.c (optab_for_tree_code): Likewise.
2499         * tree-cfg.c (verify_gimple_assign_binary): Likewise.
2500         * fold-const.c (const_binop): Fold VEC_SERIES_EXPRs of constants.
2501         * expmed.c (make_tree): Handle VEC_SERIES.
2502         * optabs.def (vec_series_optab): New optab.
2503         * optabs.h (expand_vec_series_expr): Declare.
2504         * optabs.c (expand_vec_series_expr): New function.
2505         * tree-vect-generic.c (expand_vector_operations_1): Check that
2506         the operands also have vector type.
2507
2508 2017-12-16  Richard Sandiford  <richard.sandiford@linaro.org>
2509             Alan Hayward  <alan.hawyard@arm.com>
2510             David Sherwood  <david.sherwood@arm.com>
2511
2512         * doc/generic.texi (VEC_DUPLICATE_EXPR): Document.
2513         (VEC_COND_EXPR): Add missing @tindex.
2514         * doc/md.texi (vec_duplicate@var{m}): Document.
2515         * tree.def (VEC_DUPLICATE_EXPR): New tree codes.
2516         * tree.c (build_vector_from_val): Add stubbed-out handling of
2517         variable-length vectors, using VEC_DUPLICATE_EXPR.
2518         (uniform_vector_p): Handle VEC_DUPLICATE_EXPR.
2519         * cfgexpand.c (expand_debug_expr): Likewise.
2520         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
2521         * tree-inline.c (estimate_operator_cost): Likewise.
2522         * tree-pretty-print.c (dump_generic_node): Likewise.
2523         * tree-vect-generic.c (ssa_uniform_vector_p): Likewise.
2524         * fold-const.c (const_unop): Fold VEC_DUPLICATE_EXPRs of a constant.
2525         (test_vec_duplicate_folding): New function.
2526         (fold_const_c_tests): Call it.
2527         * optabs.def (vec_duplicate_optab): New optab.
2528         * optabs-tree.c (optab_for_tree_code): Handle VEC_DUPLICATE_EXPR.
2529         * optabs.h (expand_vector_broadcast): Declare.
2530         * optabs.c (expand_vector_broadcast): Make non-static.  Try using
2531         vec_duplicate_optab.
2532         * expr.c (store_constructor): Try using vec_duplicate_optab for
2533         uniform vectors.
2534         (expand_expr_real_2): Handle VEC_DUPLICATE_EXPR.
2535
2536 2017-12-15  Markus Trippelsdorf  <markus@trippelsdorf.de>
2537
2538         PR target/83358
2539         * config/i386/x86-tune-costs.h (skylake_cost, core_cost): Increase
2540         div/mod latencies a bit.
2541
2542 2017-12-15  Jeff Law  <law@redhat.com>
2543
2544         PR tree-optimization/36550
2545         * tree-ssa-threadupdate.c (count_stmts_and_phis_in_block): New.
2546         (mark_threaded_blocks): Rewrite code to avoid block copying when
2547         optimizing for size.  Don't pessimize blocks which will be
2548         copied, but all the statements will be dead.
2549
2550 2017-12-15  Alexandre Oliva  <aoliva@redhat.com>
2551
2552         PR tree-optimization/81165
2553         * tree-ssa-threadupdate.c (uses_in_bb): New.
2554         (estimate_threading_killed_stmts): New.
2555         * tree-ssa-threadupdate.h (estimate_threading_killed_stmts): Prototype.
2556         * tree-ssa-threadedge.c
2557         (record_temporary_equivalences_from_stmts_at_dest): Expand limit
2558         when its hit.
2559
2560 2017-12-15  Jeff Law  <law@redhat.com>
2561
2562         PR tree-optimization/83410
2563         * tree-ssa-threadupdate.c (thread_block_1): Avoid certain jump
2564         threads when parallelizing loops.
2565
2566 2017-12-15  Jakub Jelinek  <jakub@redhat.com>
2567
2568         * tree-core.h (struct attribute_spec): Swap affects_type_identity and
2569         handler fields.
2570         * config/alpha/alpha.c (vms_attribute_table): Swap
2571         affects_type_identity and handler fields, adjust comments.
2572         * config/mips/mips.c (mips_attribute_table): Likewise.
2573         * config/visium/visium.c (visium_attribute_table): Likewise.
2574         * config/epiphany/epiphany.c (epiphany_attribute_table): Likewise.
2575         * config/microblaze/microblaze.c (microblaze_attribute_table):
2576         Likewise.
2577         * config/spu/spu.c (spu_attribute_table): Likewise.
2578         * config/mcore/mcore.c (mcore_attribute_table): Likewise.
2579         * config/arc/arc.c (arc_attribute_table): Likewise.
2580         * config/m68k/m68k.c (m68k_attribute_table): Likewise.
2581         * config/v850/v850.c (v850_handle_interrupt_attribute,
2582         v850_handle_data_area_attribute): Formatting fixes.
2583         (v850_attribute_table): Swap affects_type_identity and handler
2584         fields, adjust comments.
2585         * config/m32r/m32r.c (m32r_attribute_table): Likewise.
2586         * config/arm/arm.c (arm_attribute_table): Likewise.
2587         * config/avr/avr.c (avr_attribute_table): Likewise.
2588         * config/s390/s390.c (s390_attribute_table): Likewise.
2589         * config/sh/sh.c (sh_attribute_table): Likewise.
2590         * config/i386/i386.c (ix86_handle_cconv_attribute,
2591         ix86_handle_callee_pop_aggregate_return): Formatting fixes.
2592         (ix86_attribute_table): Swap affects_type_identity and handler
2593         fields, adjust comments.
2594         * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
2595         * config/sparc/sparc.c (sparc_attribute_table): Likewise.
2596         * config/m32c/m32c.c (m32c_attribute_table): Likewise.
2597         * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Likewise.
2598         * config/ia64/ia64.c (ia64_attribute_table): Likewise.
2599         * config/msp430/msp430.c (msp430_attribute_table): Likewise.
2600         * config/rx/rx.c (rx_attribute_table): Likewise.
2601         * config/cr16/cr16.c (cr16_attribute_table): Likewise.
2602         * config/h8300/h8300.c (h8300_attribute_table): Likewise.
2603         * config/nvptx/nvptx.c (nvptx_attribute_table): Likewise.
2604         * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Likewise.
2605         * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
2606         * config/stormy16/stormy16.c (xstormy16_attribute_table): Likewise.
2607         * config/bfin/bfin.c (bfin_attribute_table): Likewise.
2608         * config/rs6000/rs6000.c (rs6000_attribute_table): Likewise.
2609         * config/rl78/rl78.c (rl78_attribute_table): Likewise.
2610         * config/nds32/nds32.c (nds32_attribute_table): Likewise.
2611         * doc/plugins.texi (user_attr): Likewise.  Add NULL for
2612         exclude.
2613         * attribs.c (empty_attribute_table): Swap affects_type_identity and
2614         handler fields.
2615         (register_scoped_attributes, decl_attributes): Formatting fixes.
2616
2617         PR tree-optimization/83269
2618         * fold-const.c (fold_binary_loc): Perform (-A) - B -> (-B) - A
2619         subtraction in arg0's type if type is signed and arg0 is unsigned.
2620         Formatting fix.
2621
2622         PR sanitizer/81281
2623         * match.pd ((T)(P + A) - (T)P -> (T) A): Use @@0 instead of @0 and
2624         convert? on @0 instead of convert.  Check type of @1, not @0.
2625         ((T)P - (T)(P + A) -> -(T) A): Use @@0 instead of @0 and
2626         convert? on @0 instead of convert.  Check type of @1, not @0.
2627         ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Use @@0 instead of @0,
2628         only optimize if either both @1 and @2 types are narrower
2629         precision, or both are wider or equal precision, and in the former
2630         case only if both have undefined overflow.
2631
2632 2017-12-15  Richard Biener  <rguenther@suse.de>
2633
2634         PR lto/83388
2635         * internal-fn.def (IFN_NOP): Add.
2636         * internal-fn.c (expand_NOP): Do nothing.
2637         * lto-streamer-in.c (input_function): Instead of removing
2638         sanitizer calls replace them with IFN_NOP calls.
2639
2640 2017-12-15  Richard Sandiford  <richard.sandiford@linaro.org>
2641             Alan Hayward  <alan.hayward@arm.com>
2642             David Sherwood  <david.sherwood@arm.com>
2643
2644         * dse.c (store_info, read_info_type): Replace begin and end with
2645         offset and width.
2646         (print_range): New function.
2647         (set_all_positions_unneeded, any_positions_needed_p)
2648         (check_mem_read_rtx, scan_stores, scan_reads, dse_step5): Update
2649         accordingly.
2650         (record_store): Likewise.  Optimize the case in which all positions
2651         are unneeded.
2652         (get_stored_val): Replace read_begin and read_end with read_offset
2653         and read_width.
2654         (replace_read): Update call accordingly.
2655
2656 2017-12-15  Bin Cheng  <bin.cheng@arm.com>
2657
2658         * gimple-loop-interchange.cc (STMT_COST_RATIO): New macro.
2659         (loop_cand::m_num_stmts, loop_cand::m_const_init_reduc): New members.
2660         (loop_cand::loop_cand): Initialize above members.
2661         (loop_cand::supported_operations): Delete.
2662         (loop_cand::can_interchange_p): Inline above function.
2663         (loop_cand::classify_simple_reduction): Record number of constant
2664         initialized simple reductions.
2665         (should_interchange_loops): New parameters.  Check stmt cost of loops
2666         to be interchange.
2667         (tree_loop_interchange::interchange): Prepare stmt cost of outer loop.
2668         Update call to should_interchange_loops.
2669         (should_interchange_loop_nest): Update call to
2670         should_interchange_loops.
2671
2672 2017-12-15  Eric Botcazou  <ebotcazou@adacore.com>
2673
2674         PR target/66488
2675         * ggc-page.c (HOST_BITS_PER_PTR): Do not define here...
2676         * hwint.h (HOST_BITS_PER_PTR): ...but here instead.
2677         * config/i386/xm-mingw32.h (HOST_BITS_PER_PTR): Delete.
2678
2679 2017-12-15  Julia Koval  <julia.koval@intel.com>
2680
2681         * config/i386/i386-builtin.def (__builtin_ia32_vaesenclast_v16qi,
2682         __builtin_ia32_vaesenclast_v32qi, __builtin_ia32_vaesenclast_v64qi):
2683         New.
2684         * config/i386/sse.md (vaesenclast_<mode>): New pattern.
2685         * config/i386/vaesintrin.h (_mm256_aesenclast_epi128,
2686         _mm512_aesenclast_epi128, _mm_aesenclast_epi128): New intrinsics.
2687
2688 2017-12-15  Julia Koval  <julia.koval@intel.com>
2689
2690         * config/i386/i386-builtin.def (__builtin_ia32_vaesenc_v16qi,
2691         __builtin_ia32_vaesenc_v32qi, __builtin_ia32_vaesenc_v64qi): New.
2692         * config/i386/sse.md (vaesenc_<mode>): New pattern.
2693         * config/i386/vaesintrin.h (_mm256_aesenc_epi128, _mm512_aesenc_epi128,
2694         _mm_aesenc_epi128): New intrinsics.
2695
2696 2017-12-15  Julia Koval  <julia.koval@intel.com>
2697
2698         * config/i386/i386-builtin.def (__builtin_ia32_vaesdeclast_v16qi,
2699         __builtin_ia32_vaesdeclast_v32qi, __builtin_ia32_vaesdeclast_v64qi):
2700         New.
2701         * config/i386/sse.md (vaesdeclast_<mode>): New pattern.
2702         * config/i386/vaesintrin.h (_mm256_aesdeclast_epi128,
2703         _mm512_aesdeclast_epi128, _mm_aesdeclast_epi128): New intrinsics.
2704
2705 2017-12-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2706
2707         * gimple-ssa-strength-reduction.c (analyze_increments):
2708         Distinguish replacement costs for constant strides from those for
2709         unknown strides.
2710
2711 2017-12-14  Jakub Jelinek  <jakub@redhat.com>
2712
2713         * var-tracking.c (variable_tracking_main_1): Formatting fix.
2714
2715 2017-12-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
2716
2717         * doc/invoke.texi: Document -Wcast-function-type.
2718         * recog.h (stored_funcptr): Change signature.
2719         * tree-dump.c (dump_node): Avoid warning.
2720         * typed-splay-tree.h (typed_splay_tree): Avoid warning.
2721
2722 2017-12-14  Qing Zhao  <qing.zhao@oracle.com>
2723
2724         PR middle_end/79538
2725         * gimple-fold.c (get_range_strlen): Add the handling of non-member 
2726         array.
2727
2728 2017-12-14  David Malcolm  <dmalcolm@redhat.com>
2729
2730         PR tree-optimization/83312
2731         * domwalk.h (dom_walker::dom_walker): Fix typo in comment.
2732         * tree-cfg.c (find_taken_edge): Update to handle NULL_TREE for
2733         "val" param, and to cope with arbitrary basic blocks.
2734         (find_taken_edge_cond_expr): Add "cond_stmt" param and use it to
2735         handle NULL_TREE for "val", dropping "bb" param.
2736         (find_taken_edge_switch_expr): Make "switch_stmt" param const and
2737         drop "bb" param.  Handle NULL_TREE for "val".
2738         (find_case_label_for_value): Make "switch_stmt" param const.
2739         * tree-vrp.c (class check_array_bounds_dom_walker): New subclass
2740         of dom_walker.
2741         (vrp_prop::check_all_array_refs): Reimplement as...
2742         (check_array_bounds_dom_walker::before_dom_children): ...this new
2743         vfunc.  Replace linear search through BB block list, excluding
2744         those with non-executable in-edges via dominator walk.
2745
2746 2017-12-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2747
2748         * config/arm/arm.opt (mverbose-cost-dump): New option.
2749         * config/arm/arm.c (arm_rtx_costs): Use it.
2750
2751 2017-12-14  Andreas Schwab  <schwab@linux-m68k.org>
2752
2753         PR bootstrap/83396
2754         * reload1.c (emit_input_reload_insns): Skip debug markers.
2755
2756 2017-12-14  Alexandre Oliva  <aoliva@redhat.com>
2757
2758         * config/i386/i386.c (rest_of_insert_endbranch): Use call loc
2759         for its nop_endbr.
2760
2761         PR bootstrap/83396
2762         * config/arc/arc.c (hwloop_optimize): Skip debug insns.
2763         * config/sh/sh-protos.h (sh_find_set_of_reg): Adjust.
2764         * config/sh/sh.c: Skip debug insns besides notes.
2765         * config/sh/sh.md: Likewise.
2766         * config/sh/sh_treg_combine.cc: Likewise.
2767         * config/sh/sync.md: Likewise.
2768
2769 2017-12-14  Tom de Vries  <tom@codesourcery.com>
2770
2771         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
2772         Add item for weak_undefined.
2773
2774 2017-12-14  Richard Biener  <rguenther@suse.de>
2775
2776         PR tree-optimization/67842
2777         * sese.h (bb_in_region): Remove #if 0'ed code.
2778
2779 2017-12-14  Richard Biener  <rguenther@suse.de>
2780
2781         PR tree-optimization/83326
2782         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
2783         may_be_zero parameter and handle it by not marking the first
2784         peeled copy as not exiting the loop.
2785         (try_peel_loop): Likewise.
2786         (canonicalize_loop_induction_variables): Use number_of_iterations_exit
2787         to handle the case of constant or zero iterations and perform
2788         loop header copying on-the-fly.
2789
2790 2017-12-14  Richard Biener  <rguenther@suse.de>
2791
2792         PR tree-optimization/83418
2793         * vr-values.c (vr_values::extract_range_for_var_from_comparison_expr):
2794         Instead of asserting we don't get unfolded comparisons deal with them.
2795
2796 2017-12-14  Jakub Jelinek  <jakub@redhat.com>
2797
2798         PR bootstrap/83396
2799         * var-tracking.c (vt_initialize): Ignore non-DEBUG_INSNs outside of
2800         basic blocks.  Assert debug bind insns don't appear outside of bbs,
2801         don't reset them.  Assert insns without BLOCK_FOR_INSN are outside of
2802         bb.  Simplify.
2803
2804         PR tree-optimization/83198
2805         * gimple-ssa-sprintf.c (format_floating): Set type solely based on
2806         dir.modifier, regardless of TREE_TYPE (arg).  Assume non-REAL_CST
2807         value if arg is a REAL_CST with incompatible type.
2808
2809 2017-12-14  Sudakshina Das  <sudi.das@arm.com>
2810             Bin Cheng  <bin.cheng@arm.com>
2811
2812         PR target/81228
2813         * config/aarch64/aarch64.c (aarch64_select_cc_mode): Move LTGT
2814         to CCFPEmode.
2815         * config/aarch64/aarch64-simd.md (vec_cmp<mode><v_int_equiv>): Add
2816         LTGT.
2817
2818 2017-12-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
2819
2820         * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75,
2821         cortex-a75.cortex-a55): Specify AARCH64_FL_F16 in the arch features.
2822
2823 2017-12-14  Richard Sandiford  <richard.sandiford@linaro.org>
2824             Alan Hayward  <alan.hayward@arm.com>
2825             David Sherwood  <david.sherwood@arm.com>
2826
2827         * poly-int.h: New file.
2828         * poly-int-types.h: Likewise.
2829         * coretypes.h: Include them.
2830         (POLY_INT_CONVERSION): Define.
2831         * target.def (estimated_poly_value): New hook.
2832         * doc/tm.texi.in (TARGET_ESTIMATED_POLY_VALUE): New hook.
2833         * doc/tm.texi: Regenerate.
2834         * doc/poly-int.texi: New file.
2835         * doc/gccint.texi: Include it.
2836         * doc/rtl.texi: Describe restrictions on subreg modes.
2837         * Makefile.in (TEXI_GCCINT_FILES): Add poly-int.texi.
2838         * genmodes.c (NUM_POLY_INT_COEFFS): Provide a default definition.
2839         (emit_insn_modes_h): Emit a definition of NUM_POLY_INT_COEFFS.
2840         * targhooks.h (default_estimated_poly_value): Declare.
2841         * targhooks.c (default_estimated_poly_value): New function.
2842         * target.h (estimated_poly_value): Likewise.
2843         * wide-int.h (WI_UNARY_RESULT): Use wi::binary_traits.
2844         (wi::unary_traits): Delete.
2845         (wi::binary_traits::signed_shift_result_type): Define for
2846         offset_int << HOST_WIDE_INT, etc.
2847         (generic_wide_int::operator <<=): Define for all types and use
2848         wi::lshift instead of <<.
2849         (wi::hwi_with_prec): Add a default constructor.
2850         (wi::ints_for): New class.
2851         (operator <<): Define for all wide-int types.
2852         (operator /): New function.
2853         (operator %): Likewise.
2854         * selftest.h (ASSERT_KNOWN_EQ, ASSERT_KNOWN_EQ_AT, ASSERT_MAYBE_NE)
2855         (ASSERT_MAYBE_NE_AT): New macros.
2856
2857 2017-12-13  Eric Botcazou  <ebotcazou@adacore.com>
2858             Dominik Vogt  <vogt@linux.vnet.ibm.com>
2859
2860         PR middle-end/78468
2861         * emit-rtl.c (init_emit): Remove ??? comment.
2862         * explow.c (get_dynamic_stack_size): Take known alignment of stack
2863         pointer + STACK_DYNAMIC_OFFSET into account in lieu of STACK_BOUNDARY.
2864         * config/sparc/sparc.h (INIT_EXPANDERS): In 32-bit mode, lower the
2865         alignment of 3 virtual registers to BITS_PER_WORD.
2866
2867         * config/sparc/sparc.c (sparc_compute_frame_size): Simplify.
2868
2869 2017-12-13  Peter Bergner  <bergner@vnet.ibm.com>
2870
2871         * config/rs6000/ppc-auxv.h (PPC_FEATURE2_HTM_NO_SUSPEND): New define.
2872         * config/rs6000/rs6000.c (cpu_supports_info): Use it.
2873
2874 2017-12-13  Alexandre Oliva  <aoliva@redhat.com>
2875
2876         PR bootstrap/83396
2877         * reload1.c (eliminate_regs_in_insn): Skip debug markers.
2878
2879 2017-12-13  Jakub Jelinek  <jakub@redhat.com>
2880
2881         * tree-cfg.c (verify_gimple_in_cfg): Verify no non-label stmts
2882         with the exception of debug begin stmt markers appear before
2883         labels.
2884
2885         PR bootstrap/83396
2886         * final.c (rest_of_handle_final): Call variable_tracking_main only
2887         if !flag_var_tracking.
2888
2889 2017-12-13  Alexandre Oliva  <aoliva@redhat.com>
2890             Jakub Jelinek  <jakub@redhat.com>
2891
2892         PR bootstrap/83396
2893         PR debug/83391
2894         * tree-cfgcleanup.c (remove_forwarder_block): Keep after
2895         labels debug stmts that can only appear after labels.
2896
2897 2017-12-13  Alexander Monakov  <amonakov@ispras.ru>
2898
2899         PR rtl-optimization/82398
2900         * sel-sched.c (sel_rank_for_schedule): Fix check for zero
2901         EXPR_USEFULNESS in priority comparison.
2902
2903 2017-12-13  Segher Boessenkool  <segher@kernel.crashing.org>
2904
2905         PR rtl-optimization/83393
2906         * combine.c (move_deaths): If reg_stat points to a too new insn in
2907         last_death, do not use it: find the proper insn instead.
2908
2909 2017-12-12  Jeff Law  <law@redhat.com>
2910
2911         PR tree-optimization/83298
2912         PR tree-optimization/83362
2913         PR tree-optimization/83383
2914         * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Make
2915         push_value_range a public interface.  Add new argument to
2916         record_ranges_from_stmt.
2917         * gimple-ssa-evrp-analyze.c
2918         (evrp_range_analyzer::record_ranges_from_stmt): Add new argument.
2919         Update comments.  Handle recording temporary equivalences.
2920         * tree-ssa-dom.c (dom_opt_opt_walker::before_dom_children): Add
2921         new argument to call to evrp_range_analyzer::record_ranges_from_stmt.
2922         * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Likewise.
2923         * tree-ssa-threadedge.c: Include alloc-pool.h, vr-values.h and
2924         gimple-ssa-evrp-analyze.h.
2925         (record_temporary_equivalences_from_phis): Add new argument.  When
2926         the PHI arg is an SSA_NAME, set the result's range to the range
2927         of the PHI arg.
2928         (record_temporary_equivalences_from_stmts_at_dest): Record ranges
2929         from statements too.
2930         (thread_through_normal_block): Accept new argument, evrp_range_analyzer.
2931         Pass it down to children as needed.
2932         (thread_outgoing_edges): Likewise.
2933         (thread_across_edge): Likewise.   Push/pop range state as needed.
2934         * tree-ssa-threadedge.h (thread_outgoing_edges): Update prototype.
2935
2936 2017-12-12  Julia Koval  <julia.koval@intel.com>
2937
2938         * config/i386/i386.c (PTA_SKYLAKE_AVX512): Add PTA_CLWB.
2939         (PTA_CANNONLAKE): Remove PTA_CLWB.
2940
2941 2017-12-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
2942
2943         PR target/83332
2944         * config/rs6000/vector.md (vcondv2dfv2di): New define_expand.
2945         (vcondv2div2df): Likewise.
2946         (vconduv2dfv2di): Likewise.
2947
2948 2017-12-12  Jakub Jelinek  <jakub@redhat.com>
2949
2950         * builtins.def (BUILT_IN_NEXTAFTER, BUILT_IN_NEXTAFTERF,
2951         BUILT_IN_NEXTAFTERL, BUILT_IN_NEXTTOWARD, BUILT_IN_NEXTTOWARDF,
2952         BUILT_IN_NEXTTOWARDL): Use ATTR_MATHFN_ERRNO instead of
2953         ATTR_MATHFN_FPROUNDING_ERRNO.
2954
2955 2017-12-12  Richard Biener  <rguenther@suse.de>
2956
2957         PR tree-optimization/83385
2958         * graphite-scop-detection.c (get_order, order): Remove.
2959         (bb_to_rpo): New global.
2960         (cmp_pbbs): Adjust.
2961         (build_scops): Sort pbbs in RPO order.
2962
2963 2017-12-12  James Greenhalgh  <james.greenhalgh@arm.com>
2964
2965         * combine.c (simplify_set): Do not transform subregs to zero_extends
2966         if the destination mode is a vector mode.
2967
2968 2017-12-12  Jakub Jelinek  <jakub@redhat.com>
2969
2970         PR tree-optimization/83359
2971         * tree-cfg.h (fold_loop_internal_call): Declare.
2972         * tree-vectorizer.c (fold_loop_internal_call): Moved to ...
2973         * tree-cfg.c (fold_loop_internal_call): ... here.  No longer static.
2974         (find_loop_dist_alias): New function.
2975         (move_sese_region_to_fn): If any dloop->orig_loop_num value is
2976         updated, also adjust any corresponding LOOP_DIST_ALIAS internal
2977         calls.
2978
2979         PR tree-optimization/80631
2980         * tree-vect-loop.c (get_initial_def_for_reduction): Fix comment typo.
2981         (vect_create_epilog_for_reduction): Add INDUC_VAL and INDUC_CODE
2982         arguments, for INTEGER_INDUC_COND_REDUCTION use INDUC_VAL instead of
2983         hardcoding zero as the value if COND_EXPR is never true.  For
2984         INTEGER_INDUC_COND_REDUCTION don't emit the final COND_EXPR if
2985         INDUC_VAL is equal to INITIAL_DEF, and use INDUC_CODE instead of
2986         hardcoding MAX_EXPR as the reduction operation.
2987         (is_nonwrapping_integer_induction): Allow negative step.
2988         (vectorizable_reduction): Compute INDUC_VAL and INDUC_CODE for
2989         vect_create_epilog_for_reduction, if no value is suitable, don't
2990         use INTEGER_INDUC_COND_REDUCTION for now.  Formatting fixes.
2991
2992 2017-12-12  Richard Biener  <rguenther@suse.de>
2993
2994         PR tree-optimization/81889
2995         * tree-ssa-loop-niter.c (infer_loop_bounds_from_signedness): Use
2996         range info from the non-wrapping IV instead of just the range
2997         of the type.
2998
2999 2017-12-12  Julia Koval  <julia.koval@intel.com>
3000
3001         * config.gcc: Add vaesintrin.h.
3002         * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI):
3003         New type.
3004         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
3005         __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi):
3006         New builtins.
3007         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
3008         * config/i386/immintrin.h: Include vaesintrin.h.
3009         * config/i386/sse.md (vaesdec_<mode>): New pattern.
3010         * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
3011         _mm_aesdec_epi128): New intrinsics.
3012
3013 2017-12-12  Julia Koval  <julia.koval@intel.com>
3014
3015         * common/config/i386/i386-common.c (OPTION_MASK_ISA_VAES_SET,
3016         OPTION_MASK_ISA_VAES_UNSET): New.
3017         (ix86_handle_option): Handle -mvaes.
3018         * config/i386/cpuid.h: Define bit_VAES.
3019         * config/i386/driver-i386.c (host_detect_local_cpu): Detect -mvaes.
3020         * config/i386/i386-c.c (__VAES__): New.
3021         * config/i386/i386.c (ix86_target_string): Add -mvaes.
3022         (ix86_valid_target_attribute_inner_p): Ditto.
3023         * config/i386/i386.h (TARGET_VAES, TARGET_VAES_P): New.
3024         * config/i386/i386.opt: Add -mvaes.
3025         * doc/invoke.texi: Ditto.
3026
3027 2017-12-12  Alexandre Oliva  <aoliva@redhat.com>
3028
3029         * debug.h (gcc_debug_hooks): Add inline_entry.
3030         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
3031         * debug.c (do_nothing_debug_hooks): Likewise.
3032         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
3033         * dwarf2out.c (dwarf2_debug_hooks): Likewise.
3034         (dwarf2_lineno_debug_hooks): Likewise.
3035
3036         * common.opt (gstatement-frontiers): New, setting
3037         debug_nonbind_markers_p.
3038         * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): Activate.
3039         * toplev.c (process_options): Autodetect value for debug statement
3040         frontiers option.
3041         * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): Activate.
3042         * doc/invoke.texi (gstatement-frontiers, gno-statement-frontiers): New.
3043
3044         * cfgexpand.c (expand_gimple_basic_block): Handle begin stmt
3045         markers.  Integrate source bind into debug stmt expand loop.
3046         (pass_expand::execute): Check debug marker limit.  Avoid deep
3047         TER and expand debug locations for debug bind insns only.
3048         * cse.c (insn_live_p): Keep nonbind markers and debug bindings
3049         followed by them.
3050         * df-scan.c (df_insn_delete): Accept out-of-block debug insn.
3051         * final.c (reemit_insn_block_notes): Take current block from
3052         nonbind markers.  Declare note where it's first set.
3053         (final_scan_insn): Handle begin stmt notes.  Emit is_stmt according to
3054         begin stmt markers if enabled.
3055         (notice_source_line): Handle nonbind markers.  Fail if their
3056         location is unknown or that of builtins.
3057         (rest_of_handle_final): Convert begin stmt markers to notes if
3058         var-tracking didn't run.
3059         (rest_of_clean_state): Skip begin stmt markers.
3060         * gimple-pretty-print.c (dump_gimple_debug): Handle begin stmt
3061         markers.
3062         * function.c (allocate_struct_function): Set begin_stmt_markers.
3063         * function.h (struct function): Add debug_marker_count counter
3064         and debug_nonbind_markers flag.
3065         * gimple-iterator.c (gsi_remove): Adjust debug_marker_count.
3066         * gimple-low.c (lower_function_body): Adjust
3067         debug_nonbind_markers.
3068         (lower_stmt): Drop or skip gimple debug stmts.
3069         (lower_try_catch): Skip debug stmts.
3070         * gimple.c (gimple_build_debug_begin_stmt): New.
3071         (gimple_copy): Increment debug_marker_count if copying one.
3072         * gimple.h (gimple_build_debug_begin_stmt): Declare.
3073         * gimplify.c (rexpr_location): New.
3074         (rexpr_has_location): New.
3075         (warn_switch_unreachable_r): Handle gimple debug stmts.
3076         (shortcut_cond_r): Call expr_location.
3077         (find_goto): New.
3078         (find_goto_label): New.
3079         (shortcut_cond_expr): Call expr_has_location, expr_location, and
3080         find_goto_label.
3081         (gimplify_cond_expr): Call find_goto_label, expr_has_location, and
3082         expr_location.
3083         (gimplify_expr): Handle begin stmt markers.  Reject debug expr decls.
3084         * langhooks-def.h (LANG_HOOKS_EMITS_BEGIN_STMT): New.  Add to...
3085         (LANG_HOOKS_INITIALIZER): ... this.
3086         * langhooks.h (struct lang_hooks): Add emits_begin_stmt.
3087         * lra-contraints.c (inherit_reload_reg): Tolerate between-blocks
3088         debug insns.
3089         (update_ebb_live_info): Skip debug insn markers.
3090         * lra.c (debug_insn_static_data): Rename to...
3091         (debug_bind_static_data): ... this.
3092         (debug_marker_static_data): New.
3093         (lra_set_insn_recog_data): Select one of the above depending
3094         on debug insn kind.
3095         (lra_update_isn_regno_info): Don't assume debug insns have
3096         freqs.
3097         (push_insns): Skip debug insns.
3098         * lto-streamer-in.c (input_function): Drop debug stmts
3099         depending on active options.  Adjust debug_nonbind_markers.
3100         * params.def (PARAM_MAX_DEBUG_MARKER_COUNT): New.
3101         * print-rtl.c (rtx_writer::print_rtx_operand_code_0): Handle
3102         begin stmt marker notes.
3103         (print_insn): Likewise.
3104         * recog.c (extract_insn): Recognize rtl for debug markers.
3105         * rtl.def (DEBUG_MARKER): New.
3106         * tree-inline.c: Include params.h.
3107         (remap_gimple_stmt): Handle nonbind markers.
3108         (maybe_move_debug_stmts_to_successors): Likewise.
3109         (copy_debug_stmt): Likewise.
3110         * tree-iterator.c (append_to_statement_list_1): Append begin stmt
3111         markers regardless of no side effects.
3112         (tsi_link_before): Don't update container's side effects when adding
3113         a begin stmt marker.
3114         (tsi_link_after): Likewise.
3115         (expr_first): Skip begin stmt markers.
3116         (expr_last): Likewise.
3117         * tree-pretty-print (dump_generic_node): Handle begin stmt markers.
3118         * tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
3119         Disregard nonbind markers.
3120         * tree.c (make_node_stat): Don't set side effects for begin stmt
3121         markers.
3122         (build1_stat): Likewise.
3123         * tree.def (DEBUG_BEGIN_STMT): New.
3124         * tree.h (GOTO_DESTINATION): Require a GOTO_EXPR.
3125         * var-tracking.c (delete_debug_insns): Renamed to...
3126         (delete_vta_debug_insns): ... this.
3127         (reemit_marker_as_note): New.
3128         (vt_initialize): Reemit markers.
3129         (delete_vta_debug_insns): Likewise.
3130         (vt_debug_insns_local): Reemit or delete markers.
3131         (variable_tracking_main_1): Likewise.
3132         * doc/generic.texi (DEBUG_BEGIN_STMT): Document.
3133         * doc/gimple.texi (gimple_debug_begin_stmt_p): New.
3134         (gimple_debug_nonbind_marker_p): New.
3135         (gimple_build_debug_bind): Adjust.
3136         (gimple_build_debug_begin_stmt): New.
3137         * doc/invoke.texi (max-debug-marker-count): New param.
3138         * doc/rtl.texi (debug_implicit_ptr, entry_value): New.
3139         (debug_parameter_ref, debug_marker): New.
3140         (NOTE_INSN_BEGIN_STMT): New.
3141         (DEBUG_INSN): Describe begin stmt markers.
3142
3143         * cfgbuild.c (find_bb_boundaries): Don't purge dead edges if,
3144         without debug insns, we wouldn't, but clean up debug insns
3145         after a control flow insn nevertheless.
3146
3147         * cfgcleanup.c (delete_unreachable_blocks): Use alternate
3148         block removal order if MAY_HAVE_DEBUG_BIND_INSNS.
3149         * cfgexpand.c (label_rtx_for_bb): Skip debug insns.
3150         * cfgrtl.c (try_redirect_by_replacing_jump): Skip debug insns.
3151         (rtl_tidy_fallthru_edge): Likewise.
3152         (rtl_verify_fallthru): Likewise.
3153         (rtl_verify_bb_layout): Likewise.
3154         (skip_insns_after_block): Likewise.
3155         (duplicate_insn_chain): Use DEBUG_BIND_INSN_P.
3156         * dwarf2out.c: Include print-rtl.h.
3157         (dwarf2out_next_real_insn): New.
3158         (dwarf2out_var_location): Call it.  Disregard begin stmt markers.
3159         Dump debug binds in asm comments.
3160         * gimple-iterator.c (gimple_find_edge_insert_loc): Skip debug stmts.
3161         * gimple-iterator.h (gsi_start_bb_nondebug): Remove; adjust
3162         callers to use gsi_start_nondebug_bb instead.
3163         (gsi_after_labels): Skip gimple debug stmts.
3164         (gsi_start_nondebug): New.
3165         * gimple-loop-interchange.c (find_deps_in_bb_for_stmt): Adjust.
3166         (proper_loop_form_for_interchange): Adjust.
3167         * gimple-low.c (gimple_seq_may_fallthru): Take last nondebug stmt.
3168         * gimple.h (gimple_seq_last_nondebug_stmt): New.
3169         * gimplify.c (last_stmt_in_scope): Skip debug stmts.
3170         (collect_fallthrough_labels): Likewise.
3171         (should_warn_for_implicit_fallthrough): Likewise.
3172         (warn_implicit_fallthrough_r): Likewise.
3173         (expand_FALLTHROUGH_r): Likewise.
3174         * graphite-isl-ast-to-gimple.c (gsi_insert_earliest): Adjust.
3175         (graphite_copy_stmts_from_block): Skip nonbind markers.
3176         * haifa-sched.c (sched_extend_bb): Skip debug insns.
3177         * ipa-icf-gimple.c (func_checker::compare_bb): Adjust.
3178         * jump.c (clean_barriers): Skip debug insns.
3179         * omp-expand.c (expand_parallel_call): Skip debug insns.
3180         (expand_task_call): Likewise.
3181         (remove_exit_barrier): Likewise.
3182         (expand_omp_taskreg): Likewise.
3183         (expand_omp_for_init_counts): Likewise.
3184         (expand_omp_for_generic): Likewise.
3185         (expand_omp_for_static_nochunk): Likewise.
3186         (expand_omp_for_static_chunk): Likewise.
3187         (expand_omp_simd): Likewise.
3188         (expand_omp_taskloop_for_outer): Likewise.
3189         (expand_omp_taskloop_for_inner): Likewise.
3190         (expand_oacc_for): Likewise.
3191         (expand_omp_sections): Likewise.
3192         (expand_omp_single): Likewise.
3193         (expand_omp_synch): Likewise.
3194         (expand_omp_atomic_load): Likewise.
3195         (expand_omp_atomic_store): Likewise.
3196         (expand_omp_atomic_fetch_op): Likewise.
3197         (expand_omp_atomic_pipeline): Likewise.
3198         (expand_omp_atomic_mutex): Likewise.
3199         (expand_omp_target): Likewise.
3200         (grid_expand_omp_for_loop): Likewise.
3201         (grid_expand_target_grid_body): Likewise.
3202         (build_omp_regions_1): Likewise.
3203         * omp-low.c (check_combined_parallel): Skip debug stmts.
3204         * postreload.c (fixup_debug_insns): Skip nonbind debug insns.
3205         * regcprop.c (find_oldest_value_reg): Ensure REGNO is not a pseudo.
3206         * sese.c (sese_trivially_empty_bb_p): Call is_gimple_debug in
3207         test.
3208         * tree-cfg.c (make_blobs_1): Skip debug stmts.
3209         (make_edges): Likewise.
3210         (cleanup_dead_labels): Likewise.
3211         (gimple_can_merge_blocks_p): Likewise.
3212         (stmt_starts_bb_p): Likewise.
3213         (gimple_block_label): Likewise.
3214         (gimple_redirect_edge_and_branch): Likewise.
3215         * tree-cfgcleanup.c (remove_forwarder_block): Rearrange skipping
3216         of debug stmts.
3217         (execute_cleanup_cfg_post_optimizing): Dump enumerated decls with
3218         TDF_SLIM.
3219         * tree-pretty-print (print_declaration): Omit initializer in slim
3220         dumps.
3221         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark begin stmt
3222         markers.
3223         (eliminate_unnecessary_stmts): Stabilize block removal order.
3224         * tree-ssa-tail-merge.c (find_duplicate): Skip debug stmts.
3225         * var-tracking.c (get_first_insn): New.
3226         (vt_emit_notes): Call it.
3227         (vt_initialize): Walk any insns before the first BB.
3228         (delete_debug_insns): Likewise.
3229
3230         * gimple.h (enum gimple_debug_subcode): Add
3231         GIMPLE_DEBUG_BEGIN_STMT.
3232         (gimple_debug_begin_stmt_p): New.
3233         (gimple_debug_nonbind_marker_p): New.
3234         * tree.h (MAY_HAVE_DEBUG_MARKER_STMTS): New.
3235         (MAY_HAVE_DEBUG_BIND_STMTS): Renamed from....
3236         (MAY_HAVE_DEBUG_STMTS): ... this.  Check both.
3237         * insn-notes.def (BEGIN_STMT): New.
3238         * rtl.h (MAY_HAVE_DEBUG_MARKER_INSNS): New.
3239         (MAY_HAVE_DEBUG_BIND_INSNS): Renamed from....
3240         (MAY_HAVE_DEBUG_INSNS): ... this.  Check both.
3241         (NOTE_MARKER_LOCATION, NOTE_MARKER_P): New.
3242         (DEBUG_BIND_INSN_P, DEBUG_MARKER_INSN_P): New.
3243         (INSN_DEBUG_MARKER_KIND): New.
3244         (GEN_RTX_DEBUG_MARKER_BEGIN_STMT_PAT): New.
3245         (INSN_VAR_LOCATION): Check for VAR_LOCATION.
3246         (INSN_VAR_LOCATION_PTR): New.
3247         * cfgexpand.c (expand_debug_locations): Handle debug bind insns
3248         only.
3249         (expand_gimple_basic_block): Likewise.  Emit debug temps for TER
3250         deps only if debug bind insns are enabled.
3251         (pass_expand::execute): Avoid deep TER and expand
3252         debug locations for debug bind insns only.
3253         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Narrow
3254         debug stmts special handling down to debug bind stmts.
3255         * combine.c (try_combine): Narrow debug insns special handling
3256         down to debug bind insns.
3257         * cse.c (delete_trivially_dead_insns): Handle debug bindings.
3258         Narrow debug insns preexisting special handling down to debug
3259         bind insns.
3260         * dce.c (rest_of_handle_ud_dce): Narrow debug insns special
3261         handling down to debug bind insns.
3262         * function.c (instantiate_virtual_regs): Skip debug markers,
3263         adjust handling of debug binds.
3264         * gimple-ssa-backprop.c (backprop::prepare_change): Try debug
3265         temp insertion iff MAY_HAVE_DEBUG_BIND_STMTS.
3266         * haifa-sched.c (schedule_insn): Narrow special handling of debug
3267         insns to debug bind insns.
3268         * ipa-param-manipulation.c (ipa_modify_call_arguments): Narrow
3269         special handling of debug stmts to debug bind stmts.
3270         * ipa-split.c (split_function): Likewise.
3271         * ira.c (combine_and_move_insns): Adjust debug bind insns only.
3272         * loop-unroll.c (apply_opt_in_copies): Adjust tests on bind
3273         debug insns.
3274         * reg-stack.c (convert_regs_1): Use DEBUG_BIND_INSN_P.
3275         * regrename.c (build_def_use): Likewise.
3276         * regcprop.c (copyprop_hardreg_forward_1): Likewise.
3277         (pass_cprop_hardreg): Narrow special casing of debug insns to
3278         debug bind insns.
3279         * regstat.c (regstat_init_n_sets_and_refs): Likewise.
3280         * reload1.c (reload): Likewise.
3281         * sese.c (sese_insert_phis_for_liveouts): Narrow special
3282         casing of debug stmts to debug bind stmts.
3283         * shrink-wrap.c (move_insn_for_shrink_wrap): Likewise.
3284         * ssa-iterators.h (num_imm_uses): Likewise.
3285         * tree-cfg.c (gimple_merge_blocks): Narrow special casing of
3286         debug stmts to debug bind stmts.
3287         * tree-inline.c (tree_function_versioning): Narrow special casing
3288         of debug stmts to debug bind stmts.
3289         * tree-loop-distribution.c (generate_loops_for_partition):
3290         Narrow special casing of debug stmts to debug bind stmts.
3291         * tree-sra.c (analyze_access_subtree): Narrow special casing
3292         of debug stmts to debug bind stmts.
3293         * tree-ssa-dce.c (remove_dead_stmt): Narrow special casing of debug
3294         stmts to debug bind stmts.
3295         * tree-ssa-loop-ivopt.c (remove_unused_ivs): Narrow special
3296         casing of debug stmts to debug bind stmts.
3297         * tree-ssa-reassoc.c (reassoc_remove_stmt): Likewise.
3298         * tree-ssa-tail-merge.c (tail_merge_optimize): Narrow special
3299         casing of debug stmts to debug bind stmts.
3300         * tree-ssa-threadedge.c (propagate_threaded_block_debug_info):
3301         Likewise.
3302         * tree-ssa.c (flush_pending_stmts): Narrow special casing of
3303         debug stmts to debug bind stmts.
3304         (gimple_replace_ssa_lhs): Likewise.
3305         (insert_debug_temp_for_var_def): Likewise.
3306         (insert_debug_temps_for_defs): Likewise.
3307         (reset_debug_uses): Likewise.
3308         * tree-ssanames.c (release_ssa_name_fn): Likewise.
3309         * tree-vect-loop-manip.c (adjust_debug_stmts_now): Likewise.
3310         (adjust_debug_stmts): Likewise.
3311         (adjust_phi_and_debug_stmts): Likewise.
3312         (vect_do_peeling): Likewise.
3313         * tree-vect-loop.c (vect_transform_loop): Likewise.
3314         * valtrack.c (propagate_for_debug): Use BIND_DEBUG_INSN_P.
3315         * var-tracking.c (adjust_mems): Narrow special casing of debug
3316         insns to debug bind insns.
3317         (dv_onepart_p, dataflow_set_clar_at_call, use_type): Likewise.
3318         (compute_bb_dataflow, vt_find_locations): Likewise.
3319         (vt_expand_loc, emit_notes_for_changes): Likewise.
3320         (vt_init_cfa_base): Likewise.
3321         (vt_emit_notes): Likewise.
3322         (vt_initialize): Likewise.
3323         (vt_finalize): Likewise.
3324
3325         * emit-rtl.c (next_nondebug_insn, prev_nondebug_insn): Reorder.
3326         (next_nonnote_nondebug_insn, prev_nonnote_nondebug_insn): Reorder.
3327         (next_nonnote_nondebug_insn_bb): New.
3328         (prev_nonnote_nondebug_insn_bb): New.
3329         (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove.
3330         * rtl.h (prev_nonnote_insn_bb, next_nonnote_insn_bb): Remove decls.
3331         (prev_nonnote_nondebug_insn_bb): Declare.
3332         (next_nonnote_nondebug_insn_bb): Declare.
3333         * cfgbuild.c (find_bb_boundaries): Adjust to skip debug insns.
3334         * cfgrtl.c (get_last_bb_insn): Likewise.
3335         * lra.c (push_insns): Likewise.
3336
3337 2017-12-11  David Malcolm  <dmalcolm@redhat.com>
3338
3339         PR c/82050
3340         * selftest-run-tests.c (selftest::run_tests): Move start/finish code
3341         to...
3342         * selftest.c (selftest::test_runner::test_runner): New ctor.
3343         (selftest::test_runner::~test_runner): New dtor.
3344         * selftest.h (class selftest::test_runner): New class.
3345
3346 2017-12-11  Carl Love  <cel@us.ibm.com>
3347
3348         * config/rs6000/altivec.h (vec_extract_fp32_from_shorth,
3349         vec_extract_fp32_from_shortl]): Add #defines.
3350         * config/rs6000/rs6000-builtin.def (VSLDOI_2DI): Add macro expansion.
3351         * config/rs6000/rs6000-c.c (ALTIVEC_BUILTIN_VEC_UNPACKH,
3352         ALTIVEC_BUILTIN_VEC_UNPACKL, ALTIVEC_BUILTIN_VEC_AND,
3353         ALTIVEC_BUILTIN_VEC_SLD, ALTIVEC_BUILTIN_VEC_SRL,
3354         ALTIVEC_BUILTIN_VEC_SRO, ALTIVEC_BUILTIN_VEC_SLD,
3355         ALTIVEC_BUILTIN_VEC_SLL): Add expansions.
3356         * doc/extend.texi: Add documentation for the added builtins.
3357
3358 2017-12-11  Alexandre Oliva  <aoliva@redhat.com>
3359
3360         PR rtl-optimization/80693
3361         PR rtl-optimization/81019
3362         PR rtl-optimization/81020
3363         * combine.c (distribute_notes): Reset any REG_UNUSED REGs that
3364         are not mentioned in i3.  Place the REG_UNUSED note on i2,
3365         possibly modified to REG_DEAD, if it did not originate in i3.
3366
3367 2017-12-11  Jakub Jelinek  <jakub@redhat.com>
3368
3369         * recog.c (store_data_bypass_p_1): New function.
3370         (store_data_bypass_p): Handle USE in a PARALLEL like CLOBBER.  Use
3371         store_data_bypass_p_1 to avoid code duplication.  Formatting fixes.
3372
3373 2017-12-11  Segher Boessenkool  <segher@kernel.crashing.org>
3374
3375         PR rtl-optimization/83361
3376         * ifcvt.c (if_convert): Call fixup_partitions.
3377
3378 2017-12-11  Will Schmidt  <will_schmidt@vnet.ibm.com>
3379
3380         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
3381         early folding of splat_u{8,16,32}.
3382
3383 2017-12-11  Jakub Jelinek  <jakub@redhat.com>
3384
3385         * config/aarch64/aarch64.c (aarch64_print_operand): Don't start
3386         output_operand_lossage first argument with capital letter.
3387         (aarch64_override_options): Don't start error and sorry first argument
3388         with capital letter.
3389
3390 2017-12-11  Andi Kleen  <ak@linux.intel.com>
3391
3392         PR gcov-profile/83355
3393         * auto-profile.c (string_table::get_index_by_decl): Don't
3394         recurse when abstract origin points to itself.
3395
3396 2017-12-11  Bin Cheng  <bin.cheng@arm.com>
3397
3398         PR tree-optimization/83320
3399         * gimple-loop-interchange.cc (free_data_refs_with_aux): Use delete.
3400         (prune_datarefs_not_in_loop): Ditto.
3401
3402 2017-12-10  Gerald Pfeifer  <gerald@pfeifer.com>
3403
3404         * doc/install.texi (Specific): Tweak link to mkssoftware.com.
3405
3406 2017-12-10  Jakub Jelinek  <jakub@redhat.com>
3407
3408         PR tree-optimization/83337
3409         * gimple-loop-interchange.cc (compute_access_stride): Handle
3410         bitfield DRs properly.
3411
3412 2017-12-09  Jakub Jelinek  <jakub@redhat.com>
3413
3414         PR tree-optimization/83338
3415         * tree-vect-stmts.c (vectorizable_operation): Handle POINTER_DIFF_EXPR
3416         vectorization as MINUS_EXPR with a subsequent VIEW_CONVERT_EXPR from
3417         vector of unsigned integers to vector of signed integers.
3418
3419 2017-12-08  Vladimir Makarov  <vmakarov@redhat.com>
3420
3421         PR rtl-optimization/83317
3422         * lra-constraints.c (process_address_1): Add insn code check.
3423
3424 2017-12-08  Michael Matz  <matz@suse.de>
3425
3426         Fix PR tree-optimization/83323
3427         * gimple-loop-jam (unroll_jam_possible_p): Correct test for
3428         head-controlled loops and loop BBs.
3429         * common.opt (funroll-and-jam): Remove, instead ...
3430         (floop-unroll-and-jam): ... reuse this option.
3431         * opts.c (default_options_table): Use OPT_floop_unroll_and_jam.
3432         * doc/invoke.texi (-funroll-and-jam): Move docu to ...
3433         (-floop-unroll-and-jam): ... this option.
3434
3435 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
3436
3437         * ipa-polymorphic-call.c (noncall_stmt_may_be_vtbl_ptr_store): Fix
3438         a comment typo, get_base_ref_and_offset -> get_ref_base_and_extent.
3439         * ipa-prop.c (stmt_may_be_vtbl_ptr_store): Likewise.
3440
3441 2017-12-08  Richard Biener  <rguenther@suse.de>
3442
3443         PR middle-end/81782
3444         * tree-ssa-uninit.c (warn_uninitialized_vars): Properly
3445         handle accesses outside of zero-sized vars.
3446
3447 2017-12-08  Martin Jambor  <mjambor@suse.cz>
3448
3449         PR tree-optimization/83141
3450         * tree-sra.c (contains_vce_or_bfcref_p): Move up in the file, also
3451         test for MEM_REFs implicitely changing types with padding.  Remove
3452         inline keyword.
3453         (build_accesses_from_assign): Added contains_vce_or_bfcref_p checks.
3454
3455 2017-12-08  Jakub Jelinek  <jakub@redhat.com>
3456
3457         * config/arc/arc.c (arc_attribute_table): Add exclusions to
3458         the comment.
3459         * config/avr/avr.c (avr_attribute_table): Likewise.
3460         * config/msp430/msp430.c (msp430_attribute_table): Likewise.
3461         * config/rl78/rl78.c (rl78_attribute_table): Likewise.
3462         * config/nds32/nds32.c (nds32_attribute_table): Likewise.
3463         * config/darwin.h (SUBTARGET_ATTRIBUTE_TABLE): Initialize new member
3464         of struct attribute_spec.
3465         * config/i386/cygming.h (SUBTARGET_ATTRIBUTE_TABLE): Likewise.
3466
3467 2017-12-08  Ulrich Weigand  <uweigand@de.ibm.com>
3468
3469         PR target/82960
3470         * config/spu/spu.c (pad_bb): Only check INSN_CODE when INSN_P is true.
3471
3472 2017-12-08  Jan Hubicka  <hubicka@ucw.cz>
3473
3474         PR middle-end/83609
3475         * profile-count.c (profile_count::from_gcov_type): Move from
3476         profile-count.h; handle overflow.
3477         * profile-count.h (profile_count::from_gcov_type): Move offline.
3478
3479 2017-12-08  Segher Boessenkool  <segher@kernel.crashing.org>
3480
3481         PR rtl-optimization/83304
3482         * combine.c (move_deaths): If we do not know where a register died,
3483         search for it.
3484
3485 2017-12-08  Richard Biener  <rguenther@suse.de>
3486
3487         * gimple-loop-interchange.cc (tree_loop_interchange::interchange):
3488         Provide -fopt-info-loop feedback when we interchange in a nest.
3489
3490 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
3491
3492         * config/arm/driver-arm.c (arm_cpu_table): Use fp-capable product names
3493         for armv6 ARM CPU IDs.
3494
3495 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
3496
3497         * common/config/arm/arm-common.c: Include <algorithm>.
3498         (INCLUDE_VECTOR): Define.
3499         (compare_opt_names): New function.
3500         (arm_rewrite_selected_arch): Only strip out extensions that can be
3501         expressed through -mfpu.  Sort the remaining extensions
3502         alphabetically.
3503
3504 2017-06-08  Richard Earnshaw  <rearnsha@arm.com>
3505
3506         * config/arm/arm.h (arm_asm_auto_mfpu): Declare.
3507         (ASM_CPU_SPEC_FUNCTIONS): Add new rule asm_auto_mfpu.
3508         (ASM_CPU_SPEC): Use it if -mfpu is set to auto.
3509         * common/config/arm/arm-common.c (arm_asm_auto_mfpu): New function.
3510
3511 2017-06-08  Tristan Gingold  <gindold@adacore.com>
3512
3513         PR ada/81470
3514         * dwarf2out.c (dwarf2out_do_cfi_startproc): Only emit
3515         .cfi_personality or .cfi_lsda if the eh data format is dwarf2.
3516
3517 2017-12-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
3518
3519         * config/sol2.h (SOLARIS_ATTRIBUTE_TABLE): Initialize new member
3520         of struct attribute_spec.
3521
3522 2017-12-08  Julia Koval  <julia.koval@intel.com>
3523
3524         * config/i386/avx512vnniintrin.h (_mm512_dpwssds_epi32,
3525         _mm512_mask_dpwssds_epi32, _mm512_maskz_dpwssds_epi32): New intrinsics.
3526         * config/i386/avx512vnnivlintrin.h (_mm256_dpwssds_epi32,
3527         _mm256_mask_dpwssds_epi32, _mm256_maskz_dpwssds_epi32,
3528         _mm_dpwssds_epi32, _mm_mask_dpwssds_epi32,
3529         _mm_maskz_dpwssds_epi32): Ditto.
3530
3531 2017-12-08  Richard Biener  <rguenther@suse.de>
3532
3533         PR tree-optimization/81303
3534         * tree-vect-stmts.c (vect_is_simple_cond): For invariant
3535         conditions try to create a comparison vector type matching
3536         the data vector type.
3537         (vectorizable_condition): Adjust.
3538         * tree-vect-patterns.c (vect_recog_mask_conversion_pattern):
3539         Leave invariant conditions alone in case we can vectorize those.
3540
3541 2017-12-08  Julia Koval  <julia.koval@intel.com>
3542
3543         * config/i386/avx512vnniintrin.h (_mm512_dpwssd_epi32,
3544         _mm512_mask_dpwssd_epi32, _mm512_maskz_dpwssd_epi32): New intrinsics.
3545         * config/i386/avx512vnnivlintrin.h (_mm256_dpwssd_epi32,
3546         _mm256_mask_dpwssd_epi32, _mm256_maskz_dpwssd_epi32, _mm_dpwssd_epi32,
3547         _mm_mask_dpwssd_epi32, _mm_maskz_dpwssd_epi32): Ditto.
3548
3549 2017-12-08  Julia Koval  <julia.koval@intel.com>
3550
3551         * config/i386/avx512vnniintrin.h (_mm512_dpbusds_epi32,
3552         _mm512_mask_dpbusds_epi32, _mm512_maskz_dpbusds_epi32): New.
3553         * config/i386/avx512vnnivlintrin.h (_mm256_dpbusds_epi32,
3554         _mm256_mask_dpbusds_epi32, _mm256_maskz_dpbusds_epi32,
3555         _mm_dpbusds_epi32, _mm_mask_dpbusds_epi32,
3556         _mm_maskz_dpbusds_epi32): New intrinsics.
3557
3558 2017-12-07  Sandra Loosemore  <sandra@codesourcery.com>
3559
3560         * config/nios2/nios2.md (ld<bhw_uns>io): Add splitter for memory
3561         operand.
3562         (ld<bh>io_signed): Likewise.
3563         (st<bhw>io): Likewise.
3564         * config/nios2/predicates.md (ldstio_memory_operand): Allow
3565         SMALL_INT12 constant integer operand.
3566
3567 2017-12-07  Sandra Loosemore  <sandra@codesourcery.com>
3568
3569         * config/nios2/nios2.c (nios2_symbolic_constant_allowed):
3570         Rename to...
3571         (nios2_large_constant_allowed): ...this.  Adjust uses.
3572         (nios2_plus_symbolic_constant_p): Rename to...
3573         (nios2_plus_large_constant_p): ...this.  Adjust uses.
3574         (nios2_legitimate_address_p): Correct CONST_INT handling.
3575         (nios2_symbolic_memory_operand_p): Rename to...
3576         (nios2_large_constant_memory_operand_p): ...this.  Adjust uses.
3577         (nios2_large_constant_p): Check for large constant integers too.
3578         (nios2_split_large_constant): Handle constant integers.
3579         (nios2_split_symbolic_memory_operand): Rename to...
3580         (nios2_split_large_constant_memory_operand): ...this.  Adjust uses.
3581         (nios2_legitimize_constant_address): Handle constant integers.
3582         (r0rel_constant_p): Handle small constant integers.
3583         (nios2_print_operand_address): Handle r0-relative integer addresses.
3584         * config/nios2/nios2-protos.h: Adjust for renamed functions.
3585         * config/nios2/nios2.md: Adjust for renamed functions.
3586
3587 2017-12-07  Andrew Waterman  <andrew@sifive.com>
3588
3589         * config/riscv/riscv.c (TARGET_ASM_SELECT_SECTION): New define.
3590         (TARGET_HAVE_SRODATA_SECTION): New define.
3591         (riscv_select_section): New function.
3592
3593 2017-12-08  Joseph Myers  <joseph@codesourcery.com>
3594             Alexander Monakov  <amonakov@ispras.ru>
3595             Jakub Jelinek  <jakub@redhat.com>
3596
3597         PR target/81906
3598         * config/i386/i386.c (ix86_expand_rint): Handle flag_rounding_math.
3599
3600 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3601
3602         * config/aarch64/aarch64.c (aarch64_print_address_internal): Return
3603         a bool success value.  Don't call output_operand_lossage here.
3604         (aarch64_print_ldpstp_address): Return a bool success value.
3605         (aarch64_print_operand_address): Call output_addr_const if
3606         aarch64_print_address_internal fails.
3607         (aarch64_print_operand): Don't assert that the mode is 16 bytes for
3608         'y'; call output_operand_lossage instead.  Call output_operand_lossage
3609         if aarch64_print_ldpstp_address fails.
3610
3611 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3612
3613         * tree-vector-builder.h
3614         (tree_vector_builder::binary_encoded_nelts): Declare.
3615         * tree-vector-builder.c
3616         (tree_vector_builder::binary_encoded_nelts): New function.
3617         * fold-const.c (negate_expr_p): Likewise.
3618         (operand_equal_p, fold_checksum_tree): Likewise.
3619         * tree-loop-distribution.c (const_with_all_bytes_same): Likewise.
3620         * tree.c (integer_zerop, integer_onep, integer_all_onesp, real_zerop)
3621         (real_onep, real_minus_onep, add_expr, initializer_zerop): Likewise.
3622         (uniform_vector_p): Likewise.
3623         * varasm.c (const_hash_1, compare_constant): Likewise.
3624         * tree-ssa-ccp.c: Include tree-vector-builder.h.
3625         (valid_lattice_transition): Operate directly on the VECTOR_CST
3626         encoding.
3627         * ipa-icf.c: Include tree-vector-builder.h.
3628         (sem_variable::equals): Operate directly on the VECTOR_CST encoding.
3629         * print-tree.c (print_node): Print encoding of VECTOR_CSTs.
3630
3631 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3632
3633         * tree.c (build_vector): Delete.
3634         * tree.h (build_vector): Make static and move into the self-testing
3635         block.
3636
3637 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3638
3639         * vector-builder.h (vector_builder::derived): New const overload.
3640         (vector_builder::elt): New function.
3641         * tree-vector-builder.h (tree_vector_builder::type): New function.
3642         (tree_vector_builder::apply_step): Declare.
3643         * tree-vector-builder.c (tree_vector_builder::apply_step): New
3644         function.
3645         * gimple-fold.h (tree_vector_builder): Declare.
3646         (gimple_build_vector): Take a tree_vector_builder instead of a
3647         type and vector of elements.
3648         * gimple-fold.c (gimple_build_vector): Likewise.
3649         * tree-vect-loop.c (get_initial_def_for_reduction): Update call
3650         accordingly.
3651         (get_initial_defs_for_reduction): Likewise.
3652         (vectorizable_induction): Likewise.
3653
3654 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3655
3656         * tree-vector-builder.h
3657         (tree_vector_builder::new_binary_operation): Declare.
3658         * tree-vector-builder.c
3659         (tree_vector_builder::new_binary_operation): New function.
3660         * fold-const.c (fold_relational_const): Use it.
3661         (const_binop): Likewise.  Check that both input vectors have
3662         the same number of elements, thus excluding things like WIDEN_SUM.
3663         Check whether it is possible to operate directly on the encodings
3664         of stepped inputs.
3665
3666 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3667
3668         * fold-const.c (fold_negate_expr_1): Use tree_vector_builder and
3669         new_unary_operation, operating only on the encoded elements.
3670         (const_unop): Likewise.
3671         (exact_inverse): Likewise.
3672         (distributes_over_addition_p): New function.
3673         (const_binop): Use tree_vector_builder and new_unary_operation
3674         for combinations of VECTOR_CST and INTEGER_CST.  Operate only
3675         on the encoded elements unless the encoding is strided and the
3676         operation does not distribute over addition.
3677         (fold_convert_const):  Use tree_vector_builder and
3678         new_unary_operation.  Operate only on the encoded elements
3679         for truncating integer conversions, or for non-stepped encodings.
3680
3681 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3682
3683         * config/sparc/sparc.c: Include tree-vector-builder.h.
3684         (sparc_fold_builtin): Use tree_vector_builder instead of build_vector.
3685         * expmed.c: Include tree-vector-builder.h.
3686         (make_tree): Use tree_vector_builder instead of build_vector.
3687         * fold-const.c: Include tree-vector-builder.h.
3688         (const_binop): Use tree_vector_builder instead of build_vector.
3689         (const_unop): Likewise.
3690         (native_interpret_vector): Likewise.
3691         (fold_vec_perm): Likewise.
3692         (fold_ternary_loc): Likewise.
3693         * gimple-fold.c: Include tree-vector-builder.h.
3694         (gimple_fold_stmt_to_constant_1): Use tree_vector_builder instead
3695         of build_vector.
3696         * tree-ssa-forwprop.c: Include tree-vector-builder.h.
3697         (simplify_vector_constructor): Use tree_vector_builder instead
3698         of build_vector.
3699         * tree-vect-generic.c: Include tree-vector-builder.h.
3700         (add_rshift): Use tree_vector_builder instead of build_vector.
3701         (expand_vector_divmod): Likewise.
3702         (optimize_vector_constructor): Likewise.
3703         * tree-vect-loop.c: Include tree-vector-builder.h.
3704         (vect_create_epilog_for_reduction): Use tree_vector_builder instead
3705         of build_vector.  Explicitly use a stepped encoding for
3706         { 1, 2, 3, ... }.
3707         * tree-vect-slp.c: Include tree-vector-builder.h.
3708         (vect_get_constant_vectors): Use tree_vector_builder instead
3709         of build_vector.
3710         (vect_transform_slp_perm_load): Likewise.
3711         (vect_schedule_slp_instance): Likewise.
3712         * tree-vect-stmts.c: Include tree-vector-builder.h.
3713         (vectorizable_bswap): Use tree_vector_builder instead of build_vector.
3714         (vect_gen_perm_mask_any): Likewise.
3715         (vectorizable_call): Likewise.  Explicitly use a stepped encoding.
3716         * tree.c: (build_vector_from_ctor): Use tree_vector_builder instead
3717         of build_vector.
3718         (build_vector_from_val): Likewise.  Explicitly use a duplicate
3719         encoding.
3720
3721 2017-12-07  Richard Sandiford  <richard.sandiford@arm.com>
3722
3723         * doc/generic.texi (VECTOR_CST): Describe new representation of
3724         vector constants.
3725         * vector-builder.h: New file.
3726         * tree-vector-builder.h: Likewise.
3727         * tree-vector-builder.c: Likewise.
3728         * Makefile.in (OBJS): Add tree-vector-builder.o.
3729         * tree.def (VECTOR_CST): Update comment to refer to generic.texi.
3730         * tree-core.h (tree_base): Add a vector_cst field to the u union.
3731         (tree_vector): Change the number of elements to
3732         vector_cst_encoded_nelts.
3733         * tree.h (VECTOR_CST_NELTS): Redefine using TYPE_VECTOR_SUBPARTS.
3734         (VECTOR_CST_ELTS): Delete.
3735         (VECTOR_CST_ELT): Redefine using vector_cst_elt.
3736         (VECTOR_CST_LOG2_NPATTERNS, VECTOR_CST_NPATTERNS): New macros.
3737         (VECTOR_CST_NELTS_PER_PATTERN, VECTOR_CST_DUPLICATE_P): Likewise.
3738         (VECTOR_CST_STEPPED_P, VECTOR_CST_ENCODED_ELTS): Likewise.
3739         (VECTOR_CST_ENCODED_ELT): Likewise.
3740         (vector_cst_encoded_nelts): New function.
3741         (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and
3742         VECTOR_CST_NELTS_PER_PATTERN as arguments.
3743         (vector_cst_int_elt, vector_cst_elt): Declare.
3744         * tree.c: Include tree-vector-builder.h.
3745         (tree_code_size): Abort if passed VECTOR_CST.
3746         (tree_size): Update for new VECTOR_CST layout.
3747         (make_vector): Take the values of VECTOR_CST_LOG2_NPATTERNS and
3748         VECTOR_CST_NELTS_PER_PATTERN as arguments.
3749         (build_vector): Use tree_vector_builder.
3750         (vector_cst_int_elt, vector_cst_elt): New functions.
3751         (drop_tree_overflow): For VECTOR_CST, drop the TREE_OVERFLOW from the
3752         encoded elements and then create the vector in the canonical form.
3753         (check_vector_cst, check_vector_cst_duplicate, check_vector_cst_fill)
3754         (check_vector_cst_stepped, test_vector_cst_patterns): New functions.
3755         (tree_c_tests): Call test_vector_cst_patterns.
3756         * lto-streamer-out.c (DFS::DFS_write_tree_body): Handle the new
3757         VECTOR_CST fields.
3758         (hash_tree): Likewise.
3759         * tree-streamer-out.c (write_ts_vector_tree_pointers): Likewise.
3760         (streamer_write_tree_header): Likewise.
3761         * tree-streamer-in.c (lto_input_ts_vector_tree_pointers): Likewise.
3762         (streamer_alloc_tree): Likewise.  Update call to make_vector.
3763         * fold-const.c (fold_ternary_loc): Avoid using VECTOR_CST_ELTS.
3764
3765 2017-12-07  Richard Sandiford  <richard.sandiford@linaro.org>
3766
3767         * selftest.h (ASSERT_TRUE_AT, ASSERT_FALSE_AT, ASSERT_EQ_AT)
3768         (ASSERT_NE, ASSERT_PRED1): Add underscores to local variable names
3769         * selftest-rtl.h (ASSERT_RTX_EQ, ASSERT_RTX_PTR_EQ): Likewise.
3770
3771 2017-12-07  Bin Cheng  <bin.cheng@arm.com>
3772             Richard Biener  <rguenther@suse.de>
3773
3774         PR tree-optimization/81303
3775         * Makefile.in (gimple-loop-interchange.o): New object file.
3776         * common.opt (floop-interchange): Reuse the option from graphite.
3777         * doc/invoke.texi (-floop-interchange): Ditto.  New document for
3778         -floop-interchange and mention it for -O3.
3779         * opts.c (default_options_table): Enable -floop-interchange at -O3.
3780         * gimple-loop-interchange.cc: New file.
3781         * params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter.
3782         (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter.
3783         * passes.def (pass_linterchange): New pass.
3784         * timevar.def (TV_LINTERCHANGE): New time var.
3785         * tree-pass.h (make_pass_linterchange): New declaration.
3786         * tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external
3787         interchange.  Record IV before/after increment in new parameters.
3788         * tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration.
3789         * tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction
3790         path check into...
3791         (check_reduction_path): ...New function here.
3792         * tree-vectorizer.h (check_reduction_path): New declaration.
3793
3794 2017-12-07  Vladimir Makarov  <vmakarov@redhat.com>
3795
3796         PR target/83252
3797         PR rtl-optimization/80818
3798         * lra.c (add_regs_to_insn_regno_info): Make a hard reg in CLOBBER
3799         always early clobbered.
3800         * lra-lives.c (process_bb_lives): Check input hard regs for early
3801         clobbered non-operand hard reg.
3802
3803 2017-12-07  Jakub Jelinek  <jakub@redhat.com>
3804
3805         PR middle-end/83164
3806         * tree-cfg.c (verify_gimple_assign_binary): Don't require
3807         types_compatible_p, just that TYPE_MODE is the same.
3808
3809 2017-12-07  Martin Sebor  <msebor@redhat.com>
3810
3811         PR c/81544
3812         * attribs.c (empty_attribute_table): Initialize new member of
3813         struct attribute_spec.
3814         (decl_attributes): Add argument.  Handle mutually exclusive
3815         combinations of attributes.
3816         (selftests::test_attribute_exclusions): New function.
3817         (selftests::attribute_c_tests): Ditto.
3818         * attribs.h (decl_attributes): Add default argument.
3819         * selftest.h (attribute_c_tests): Declare.
3820         * selftest-run-tests.c (selftest::run_tests): Call attribute_c_tests.
3821         * tree-core.h (attribute_spec::exclusions, exclude): New type and
3822         member.
3823         * doc/extend.texi (Common Function Attributes): Update const and pure.
3824         * config/alpha/alpha.c (vms_attribute_table): Initialize new member
3825         of struct attribute_spec.
3826         * config/arc/arc.c (arc_attribute_table): Same.
3827         * config/arm/arm.c (arm_attribute_table): Same.
3828         * config/avr/avr.c ( avr_attribute_table): Same.
3829         * config/bfin/bfin.c (bfin_attribute_table): Same.
3830         * config/cr16/cr16.c (cr16_attribute_table): Same.
3831         * config/epiphany/epiphany.c (epiphany_attribute_table): Same.
3832         * config/h8300/h8300.c (h8300_attribute_table): Same.
3833         * config/i386/i386.c (ix86_attribute_table): Same.
3834         * config/ia64/ia64.c (ia64_attribute_table): Same.
3835         * config/m32c/m32c.c (m32c_attribute_table): Same.
3836         * config/m32r/m32r.c (m32r_attribute_table): Same.
3837         * config/m68k/m68k.c (m68k_attribute_table): Same.
3838         * config/mcore/mcore.c (mcore_attribute_table): Same.
3839         * config/microblaze/microblaze.c (microblaze_attribute_table): Same.
3840         * config/mips/mips.c (mips_attribute_table): Same.
3841         * config/msp430/msp430.c (msp430_attribute_table): Same.
3842         * config/nds32/nds32.c (nds32_attribute_table): Same.
3843         * config/nvptx/nvptx.c (nvptx_attribute_table): Same.
3844         * config/powerpcspe/powerpcspe.c (rs6000_attribute_table): Same.
3845         * config/rl78/rl78.c (rl78__attribute_table): Same.
3846         * config/rs6000/rs6000.c (rs6000_attribute_table): Same.
3847         * onfig/rx/rx.c (rx_attribute_table): Same.
3848         * config/s390/s390.c (s390_handle_vectorbool_attribute): Same.
3849         * config/sh/sh.c (sh_attribute_table): Same.
3850         * config/sparc/sparc.c (sparc_attribute_table): Same.
3851         * config/spu/spu.c (spu_attribute_table): Same.
3852         * config/stormy16/stormy16.c (xstormy16_attribute_table): Same.
3853         * config/v850/v850.c (v850_attribute_table): Same.
3854         * config/visium/visium.c (visium_attribute_table): Same.
3855
3856 2017-12-07  Tamar Christina  <tamar.christina@arm.com>
3857
3858         PR target/82641
3859         * config/arm/arm.c (INCLUDE_STRING): Define.
3860         (arm_last_printed_arch_string, arm_last_printed_fpu_string): New.
3861         (arm_declare_function_name): Conservatively emit .arch, .arch_extensions
3862         and .fpu.
3863
3864 2017-12-07  Michael Matz  <matz@suse.de>
3865
3866         Add unroll and jam pass
3867
3868         * gimple-loop-jam.c: New file.
3869         * Makefile.in (OBJS): Add gimple-loop-jam.o.
3870         * common.opt (funroll-and-jam): New option.
3871         * opts.c (default_options_table): Add unroll-and-jam at -O3.
3872         * params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param.
3873         (PARAM_UNROLL_JAM_MAX_UNROLL): Ditto.
3874         * passes.def: Add pass_loop_jam.
3875         * timevar.def (TV_LOOP_JAM): Add.
3876         * tree-pass.h (make_pass_loop_jam): Declare.
3877         * cfgloop.c (flow_loop_tree_node_add): Add AT argument.
3878         * cfgloop.h (flow_loop_tree_node_add): Adjust declaration.
3879         * cfgloopmanip.c (duplicate_loop): Add AT argument, adjust call
3880         to flow_loop_tree_node_add.
3881         (duplicate_subloops, copy_loops_to): Append to sibling list.
3882         * cfgloopmanip.h: (duplicate_loop): Adjust declaration.
3883         * doc/invoke.texi (-funroll-and-jam): Document new option.
3884         (unroll-jam-min-percent, unroll-jam-max-unroll): Document new params.
3885
3886 2017-12-07  Richard Biener  <rguenther@suse.de>
3887
3888         PR tree-optimization/83296
3889         PR tree-optimization/67769
3890         * tree-ssa-phiopt.c (conditional_replacement): Do not reset
3891         flow sensitive info in an unrelated BB.
3892         (value_replacement): Use reset_flow_sensitive_info.
3893         (minmax_replacement): Reset flow sensitive info on the def
3894         we move.  Do not reset flow sensitive info in the whole BB
3895         we move the stmt to.
3896         (abs_replacement): Likewise.
3897
3898 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
3899
3900         PR target/43871
3901         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
3902         rs6000_cpu to the given -mcpu=, or to the default processor.
3903
3904 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
3905
3906         * config/rs6000/rs6000.h (rs6000_cpu_attr): Delete.
3907         * config/rs6000/rs6000.c (rs6000_variable_issue_1): Use rs6000_tune
3908         instead of rs6000_cpu_attr.
3909         (rs6000_adjust_cost): Ditto.
3910         (is_microcoded_insn): Ditto.
3911         (rs6000_adjust_priority): Ditto.
3912         (rs6000_issue_rate): Ditto.
3913         (rs6000_use_sched_lookahead): Ditto.
3914         (rs6000_use_sched_lookahead_guard): Ditto.
3915         (rs6000_sched_reorder): Ditto.
3916         (force_new_group): Ditto.
3917         * config/rs6000/rs6000.md (cpu attribute): Ditto.
3918         (group_ending_nop): Ditto.
3919
3920 2017-12-07  Segher Boessenkool  <segher@kernel.crashing.org>
3921
3922         * config/rs6000/rs6000.opt (rs6000_tune): New variable.
3923         * config/rs6000/rs6000.c (rs6000_option_override_internal): Also set
3924         rs6000_tune.  Use rs6000_tune instead of rs6000_cpu where appropriate.
3925         (rs6000_loop_align): Use rs6000_tune instead of rs6000_cpu where
3926         appropriate.
3927         (rs6000_reassociation_width): Ditto.
3928         (rs6000_emit_epilogue): Ditto.
3929         (rs6000_adjust_cost): Ditto.
3930         (is_microcoded_insn): Ditto.
3931         (is_cracked_insn): Ditto.
3932         (rs6000_adjust_priority): Ditto.
3933         (rs6000_sched_reorder): Ditto.
3934         (rs6000_sched_reorder2): Ditto.
3935         (insn_must_be_first_in_group): Ditto.
3936         (insn_must_be_last_in_group): Ditto.
3937         (rs6000_register_move_cost): Ditto.
3938         * config/rs6000/rs6000.h (rs6000_cpu_attr): Use rs6000_tune instead of
3939         rs6000_cpu.
3940
3941 2017-12-07  Julia Koval  <julia.koval@intel.com>
3942
3943         * config.gcc: Add vaesintrin.h.
3944         * config/i386/i386-builtin-types.def (V64QI_FTYPE_V64QI_V64QI):
3945         New type.
3946         * config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
3947         __builtin_ia32_vaesdec_v32qi, __builtin_ia32_vaesdec_v64qi):
3948         New builtins.
3949         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
3950         * config/i386/immintrin.h: Include vaesintrin.h.
3951         * config/i386/sse.md (vaesdec_<mode>): New pattern.
3952         * config/i386/vaesintrin.h (_mm256_aesdec_epi128, _mm512_aesdec_epi128,
3953         _mm_aesdec_epi128): New intrinsics.
3954
3955 2017-12-06  David Malcolm  <dmalcolm@redhat.com>
3956
3957         * Makefile.in (C_COMMON_OBJS): Add c-family/c-spellcheck.o.
3958         * spellcheck-tree.c (find_closest_macro_cpp_cb): Move to
3959         c-family/c-spellcheck.cc.
3960         (best_macro_match::best_macro_match): Likewise.
3961         * spellcheck-tree.h
3962         (struct edit_distance_traits<cpp_hashnode *>): Move to
3963         c-family/c-spellcheck.h.
3964         (class best_macro_match): Likewise.
3965
3966 2017-12-06  Jakub Jelinek  <jakub@redhat.com>
3967
3968         PR tree-optimization/83293
3969         * gimple-ssa-strength-reduction.c (insert_initializers): Use
3970         GSI_NEW_STMT instead of GSI_SAME_STMT in gsi_insert_after that
3971         might insert into empty bb.
3972
3973         PR sanitizer/81281
3974         * match.pd ((T)(P + A) - (T)P -> (T) A): Split into separate
3975         simplify for plus with :c added, and pointer_plus without that.
3976         ((T)P - (T)(P + A) -> -(T) A): Likewise.  If type is integral
3977         with undefined overflow and the conversion is not widening,
3978         perform negation in utype and only convert to type afterwards.
3979         ((T)(P + A) - (T)(P + B) -> (T)A - (T)B): Split into separate
3980         simplify for plus with :c added, and pointer_plus without that.
3981         If type is integral with undefined overflow and the conversion is
3982         not widening, perform minus in utype and only convert to type
3983         afterwards.  Move the last pointer_diff_expr simplify into the
3984         two outermost ifs.
3985
3986 2017-12-06  Martin Sebor  <msebor@redhat.com>
3987
3988         PR tree-optimization/82646
3989         * builtins.c (maybe_emit_chk_warning): Use size as the bound for
3990         strncpy, not maxlen.
3991
3992 2017-12-06  Martin Sebor  <msebor@redhat.com>
3993
3994         * doc/invoke.texi (-Wstringop-truncation): Mention attribute
3995         nonstring.
3996
3997         PR tree-optimization/83075
3998         * tree-ssa-strlen.c (handle_builtin_stxncpy): Avoid assuming
3999         strncat/strncpy don't change length of source string.
4000
4001 2017-12-06  Eric Botcazou  <ebotcazou@adacore.com>
4002
4003         Revert
4004         2017-11-29  Martin Aberg  <maberg@gaisler.com>
4005
4006         * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
4007         to prevent b2bst errata sequence.
4008         (sqrtdf2_fix): Likewise.
4009
4010 2017-12-06  Jakub Jelinek  <jakub@redhat.com>
4011
4012         PR tree-optimization/81945
4013         * cfgloop.h (FOR_EACH_LOOP_FN): Use FN instead of hardcoding fn.
4014         * tree-cfg.c (move_sese_region_to_fn): If any of the loops moved
4015         to dest_cfun has orig_loop_num set, either remap it to the new
4016         loop number if the loop got moved too, or clear it.
4017
4018 2017-12-05  Steve Ellcey  <sellcey@cavium.com>
4019
4020         * config/aarch64/thunderx2-t99.md (thunderx2t99_branch): Add trap
4021         to reservation.
4022         (thunderx2t99_nothing): New insn reservation.
4023         (thunderx2t99_mrs): New insn reservation.
4024         (thunderx2t99_multiple): New insn reservation.
4025         (thunderx2t99_alu_basi): Add bfx to reservation.
4026         (thunderx2t99_fp_cmp): Add fccmps and fccmpd to reservation.
4027
4028 2017-12-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4029
4030         PR target/82248
4031         * config/arm/arm.md (probe_stack) : Use the 'o' constraint.
4032
4033 2017-12-05  Bin Cheng  <bin.cheng@arm.com>
4034
4035         * tree-ssa-dce.c (simple_dce_from_worklist): Move and rename from
4036         tree-ssa-pre.c::remove_dead_inserted_code.
4037         * tree-ssa-dce.h: New file.
4038         * tree-ssa-pre.c (tree-ssa-dce.h): Include new header file.
4039         (remove_dead_inserted_code): Move and rename to function
4040         tree-ssa-dce.c::simple_dce_from_worklist.
4041         (pass_pre::execute): Update use.
4042
4043 2017-12-05  Richard Biener  <rguenther@suse.de>
4044
4045         PR tree-optimization/83277
4046         * graphite-isl-ast-to-gimple.c (should_copy_to_new_region): Make sure
4047         to code-gen liveout vars.
4048
4049 2017-12-05  Richard Sandiford  <richard.sandiford@linaro.org>
4050
4051         * config/aarch64/aarch64-simd.md (aarch64_simd_bsldi_internal)
4052         (aarch64_simd_bsldi_alt): Check REG_P before GP_REGNUM_P.
4053         (aarch64_cm<optab>di, aarch64_cmtstdi): Add leading "&&" to
4054         split condition.
4055
4056 2017-12-05  Max Filippov  <jcmvbkbc@gmail.com>
4057
4058         * config/xtensa/xtensa.c (xtensa_asan_shadow_offset): New
4059         function.
4060         (TARGET_ASAN_SHADOW_OFFSET): New macro definition.
4061         * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): Set to 1 if
4062         ASAN is enabled.
4063
4064 2017-12-05  Richard Biener  <rguenther@suse.de>
4065
4066         * timevar.def (TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_WIDEN_MUL): Add.
4067         * tree-ssa-math-opts.c (pass_data_cse_reciprocal): Use TV_TREE_RECIP.
4068         (pass_data_cse_sincos): Use TV_TREE_SINCOS.
4069         (pass_data_optimize_widening_mul): Use TV_TREE_WIDEN_MUL.
4070
4071 2017-12-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
4072
4073         * dbxout.c (dbxout_block): Grow buf to 30 bytes.
4074
4075 2017-12-05  Martin Liska  <mliska@suse.cz>
4076             Jakub Jelinek  <jakub@redhat.com>
4077
4078         * doc/invoke.texi: Document the options.
4079         * flag-types.h (enum sanitize_code): Add
4080         SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
4081         * ipa-inline.c (sanitize_attrs_match_for_inline_p): Add handling
4082         of SANITIZE_POINTER_COMPARE and SANITIZE_POINTER_SUBTRACT.
4083         * opts.c: Define new sanitizer options.
4084         * sanitizer.def (BUILT_IN_ASAN_POINTER_COMPARE): Likewise.
4085         (BUILT_IN_ASAN_POINTER_SUBTRACT): Likewise.
4086
4087 2017-12-05  Julia Koval  <julia.koval@intel.com>
4088
4089         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VNNI_SET,
4090         OPTION_MASK_ISA_AVX512VNNI_UNSET): New.
4091         (ix86_handle_option): Handle -mavx512vnni.
4092         * config/i386/cpuid.h (bit_AVX512VNNI): New bit.
4093         * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
4094         * config/i386/i386-c (__AVX512VNNI__): New.
4095         * config/i386/i386.c (ix86_target_string): Handle new option.
4096         (ix86_valid_target_attribute_inner_p): Handle new option.
4097         * config/i386/i386.h (TARGET_AVX512VNNI, TARGET_AVX512VNNI_P): New.
4098         * config/i386/i386.opt (mavx512vnni): New option.
4099
4100 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
4101
4102         PR target/81616
4103         * athlon.md: Disable for generic.
4104         * haswell.md: Enable for generic.
4105         * i386.c (ix86_sched_init_global): Add core hooks for generic.
4106         * x86-tune-sched.c (ix86_issue_rate): Increase issue rate for generic
4107         to 4.
4108         (ix86_adjust_cost): Move generic to haswell path.
4109
4110 2017-12-04  Eric Botcazou  <ebotcazou@adacore.com>
4111
4112         * config/sparc/sparc.c (sparc_do_work_around_errata): Use mem_ref
4113         instead of MEM_P in a couple more places.  Fix formatting issues.
4114
4115 2017-12-04  Jim Wilson  <jimw@sifive.com>
4116
4117         * config/riscv/riscv.c (riscv_for_each_saved_reg): Use GP_REG_LAST
4118         instead of GP_REG_LAST-1.
4119         (riscv_adjust_libcall_cfi_prologue): Likewise.
4120         (riscv_adjust_libcall_cri_epilogue): Likewise.
4121         * config/riscv/riscv.h (CALL_USED_REGISTERS): Change a6 to t6 in
4122         comment.
4123
4124 2017-12-04  Luis Machado  <luis.machado@linaro.org>
4125
4126         * ipa-pure-const.c (check_decl): Add missing newline.
4127         (state_from_flags): Likewise.
4128
4129 2017-12-04  Jeff Law  <law@redhat.com>
4130
4131         PR tree-optimizatin/78496
4132         * gimple-ssa-evrp-analyze.h
4133         (evrp_range_analyzer::get_vr_values): Simplify.
4134         * gimple-ssa-evrp-analyze.c: Corresponding changes.
4135         * tree-ssa-dom.c: Include alloc-pool.h, tree-vrp.h, vr-values.h
4136         and gimple-ssa-evrp-analyze.h.
4137         (dom_opt_dom_walker class): Add evrp_range_analyzer member.
4138         (simplify_stmt_for_jump_threading): Copy a blob of code from
4139         tree-vrp.c to use ranges to simplify statements.
4140         (dom_opt_dom_walker::before_dom_children): Call
4141         evrp_range_analyzer::{enter,record_ranges_from_stmt} methods.
4142         (dom_opt_dom_walker::after_dom_children): Similarly for
4143         evrp_range_analyzer::leave.
4144         (dom_opt_dom_walker::optimize_stmt): Use EVRP ranges to optimize
4145         conditionals.
4146
4147         * gimple-ssa-evrp-analyze.c
4148         (evrp_range_analyzer::extract_range_from_stmt):  Always use
4149         vr_values::update_value_range so preexisting range info is
4150         medged with new range info, even if the new range is VR_VARYING.
4151
4152 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
4153
4154         * combine.c: Adjust comment.
4155         (use_crosses_set_p): Delete.
4156         (can_combine_p): Use modified_between_p instead of use_crosses_set_p.
4157         (try_combine): Ditto.
4158
4159 2017-12-04  Richard Biener  <rguenther@suse.de>
4160
4161         PR tree-optimization/83255
4162         * graphite-isl-ast-to-gimple.c (translate_isl_ast_node_for):
4163         Re-add zero-iteration check.
4164
4165 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
4166
4167         PR rtl-optimization/83245
4168         * lra.c (collect_non_operand_hard_regs): Treat clobbers of non-operand
4169         hard registers as earlyclobber, also if not in an asm.
4170
4171 2017-12-04  Segher Boessenkool  <segher@kernel.crashing.org>
4172
4173         PR bootstrap/83265
4174         Revert
4175         2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
4176
4177         PR target/43871
4178         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
4179         rs6000_cpu based on cpu_index, not tune_index.
4180
4181 2017-12-04  Richard Biener  <rguenther@suse.de>
4182
4183         PR tree-optimization/83238
4184         * graphite-scop-detection.c (scop_detection::merge_sese): Make
4185         code match comment, rejecting invalid SESE regions.
4186
4187 2017-12-03  John David Anglin  <danglin@gcc.gnu.org>
4188
4189         * config/pa/pa.c (pa_legitimate_address_p): For scaled indexing,
4190         require base operand is a REG_POINTER prior to reload on targets
4191         with non-equivalent space registers.
4192
4193 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
4194
4195         * ipa-cp.c (ipcp_lattice<valtype>::print): Update dumping.
4196         (update_specialized_profile): Fix updating of counts.
4197         (perhaps_add_new_callers): Likewise.
4198
4199 2017-12-01  Jan Hubicka  <hubicka@ucw.cz>
4200
4201         PR target/81616
4202         * x86-tune.def: Remove obsolette FIXMEs.
4203         (X86_TUNE_PARTIAL_FLAG_REG_STALL): Disable for generic
4204         (X86_TUNE_FUSE_CMP_AND_BRANCH_32, X86_TUNE_FUSE_CMP_AND_BRANCH_64,
4205         X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, X86_TUNE_FUSE_ALU_AND_BRANCH):
4206         Enable for generic.
4207         (X86_TUNE_PAD_RETURNS): Disable for generic.
4208
4209 2017-12-02  Jakub Jelinek  <jakub@redhat.com>
4210
4211         PR tree-optimization/83170
4212         PR tree-optimization/83241
4213         * gimple-ssa-store-merging.c
4214         (imm_store_chain_info::try_coalesce_bswap): Update vuse field from
4215         gimple_vuse (ins_stmt) in case it has changed.
4216         (imm_store_chain_info::output_merged_store): Likewise.
4217
4218         * tree-chkp.c (chkp_compute_bounds_for_assignment): Handle
4219         POINTER_DIFF_EXPR.
4220
4221         PR c++/81212
4222         * tree-cfg.c (pass_warn_function_return::execute): Handle
4223         __builtin_ubsan_handle_missing_return like __builtin_unreachable
4224         with BUILTINS_LOCATION.
4225
4226         PR target/78643
4227         PR target/80583
4228         * expr.c (get_inner_reference): If DECL_MODE of a non-bitfield
4229         is BLKmode for vector field with vector raw mode, use TYPE_MODE
4230         instead of DECL_MODE.
4231
4232         * config/i386/i386-protos.h (standard_sse_constant_opcode): Change
4233         last argument to rtx pointer.
4234         * config/i386/i386.c (standard_sse_constant_opcode): Replace X argument
4235         with OPERANDS.  For AVX+ 128-bit VEX encoded instructions over 256-bit
4236         or 512-bit.  If setting EXT_REX_SSE_REG_P, use EVEX encoded insn
4237         depending on the chosen ISAs.
4238         * config/i386/i386.md (*movxi_internal_avx512f, *movoi_internal_avx,
4239         *movti_internal, *movdi_internal, *movsi_internal, *movtf_internal,
4240         *movdf_internal, *movsf_internal): Adjust standard_sse_constant_opcode
4241         callers.
4242         * config/i386/sse.md (mov<mode>_internal): Likewise.
4243         * config/i386/mmx.md (*mov<mode>_internal): Likewise.
4244
4245 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
4246
4247         * doc/invoke.texi (-dp): Say that instruction cost is printed as well.
4248
4249 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
4250
4251         * config/rs6000/rs6000-protos.h (emit_fusion_addis): Remove last two
4252         parameters from prototype.
4253         * config/rs6000/rs6000.c (emit_fusion_addis): Remove last two
4254         parameters.  Don't print a comment.
4255         (emit_fusion_gpr_load): Adjust.
4256         (emit_fusion_load_store): Adjust.
4257         * config/rs6000/rs6000.md (*fusion_p9_<mode>_constant): Adjust.
4258         * config/rs6000/vsx.md (two peepholes): Print the "vector load fusion"
4259         comment on the second line.
4260
4261 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
4262
4263         PR target/43871
4264         * config/rs6000/rs6000.c (rs6000_option_override_internal): Set
4265         rs6000_cpu based on cpu_index, not tune_index.
4266
4267 2017-12-01  Segher Boessenkool  <segher@kernel.crashing.org>
4268
4269         * final.c (output_asm_name): Print insn_cost.  Shorten output.  Print
4270         which_alternative instead of which_alternative + 1.
4271         (output_asm_insn): Print an extra tab if the template is short.
4272
4273 2017-12-01  Jim Wilson  <jimw@sifive.com>
4274
4275         * common.opt (use_gnu_debug_info_extensions): Delete DWARF_DEBUG from
4276         comment.
4277         * config/vx-common.h (DWARF_DEBUGGING_INFO): Delete undef.
4278         * doc/tm.texi.in (PREFERRED_DEBUGGING_TYPE): Delete DWARF_DEBUG
4279         reference.
4280         * doc/tm.texi: Regenerate.
4281
4282 2017-12-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
4283
4284         PR target/81959
4285         * config/rs6000/rs6000.c (rs6000_address_for_fpconvert): Check for
4286         whether we can allocate pseudos before trying to fix an address.
4287         * config/rs6000/rs6000.md (float_<mode>si2_hw): Make sure the
4288         memory address is indexed or indirect.
4289         (floatuns_<mode>si2_hw2): Likewise.
4290
4291 2017-12-01  Jason Merrill  <jason@redhat.com>
4292
4293         * Makefile.in (TAGS): Add c-family/*.cc.
4294
4295 2017-12-01  Wilco Dijkstra  <wdijkstr@arm.com>
4296
4297         * config/aarch64/aarch64.md (call_insn): Use %c rather than %a.
4298         (call_value_insn): Likewise.
4299         (sibcall_insn): Likewise.
4300         (sibcall_value_insn): Likewise.
4301         (movsi_aarch64): Likewise.
4302         (movdi_aarch64): Likewise.
4303         (add_losym_): Likewise.
4304         (ldr_got_small_): Likewise.
4305         (ldr_got_small_sidi): Likewise.
4306         (ldr_got_small_28k_): Likewise.
4307         (ldr_got_small_28k_sidi): Likewise.
4308         * config/aarch64/aarch64.c (aarch64_print_address_internal):
4309         Move output_addr_const to symbolic case. Add error check.
4310
4311 2017-12-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
4312
4313         * config/s390/predicates.md (plus16_Q_operand): New predicate.
4314         * config/s390/s390.md: Disable MVC merging peephole if it would
4315         disable operand forwarding.
4316         (new peephole2): Split MVCs if it would turn them into up to 2
4317         forwardable MVCs.
4318
4319 2017-12-01  Richard Biener  <rguenther@suse.de>
4320
4321         PR tree-optimization/83232
4322         * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Fix
4323         detection of same access. Instead of breaking the group here
4324         do not consider the duplicate.  Add comment explaining real fix.
4325
4326 2017-12-01  Jonathan Wakely  <jwakely@redhat.com>
4327
4328         * doc/md.texi (Insn Splitting): Fix "central flowgraph" typo.
4329
4330 2017-12-01  Sudakshina Das  <sudi.das@arm.com>
4331
4332         * config/arm/vfp.md (*movhf_vfp_fp16): Add conds attribute.
4333
4334 2017-12-01  Jakub Jelinek  <jakub@redhat.com>
4335
4336         * function.h (struct function): Remove cilk_frame_decl,
4337         is_cilk_function and calls_cilk_spawn fields.
4338         * tree-inline.h (struct copy_body_data): Remove remap_var_for_cilk
4339         field.
4340         * omp-simd-clone.c (simd_clone_clauses_extract): Don't clear
4341         cilk_elemental field.
4342         * cgraph.h (struct cgraph_simd_clone): Remove cilk_elemental field.
4343         * target.def: Adjust comment.
4344         * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen):
4345         Don't test cilk_elemental.
4346
4347         PR tree-optimization/83233
4348         * gimple-ssa-store-merging.c (nop_stats, bswap_stats): Use
4349         bswap_stat name for the struct.
4350
4351         PR c/79153
4352         * tree.h (SWITCH_BREAK_LABEL_P): Define.
4353         * gimplify.c (collect_fallthrough_labels): Handle GIMPLE_BIND
4354         starting with a GIMPLE_SWITCH and ending with GIMPLE_LABEL with
4355         SWITCH_BREAK_LABEL_P set on the label.
4356         (gimplify_switch_expr): Set SWITCH_BREAK_LABEL_P on the label
4357         added for default case if it was missing and not all cases covered.
4358         Wrap GIMPLE_SWITCH and the switch_body_seq into a GIMPLE_BIND if
4359         switch_body_seq ends with a GIMPLE_LABEL with SWITCH_BREAK_LABEL_P
4360         set on the label.
4361         * tree-chrec.c (evolution_function_is_univariate_p): Add return true;
4362         to avoid -Wimplicit-fallthrough warning.
4363         * config/i386/i386.c (ix86_expand_special_args_builtin): Add
4364         FALLTHRU comment to avoid -Wimplicit-fallthrough warning.
4365
4366         PR tree-optimization/83221
4367         * tree-ssa-reassoc.c (sort_by_operand_rank): Shift bb_rank
4368         down by 16.
4369         (init_reassoc): Formatting fix.
4370
4371         PR sanitizer/81275
4372         * tree-cfg.c (group_case_labels_stmt): Don't optimize away
4373         C++ FE implicitly added __builtin_unreachable () until -Wreturn-type
4374         is diagnosed.
4375
4376         PR sanitizer/83219
4377         * tree-cfg.c: Include asan.h.
4378         (gimple_seq_unreachable_p): Return false for -fsanitize=unreachable.
4379
4380 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4381
4382         * config/i386/i386.md: Fix AVX512 register width in AVX512 instruction.
4383
4384 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4385
4386         * config/i386/i386.c (standard_sse_constant_opcode): Fix wrong form for
4387         vpcmpeqd instruction.
4388
4389 2017-12-01  Sergey Shalnov  <Sergey.Shalnov@intel.com>
4390
4391         * config/i386/i386.c (standard_sse_constant_opcode): Fix
4392         registers type for 128bit mode.
4393
4394 2017-11-30  Jakub Jelinek  <jakub@redhat.com>
4395
4396         * spellcheck-tree.c (test_find_closest_identifier): Use ; instead
4397         of ;;.
4398         * gengtype-state.c (read_state_pair): Likewise.
4399         * gimple-fold.c (gimple_fold_builtin_string_compare): Likewise.
4400         * sel-sched-dump.c (dump_insn_rtx_1): Likewise.
4401         * ipa-cp.c (intersect_aggregates_with_edge): Likewise.
4402         * ifcvt.c (noce_try_store_flag_constants): Likewise.
4403         * tree-ssa-ccp.c (ccp_finalize): Likewise.
4404         * omp-grid.c (grid_process_kernel_body_copy): Likewise.
4405         * builtins.c (fold_builtin_3): Likewise.
4406         * graphite-scop-detection.c
4407         (scop_detection::stmt_has_simple_data_refs_p): Likewise.
4408         * hsa-gen.c (hsa_function_representation::hsa_function_representation):
4409         Likewise.
4410
4411 2017-12-01  Maxim Ostapenko  <m.ostapenko@samsung.com>
4412
4413         PR sanitizer/81697
4414         * asan.c (asan_protect_global): Add new ignore_decl_rtl_set_p
4415         parameter. Return true if ignore_decl_rtl_set_p is true and other
4416         conditions are satisfied.
4417         * asan.h (asan_protect_global): Add new parameter.
4418         * varasm.c (categorize_decl_for_section): Pass true as second parameter
4419         to asan_protect_global calls.
4420
4421 2017-11-30  Jim Wilson  <jimw@sifive.com>
4422
4423         * doc/invoke.texi (RISC-V Options): Delete nonexistent -mmemcpy and
4424         -mno-memcpy options.  For -mplt, -mfdiv, -mdiv, -msave-restore, and
4425         -mstrict-align, add info on default value.  Delete redundant lines for
4426         -mabi.  Add missing -mexplicit-relocs docs.
4427
4428 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
4429
4430         * config/arc/arc.md (trap): New pattern.
4431
4432 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
4433
4434         * config/arc/arc.c (hwloop_optimize): Prevent the last ZOL
4435         instruction to end into a delay slot.
4436         * config/arc/arc.md (cond_delay_insn): Check if the instruction
4437         can be placed into a delay slot against reg_note.
4438
4439 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
4440
4441         * config/arc/arc.c (hwloop_optimize): Update hw-loop's end/start
4442         labels number of usages.
4443
4444 2017-11-30  Claudiu Zissulescu  <claziss@synopsys.com>
4445
4446         * config/arc/arc.c (arc_cannot_substitue_mem_equiv_p): New
4447         function.
4448         (TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P): Define.
4449
4450 2017-11-30  Jakub Jelinek  <jakub@redhat.com>
4451
4452         PR target/83210
4453         * internal-fn.c (expand_mul_overflow): Optimize unsigned
4454         multiplication by power of 2 constant into two shifts + comparison.
4455
4456 2017-11-30  Jan Hubicka  <hubicka@ucw.cz>
4457
4458         PR target/81616
4459         * config/i386/x86-tune-costs.h (generic_cost): Revise for modern CPUs.
4460
4461 2017-11-30  Richard Biener  <rguenther@suse.de>
4462
4463         PR tree-optimization/83202
4464         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Add
4465         allow_peel argument and guard peeling.
4466         (canonicalize_loop_induction_variables): Likewise.
4467         (canonicalize_induction_variables): Pass false.
4468         (tree_unroll_loops_completely_1): Pass unroll_outer to disallow
4469         peeling from cunrolli.
4470
4471 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
4472
4473         * combine.c (try_combine): Print a message to dump file whenever
4474         I0, I1, or I2 cannot be combined into I3.
4475
4476 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
4477
4478         PR rtl-optimization/83156
4479         PR rtl-optimization/82621
4480         * combine.c (try_combine): Don't split an I2 if one of the dests is
4481         set again before I3.  Allow unused dests.
4482
4483 2017-11-29  Segher Boessenkool  <segher@kernel.crashing.org>
4484
4485         * config/rs6000/rs6000.md (*add<mode>3_carry_in_internal2): New.
4486
4487 2017-11-29  Vladimir Makarov  <vmakarov@redhat.com>
4488
4489         PR rtl-optimization/80818
4490         * lra.c (collect_non_operand_hard_regs): New arg insn.  Pass it
4491         recursively.  Use insn code for clobber.
4492         (lra_set_insn_recog_data): Pass the new arg to
4493         collect_non_operand_hard_regs.
4494         (add_regs_to_insn_regno_info): Pass insn instead of uid.  Use insn
4495         code for clobber.
4496         (lra_update_insn_regno_info): Pass insn to
4497         add_regs_to_insn_regno_info.
4498
4499 2017-11-29  Jim Wilson  <jimw@sifive.com>
4500             Andrew Waterman  <andrew@sifive.com>
4501
4502         * config/riscv/riscv.c (SINGLE_SHIFT_COST): New.
4503         (riscv_rtx_costs): Case ZERO_EXTRACT, match new pattern, and return
4504         SINGLE_SHIFT_COST.  Case LT and ZERO_EXTEND, likewise.  Case ASHIFT,
4505         use SINGLE_SHIFT_COST.
4506         * config/riscv/riscv.md (lshrsi3_zero_extend_1): New.
4507         (lshrsi3_zero_extend_2, lshrsi3_zero_extend_3): New.
4508
4509 2017-11-29  Julia Koval  <julia.koval@intel.com>
4510
4511         * config/i386/avx512vbmi2intrin.h (_mm512_shldv_epi16,
4512         _mm512_mask_shldv_epi16, _mm512_maskz_shldv_epi16, _mm512_shldv_epi32,
4513         _mm512_mask_shldv_epi32, _mm512_maskz_shldv_epi32, _mm512_shldv_epi64,
4514         _mm512_mask_shldv_epi64, _mm512_maskz_shldv_epi64): New intrinsics.
4515         * config/i386/avx512vbmi2vlintrin.h (_mm256_shldv_epi16,
4516         _mm256_mask_shldv_epi16, _mm256_maskz_shldv_epi16, _mm256_shldv_epi32,
4517         _mm256_mask_shldv_epi32, _mm256_maskz_shldv_epi32, _mm256_shldv_epi64,
4518         _mm256_mask_shldv_epi64, _mm256_maskz_shldv_epi64, _mm_shldv_epi16,
4519         _mm_mask_shldv_epi16, _mm_maskz_shldv_epi16, _mm_shldv_epi32,
4520         _mm_mask_shldv_epi32, _mm_maskz_shldv_epi32, _mm_shldv_epi64,
4521         _mm_mask_shldv_epi64, _mm_maskz_shldv_epi64): Ditto.
4522         * config/i386/i386-builtin.def (__builtin_ia32_vpshldv_v32hi,
4523         __builtin_ia32_vpshldv_v32hi_mask, __builtin_ia32_vpshldv_v32hi_maskz,
4524         __builtin_ia32_vpshldv_v16hi, __builtin_ia32_vpshldv_v16hi_mask,
4525         __builtin_ia32_vpshldv_v16hi_maskz, __builtin_ia32_vpshldv_v8hi,
4526         __builtin_ia32_vpshldv_v8hi_mask, __builtin_ia32_vpshldv_v8hi_maskz,
4527         __builtin_ia32_vpshldv_v16si, __builtin_ia32_vpshldv_v16si_mask,
4528         __builtin_ia32_vpshldv_v16si_maskz, __builtin_ia32_vpshldv_v8si,
4529         __builtin_ia32_vpshldv_v8si_mask, __builtin_ia32_vpshldv_v8si_maskz,
4530         __builtin_ia32_vpshldv_v4si, __builtin_ia32_vpshldv_v4si_mask,
4531         __builtin_ia32_vpshldv_v4si_maskz, __builtin_ia32_vpshldv_v8di,
4532         __builtin_ia32_vpshldv_v8di_mask, __builtin_ia32_vpshldv_v8di_maskz,
4533         __builtin_ia32_vpshldv_v4di, __builtin_ia32_vpshldv_v4di_mask,
4534         __builtin_ia32_vpshldv_v4di_maskz, __builtin_ia32_vpshldv_v2di,
4535         __builtin_ia32_vpshldv_v2di_mask,
4536         __builtin_ia32_vpshldv_v2di_maskz): New builtins.
4537         * config/i386/sse.md (vpshldv_<mode>, vpshldv_<mode>_mask,
4538         vpshldv_<mode>_maskz, vpshldv_<mode>_maskz_1): New patterns.
4539
4540 2017-11-29  Julia Koval  <julia.koval@intel.com>
4541
4542         * config/i386/avx512vbmi2intrin.h (_mm512_shrdv_epi16,
4543         _mm512_mask_shrdv_epi16, _mm512_maskz_shrdv_epi16, _mm512_shrdv_epi32,
4544         _mm512_mask_shrdv_epi32, _mm512_maskz_shrdv_epi32, _mm512_shrdv_epi64,
4545         _mm512_mask_shrdv_epi64, _mm512_maskz_shrdv_epi64): New intrinsics.
4546         * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdv_epi16,
4547         _mm256_mask_shrdv_epi16, _mm256_maskz_shrdv_epi16, _mm256_shrdv_epi32,
4548         _mm256_mask_shrdv_epi32, _mm256_maskz_shrdv_epi32, _mm256_shrdv_epi64,
4549         _mm256_mask_shrdv_epi64, _mm256_maskz_shrdv_epi64, _mm_shrdv_epi16,
4550         _mm_mask_shrdv_epi16, _mm_maskz_shrdv_epi16, _mm_shrdv_epi32,
4551         _mm_mask_shrdv_epi32, _mm_maskz_shrdv_epi32, _mm_shrdv_epi64,
4552         _mm_mask_shrdv_epi64, _mm_maskz_shrdv_epi64): Ditto.
4553         * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_V32HI,
4554         V32HI_FTYPE_V32HI_V32HI_V32HI_INT, V16HI_FTYPE_V16HI_V16HI_V16HI_INT,
4555         V8HI_FTYPE_V8HI_V8HI_V8HI_INT, V8SI_FTYPE_V8SI_V8SI_V8SI_INT,
4556         V4SI_FTYPE_V4SI_V4SI_V4SI_INT, V8DI_FTYPE_V8DI_V8DI_V8DI,
4557         V8DI_FTYPE_V8DI_V8DI_V8DI_INT, V4DI_FTYPE_V4DI_V4DI_V4DI_INT,
4558         V16SI_FTYPE_V16SI_V16SI_V16SI, V16SI_FTYPE_V16SI_V16SI_V16SI_INT,
4559         V2DI_FTYPE_V2DI_V2DI_V2DI_INT): New types.
4560         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
4561         * config/i386/sse.md (vpshrdv_<mode>, vpshrdv_<mode>_mask,
4562         vpshrdv_<mode>_maskz, vpshrdv_<mode>_maskz_1): New pattern.
4563
4564 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4565
4566         * config/sparc/sparc.c (sparc_do_work_around_errata): Treat the
4567         movsi_pic_gotdata_op instruction as a load for the UT699 errata
4568         workaround.
4569
4570 2017-11-29  Martin Aberg  <maberg@gaisler.com>
4571
4572         * config/sparc/sparc.md (divdf3_fix): Add NOP and adjust length
4573         to prevent b2bst errata sequence.
4574         (sqrtdf2_fix): Likewise.
4575
4576 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4577
4578         * config/sparc/sparc.c (fpop_reg_depend_p): New function.
4579         (div_sqrt_insn_p): New function.
4580         (sparc_do_work_around_errata): Insert NOP instructions to
4581         prevent sequences that could trigger the TN-0013 errata for
4582         certain LEON3 processors.
4583         (pass_work_around_errata::gate): Also test sparc_fix_lost_divsqrt.
4584         (sparc_option_override): Set sparc_fix_lost_divsqrt appropriately.
4585         * config/sparc/sparc.md (fix_lost_divsqrt): New attribute.
4586         (in_branch_delay): Prevent div and sqrt in delay slot if
4587         fix_lost_divsqrt.
4588         * config/sparc/sparc.opt (sparc_fix_lost_divsqrt): New variable.
4589
4590 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4591
4592         * config/sparc/sparc.c (atomic_insn_p): New function.
4593         (sparc_do_work_around_errata): Insert NOP instructions to
4594         prevent sequences that could trigger the TN-0010 errata for
4595         UT700.
4596         * config/sparc/sync.md (atomic_compare_and_swap_leon3_1): Make
4597         instruction referable in atomic_insns_p.
4598
4599 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4600
4601         * config/sparc/sync.md (swapsi): 16-byte align if sparc_fix_gr712rc.
4602         (atomic_compare_and_swap_leon3_1): Likewise.
4603         (ldstub): Likewise.
4604
4605 2017-11-29  Daniel Cederman  <cederman@gaisler.com>
4606
4607         * config/sparc/sparc.c (fpop_insn_p): New function.
4608         (sparc_do_work_around_errata): Insert NOP instructions to
4609         prevent sequences that could trigger the TN-0012 errata for
4610         GR712RC.
4611         (pass_work_around_errata::gate): Also test sparc_fix_gr712rc.
4612         * config/sparc/sparc.md (fix_gr712rc): New attribute.
4613         (in_branch_annul_delay): Prevent floating-point instructions
4614         in delay slot of annulled integer branch.
4615
4616 2017-11-29  Richard Biener  <rguenther@suse.de>
4617
4618         PR tree-optimization/83202
4619         * tree-vect-slp.c (scalar_stmts_set_t): New typedef.
4620         (bst_fail): Use it.
4621         (vect_analyze_slp_cost_1): Add visited set, do not account SLP
4622         nodes vectorized to the same stmts multiple times.
4623         (vect_analyze_slp_cost): Allocate a visited set and pass it down.
4624         (vect_analyze_slp_instance): Adjust.
4625         (scalar_stmts_to_slp_tree_map_t): New typedef.
4626         (vect_schedule_slp_instance): Add a map recording the SLP node
4627         representing the vectorized stmts for a set of scalar stmts.
4628         Avoid code-generating redundancies.
4629         (vect_schedule_slp): Allocate map and pass it down.
4630
4631 2017-11-29  Nathan Sidwell  <nathan@acm.org>
4632
4633         PR c++/83187
4634         * tree.c (build_complex_type): Fix canonicalization.  Only fill in
4635         type if it is new.
4636
4637 2017-11-29  Wilco Dijkstra  <wdijkstr@arm.com>
4638
4639         * config/aarch64/aarch64.c (aarch64_print_operand): Add new
4640         cases for printing LDP/STP memory addresses.
4641         (aarch64_print_address_internal): Renamed from
4642         aarch64_print_operand_address, added parameter, add Pmode check.
4643         (aarch64_print_ldpstp_address): New function for LDP/STP addresses.
4644         (aarch64_print_operand_address): Indirect to
4645         aarch64_print_address_internal.
4646         * config/aarch64/aarch64-simd.md (store_pair_lanes): Use new
4647         'y' operand output specifier.
4648
4649 2017-11-29  Jakub Jelinek  <jakub@redhat.com>
4650
4651         PR middle-end/83185
4652         * tree.c (build_simple_mem_ref_loc): Handle
4653         get_addr_base_and_unit_offset returning a MEM_REF.
4654
4655         PR middle-end/80929
4656         * rtlanal.c (seq_cost): For non-single_set insns try to use insn_cost.
4657
4658         PR target/80819
4659         * config/i386/sse.md (vec_concatv2di): Remove * from (=Yr,0,*rm)
4660         alternative.
4661
4662 2017-11-28  David Malcolm  <dmalcolm@redhat.com>
4663
4664         * diagnostic-show-locus.c (layout::print_trailing_fixits): Handle
4665         m_x_offset.
4666         (layout::move_to_column): Likewise.
4667
4668 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
4669
4670         PR sanitizer/81275
4671         * tree.c (block_may_fallthru): Return false if SWITCH_ALL_CASES_P
4672         is set on SWITCH_EXPR and !block_may_fallthru (SWITCH_BODY ()).
4673
4674 2017-11-28  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
4675             Martin Jambor  <mjambor@suse.cz>
4676
4677         PR ipa/82808
4678         * tree.h (expr_type_first_operand_type_p): Declare
4679         * tree.c (expr_type_first_operand_type_p): New function.
4680         * ipa-prop.h (ipa_get_type): Allow i to be out of bounds.
4681         (ipa_value_from_jfunc): Adjust declaration.
4682         * ipa-cp.c (ipa_get_jf_pass_through_result): New parameter RES_TYPE.
4683         Use it as result type for arithmetics, unless it is NULL in which case
4684         be more conservative.
4685         (ipa_value_from_jfunc): New parameter PARM_TYPE, pass it to
4686         ipa_get_jf_pass_through_result.
4687         (propagate_vals_across_pass_through): Likewise.
4688         (propagate_scalar_across_jump_function): New parameter PARM_TYPE, pass
4689         is to propagate_vals_across_pass_through.
4690         (propagate_constants_across_call): Pass PARM_TYPE to
4691         propagate_scalar_across_jump_function.
4692         (find_more_scalar_values_for_callers_subset): Pass parameter type to
4693         ipa_value_from_jfunc.
4694         (cgraph_edge_brings_all_scalars_for_node): Likewise.
4695         * ipa-fnsummary.c (evaluate_properties_for_edge): Renamed parms_info
4696         to caller_parms_info, pass parameter type to ipa_value_from_jfunc.
4697         * ipa-prop.c (try_make_edge_direct_simple_call): New parameter
4698         target_type, pass it to ipa_value_from_jfunc.
4699         (update_indirect_edges_after_inlining): Pass parameter type to
4700         try_make_edge_direct_simple_call.
4701
4702 2017-11-28  Jeff Law  <law@redhat.com>
4703
4704         * gimple-ssa-evrp-analyze.c
4705         (evrp_range_analyzer::record_ranges_from_phis): Only use SCEV to
4706         refine ranges if scev_initialized_p returns true.
4707         * vr-values.c (vr_values::extract_range_from_phi_node): Likewise.
4708
4709 2017-11-28  Julia Koval  <julia.koval@intel.com>
4710
4711         * config/i386/avx512vbmi2intrin.h (_mm512_shrdi_epi16,
4712         _mm512_mask_shrdi_epi16, _mm512_maskz_shrdi_epi16, _mm512_shrdi_epi32,
4713         _mm512_mask_shrdi_epi32, _mm512_maskz_shrdi_epi32, _mm512_shrdi_epi64,
4714         _mm512_mask_shrdi_epi64, _mm512_maskz_shrdi_epi64): New intrinsics.
4715         * config/i386/avx512vbmi2vlintrin.h (_mm256_shrdi_epi16,
4716         _mm256_mask_shrdi_epi16, _mm256_maskz_shrdi_epi16,
4717         _mm256_mask_shrdi_epi32, _mm256_maskz_shrdi_epi32, _mm256_shrdi_epi32,
4718         _mm256_mask_shrdi_epi64, _mm256_maskz_shrdi_epi64, _mm256_shrdi_epi64,
4719         _mm_mask_shrdi_epi16, _mm_maskz_shrdi_epi16, _mm_shrdi_epi16,
4720         _mm_mask_shrdi_epi32, _mm_maskz_shrdi_epi32, _mm_shrdi_epi32,
4721         _mm_mask_shrdi_epi64, _mm_maskz_shrdi_epi64, _mm_shrdi_epi64): Ditto.
4722         * config/i386/i386-builtin.def (__builtin_ia32_vpshrd_v32hi,
4723         __builtin_ia32_vpshrd_v32hi_mask, __builtin_ia32_vpshrd_v16hi,
4724         __builtin_ia32_vpshrd_v16hi_mask, __builtin_ia32_vpshrd_v8hi,
4725         __builtin_ia32_vpshrd_v8hi_mask, __builtin_ia32_vpshrd_v16si,
4726         __builtin_ia32_vpshrd_v16si_mask, __builtin_ia32_vpshrd_v8si,
4727         __builtin_ia32_vpshrd_v8si_mask, __builtin_ia32_vpshrd_v4si,
4728         __builtin_ia32_vpshrd_v4si_mask, __builtin_ia32_vpshrd_v8di,
4729         __builtin_ia32_vpshrd_v8di_mask, __builtin_ia32_vpshrd_v4di,
4730         __builtin_ia32_vpshrd_v4di_mask, __builtin_ia32_vpshrd_v2di,
4731         __builtin_ia32_vpshrd_v2di_mask): New builtins.
4732         * config/i386/sse.md (vpshrd_<mode><mask_name>): New pattern.
4733
4734 2017-11-28  Julia Koval  <julia.koval@intel.com>
4735
4736         * config/i386/avx512vbmi2intrin.h (_mm512_shldi_epi16,
4737         _mm512_mask_shldi_epi16, _mm512_maskz_shldi_epi16, _mm512_shldi_epi32,
4738         _mm512_mask_shldi_epi32, _mm512_maskz_shldi_epi32, _mm512_shldi_epi64,
4739         _mm512_mask_shldi_epi64, _mm512_maskz_shldi_epi64): New intrinsics.
4740         * config/i386/avx512vbmi2vlintrin.h (_mm256_shldi_epi16,
4741         _mm256_mask_shldi_epi16, _mm256_maskz_shldi_epi16,
4742         _mm256_mask_shldi_epi32, _mm256_maskz_shldi_epi32, _mm256_shldi_epi32,
4743         _mm256_mask_shldi_epi64, _mm256_maskz_shldi_epi64, _mm256_shldi_epi64,
4744         _mm_mask_shldi_epi16, _mm_maskz_shldi_epi16, _mm_shldi_epi16,
4745         _mm_mask_shldi_epi32, _mm_maskz_shldi_epi32, _mm_shldi_epi32,
4746         _mm_mask_shldi_epi64, _mm_maskz_shldi_epi64, _mm_shldi_epi64): Ditto.
4747         * config/i386/i386-builtin-types.def (V32HI_FTYPE_V32HI_V32HI_INT,
4748         V32HI_FTYPE_V32HI_V32HI_INT_V32HI_INT, V16SI_FTYPE_V16SI_V16SI_INT,
4749         V16SI_FTYPE_V16SI_V16SI_INT_V16SI_INT,
4750         V8DI_FTYPE_V8DI_V8DI_INT_V8DI_INT, V8SI_FTYPE_V8SI_V8SI_INT_V8SI_INT,
4751         V16HI_FTYPE_V16HI_V16HI_INT_V16HI_INT,
4752         V4DI_FTYPE_V4DI_V4DI_INT_V4DI_INT,
4753         V8HI_FTYPE_V8HI_V8HI_INT_V8HI_INT,
4754         V4SI_FTYPE_V4SI_V4SI_INT_V4SI_INT,
4755         V2DI_FTYPE_V2DI_V2DI_INT_V2DI_INT): New types.
4756         * config/i386/i386-builtin.def (__builtin_ia32_vpshld_v32hi,
4757         __builtin_ia32_vpshld_v32hi_mask, __builtin_ia32_vpshld_v16hi,
4758         __builtin_ia32_vpshld_v16hi_mask, __builtin_ia32_vpshld_v8hi,
4759         __builtin_ia32_vpshld_v8hi_mask, __builtin_ia32_vpshld_v16si,
4760         __builtin_ia32_vpshld_v16si_mask, __builtin_ia32_vpshld_v8si,
4761         __builtin_ia32_vpshld_v8si_mask, __builtin_ia32_vpshld_v4si,
4762         __builtin_ia32_vpshld_v4si_mask, __builtin_ia32_vpshld_v8di,
4763         __builtin_ia32_vpshld_v8di_mask, __builtin_ia32_vpshld_v4di,
4764         __builtin_ia32_vpshld_v4di_mask, __builtin_ia32_vpshld_v2di,
4765         __builtin_ia32_vpshld_v2di_mask): New builtins.
4766         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
4767         * config/i386/sse.md (vpshld_<mode><mask_name>): New pattern.
4768
4769 2017-11-28  Richard Biener  <rguenther@suse.de>
4770
4771         PR tree-optimization/80776
4772         * gimple-ssa-evrp-analyze.h (evrp_range_analyzer::set_ssa_range_info):
4773         Declare.
4774         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::set_ssa_range_info):
4775         New function.
4776         (evrp_range_analyzer::record_ranges_from_incoming_edges):
4777         If the incoming edge is an effective fallthru because the other
4778         edge only reaches a __builtin_unreachable () then record ranges
4779         derived from the controlling condition in SSA info.
4780         (evrp_range_analyzer::record_ranges_from_phis): Use set_ssa_range_info.
4781         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
4782
4783 2017-11-28  Olivier Hainque  <hainque@adacore.com>
4784
4785         * Makefile.in (SELFTEST_FLAGS): Use nul instead of /dev/null
4786         on mingw build hosts.
4787
4788 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
4789
4790         PR debug/81307
4791         * dbxout.c (dbx_block_with_cold_children): Fix function comment.
4792
4793 2017-11-28  Richard Biener  <rguenther@suse.de>
4794
4795         PR middle-end/83141
4796         * gimple-fold.c (gimple_fold_builtin_memory_op): For aggregate
4797         copies generated from memcpy use a character array as reference
4798         type.
4799
4800 2017-11-28  Julia Koval  <julia.koval@intel.com>
4801             Sebastian Peryt  <sebastian.peryt@intel.com>
4802
4803         * Makefile.in (cilkplus.def, cilk-builtins.def, c-family/cilk.o,
4804         c-family/c-cilkplus.o, c-family/array-notation-common.o,
4805         cilk-common.o, cilk.h, cilk-common.c): Remove.
4806         * builtin-types.def
4807         (BT_FN_INT_PTR_PTR_PTR_FTYPE_BT_INT_BT_PTR_BT_PTR_BT_PTR): Remove.
4808         * builtins.c (is_builtin_name): Remove cilkplus condition.
4809         (BUILT_IN_CILK_DETACH, BUILT_IN_CILK_POP_FRAME): Remove.
4810         * builtins.def (DEF_CILK_BUILTIN_STUB, DEF_CILKPLUS_BUILTIN,
4811         cilk-builtins.def, cilkplus.def): Remove.
4812         * cif-code.def (CILK_SPAWN): Remove.
4813         * cilk-builtins.def: Delete.
4814         * cilk-common.c: Ditto.
4815         * cilk.h: Ditto.
4816         * cilkplus.def: Ditto.
4817         * config/darwin.h (fcilkplus): Delete.
4818         * cppbuiltin.c: Ditto.
4819         * doc/extend.texi: Remove cilkplus doc.
4820         * doc/generic.texi: Ditto.
4821         * doc/invoke.texi: Ditto.
4822         * doc/passes.texi: Ditto.
4823         * gcc.c (fcilkplus): Remove.
4824         * gengtype.c (cilk.h): Remove.
4825         * gimple-pretty-print.c (dump_gimple_omp_for): Remove cilkplus
4826         support.
4827         * gimple.h (GF_OMP_FOR_KIND_CILKFOR, GF_OMP_FOR_KIND_CILKSIMD):
4828         Remove.
4829         * gimplify.c (gimplify_return_expr, maybe_fold_stmt,
4830         gimplify_call_expr,
4831         is_gimple_stmt, gimplify_modify_expr, gimplify_scan_omp_clauses,
4832         gimplify_adjust_omp_clauses, gimplify_omp_for, gimplify_expr): Remove
4833         cilkplus conditions.
4834         * ipa-fnsummary.c (ipa_dump_fn_summary, compute_fn_summary,
4835         inline_read_section): Ditto.
4836         * ipa-inline-analysis.c (cilk.h): Remove.
4837         * ira.c (ira_setup_eliminable_regset): Remove cilkplus support.
4838         * lto-wrapper.c (merge_and_complain, append_compiler_options,
4839         append_linker_options): Remove condition for fcilkplus.
4840         * lto/lto-lang.c (cilk.h): Remove.
4841         (lto_init): Remove condition for fcilkplus.
4842         * omp-expand.c (expand_cilk_for_call): Delete.
4843         (expand_omp_taskreg, expand_omp_for_static_chunk,
4844         expand_omp_for): Remove cilkplus
4845         conditions.
4846         (expand_cilk_for): Delete.
4847         * omp-general.c (omp_extract_for_data): Remove cilkplus support.
4848         * omp-low.c (scan_sharing_clauses, create_omp_child_function,
4849         execute_lower_omp, diagnose_sb_0): Ditto.
4850         * omp-simd-clone.c (simd_clone_clauses_extract): Ditto.
4851         * tree-core.h (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
4852         * tree-nested.c: Ditto.
4853         * tree-pretty-print.c (dump_omp_clause): Remove cilkplus support.
4854         (dump_generic_node): Ditto.
4855         * tree.c (OMP_CLAUSE__CILK_FOR_COUNT_): Delete.
4856         * tree.def (cilk_simd, cilk_for, cilk_spawn_stmt, cilk_sync_stmt):
4857         Delete.
4858         * tree.h (CILK_SPAWN_FN, EXPR_CILK_SPAWN): Delete.
4859
4860 2017-11-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
4861
4862         * config/aarch64/aarch64.md (div<mode>3): Change check to TARGET_FLOAT.
4863         * config/aarch64/aarch64.c (aarch64_emit_approx_div): Add early exit
4864         for vector mode and !TARGET_SIMD.
4865
4866 2017-11-28  Jakub Jelinek  <jakub@redhat.com>
4867
4868         * tree.def (SWITCH_EXPR): Change from 3 operand to 2 operand tree.
4869         Adjust comment.
4870         * tree.h (SWITCH_LABELS): Remove.
4871         * gimplify.c (gimplify_switch_expr): Don't test SWITCH_LABELS,
4872         assert SWITCH_BODY is non-NULL.
4873         * tree-pretty-print.c (dump_generic_node): Remove SWITCH_LABELS
4874         handling.
4875         * tree.c (block_may_fallthru): Always return true; for SWITCH_EXPR.
4876
4877         PR tree-optimization/80788
4878         * match.pd (X +- C1 CMP C2 -> X CMP C2 -+ C1): If res
4879         has TREE_OVERFLOW set, call drop_tree_overflow.
4880
4881 2017-11-28  Richard Biener  <rguenther@suse.de>
4882
4883         PR tree-optimization/83158
4884         * tree-vrp.c (intersect_ranges): Prefer ~[0, 0] in a few more cases.
4885
4886 2017-11-28  Segher Boessenkool  <segher@kernel.crashing.org>
4887
4888         PR 81288/target
4889         * config/rs6000/rs6000.c (rs6000_rtx_costs): Do not handle
4890         TARGET_ISEL && !TARGET_MFCRF differently.  Simplify code.
4891
4892 2017-11-27  Segher Boessenkool  <segher@kernel.crashing.org>
4893
4894         * config/rs6000/rs6000.md (<code><GPR:mode><GPR2:mode>2_isel): Change
4895         LT/GT/LTU/GTU to LE/GE/LEU/GEU where possible.
4896
4897 2017-11-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
4898
4899         PR middle_end/82333
4900         * varasm.c (compare_constant): Take the mode of the constants into
4901         account when comparing floating point constants.
4902
4903 2017-11-27  Gerald Pfeifer  <gerald@pfeifer.com>
4904
4905         * hash-set.h (DEFINE_DEBUG_HASH_SET): Remove static qualifier
4906         from explicit instantiation of debug_helper.
4907         * vec.h (DEFINE_DEBUG_VEC): Ditto.
4908
4909 2017-11-27  Richard Biener  <rguenther@suse.de>
4910
4911         * gimple-fold.c (gimple_fold_builtin_memory_op): Remove dead code,
4912         refactor a bit.
4913
4914 2017-11-27  Richard Biener  <rguenther@suse.de>
4915
4916         * tree.c (wide_int_to_tree): Free discarded INTEGER_CST.
4917         (type_hash_canon): Also clear int_cst_hash_table entry for
4918         TYPE_MIN/MAX_VALUE.
4919         (build_nonstandard_integer_type): Hash all TYPE_MAX_VALUEs.
4920
4921 2017-11-27  Tamar Christina  <tamar.christina@arm.com>
4922
4923         * doc/extend.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
4924         * doc/invoke.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
4925         * doc/sourcebuild.texi: Add -A suffix (ARMv8*-A, ARMv7-A).
4926
4927 2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
4928
4929         * hash-map.h (gt_cleare_cache): Avoid UB.
4930
4931 2017-11-27  Eric Botcazou  <ebotcazou@adacore.com>
4932
4933         * cfgloop.h (struct loop): Document usage of USHRT_MAX for unroll.
4934         * loop-unroll.c (decide_unroll_constant_iterations): Implement it.
4935         (decide_unroll_runtime_iterations): Likewise.
4936         (decide_unroll_stupid): Likewise.
4937
4938 2017-11-27  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
4939
4940         PR target/83109
4941         * config/i386/i386.md: Add a loop with incssp.
4942
4943 2017-11-27  Martin Jambor  <mjambor@suse.cz>
4944
4945         PR tree-optimization/81248
4946         * tree-sra.c (splice_param_accesses): Remove size check.
4947         (decide_one_param_reduction): Fix size check.
4948         * gimple-pretty-print.c (dump_profile): Silence warning.
4949         * params.def (PARAM_IPA_SRA_PTR_GROWTH_FACTOR): Adjust description.
4950
4951 2017-11-27  Jakub Jelinek  <jakub@redhat.com>
4952
4953         PR debug/81307
4954         * dbxout.c (lastlineno): New variable.
4955         (dbx_debug_hooks): Use dbxout_switch_text_section as
4956         switch_text_section debug hook.
4957         (dbxout_function_end): Switch to current_function_section
4958         rather than function_section.  If crtl->has_bb_partition,
4959         output just one N_FUN, depending on in_cold_section_p.
4960         (dbxout_source_line): Remember last lineno in lastlineno.
4961         (dbxout_switch_text_section): New function.
4962         (dbxout_function_decl): Adjust dbxout_block caller.
4963         (dbx_block_with_cold_children): New function.
4964         (dbxout_block): Return true if any LBRAC/RBRAC have been
4965         emitted.  Use dbx_block_with_cold_children at depth == 0
4966         in second partition.  Add PARENT_BLOCKNUM argument, pass
4967         it optionally adjusted to children.  Output LBRAC/RBRAC
4968         around recursive call only if the block is in the current
4969         partition, if not and anything was output, emit empty
4970         range LBRAC/RBRAC.
4971         * final.c (final_scan_insn): Compute cold_function_name
4972         before calling switch_text_section debug hook.  Call
4973         that hook even if dwarf2out_do_frame if not emitting
4974         dwarf debug info.
4975
4976         PR target/83100
4977         * varasm.c (bss_initializer_p): Return true for DECL_COMMON
4978         TREE_READONLY decls.
4979
4980 2017-11-27  Markus Trippelsdorf  <markus@trippelsdorf.de>
4981
4982         PR rtl-optimization/82488
4983         * expr.c (fixup_args_size_notes): Avoid signed integer overflow.
4984
4985 2017-11-26  Julia Koval  <julia.koval@intel.com>
4986
4987         * config/i386/i386.c (processor_target_table): Add skylake_cost for
4988         skylake-avx512.
4989         * config/i386/x86-tune-costs.h (skylake_memcpy, skylake_memset,
4990         skylake_cost): New.
4991
4992 2017-11-26  Julia Koval  <julia.koval@intel.com>
4993
4994         * config/i386/driver-i386.c (host_detect_local_cpu):
4995         Detect skylake-avx512.
4996
4997 2017-11-26  Julia Koval  <julia.koval@intel.com>
4998
4999         * config.gcc: Add -march=cannonlake.
5000         * config/i386/driver-i386.c (host_detect_local_cpu): Detect cannonlake.
5001         * config/i386/i386-c.c (ix86_target_macros_internal): Handle cannonlake.
5002         * config/i386/i386.c (processor_costs): Add m_CANNONLAKE.
5003         (PTA_CANNONLAKE): New.
5004         (processor_target_table): Add cannonlake.
5005         (ix86_option_override_internal): Ditto.
5006         (fold_builtin_cpu): Ditto.
5007         (get_builtin_code_for_version): Handle cannonlake.
5008         (M_INTEL_COREI7_CANNONLAKE): New.
5009         * config/i386/i386.h (TARGET_CANNONLAKE, PROCESSOR_CANNONLAKE): New.
5010         * doc/invoke.texi: Add -march=cannonlake.
5011
5012 2017-11-14  Boris Kolpackov  <boris@codesynthesis.com>
5013
5014         * plugin.c (add_new_plugin): Use platform-specific library extensions.
5015         (try_init_one_plugin): Alternative implementation for MinGW.
5016         * Makefile.in (plugin_implib): New.
5017         (gengtype-lex.c): Fix broken AIX workaround.
5018         * configure: Regenerate.
5019         * doc/plugins.texi: Document support for MinGW.
5020
5021 2017-11-25  Jakub Jelinek  <jakub@redhat.com>
5022
5023         PR rtl-optimization/81553
5024         * combine.c (simplify_if_then_else): In (if_then_else COND (OP Z C1) Z)
5025         to (OP Z (mult COND (C1 * STORE_FLAG_VALUE))) optimization, if OP
5026         is a shift where C1 has different mode than the whole shift, use C1's
5027         mode for MULT rather than the shift's mode.
5028
5029         PR target/82848
5030         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Don't fold
5031         builtins not enabled in the currently selected ISA.
5032
5033 2017-11-24  Jackson Woodruff  <jackson.woodruff@arm.com>
5034
5035         PR tree-optimization/71026
5036         * tree-ssa-math-opts (is_division_by_square, is_square_of): New.
5037         (insert_reciprocals): Change to insert reciprocals before a division
5038         by a square and to insert the square of a reciprocal.
5039         (execute_cse_reciprocals_1): Change to consider division by a square.
5040         (register_division_in): Add importance parameter.
5041
5042 2017-11-24  Richard Biener  <rguenther@suse.de>
5043
5044         PR tree-optimization/82402
5045         * tree-vect-loop-manip.c (create_lcssa_for_virtual_phi): Properly
5046         set SSA_NAME_OCCURS_IN_ABNORMAL_PHI.
5047
5048 2017-11-24  Marc Glisse  <marc.glisse@inria.fr>
5049
5050         * match.pd (0-ptr): New transformation.
5051
5052 2017-11-24  Jan Hubicka  <hubicka@ucw.cz>
5053
5054         PR bootstrap/83015
5055         * ipa-inline.c (inline_small_functions): Set current badnes correctly
5056         when skipping checking.
5057
5058 2017-11-24  Richard Biener  <rguenther@suse.de>
5059
5060         PR tree-optimization/83128
5061         * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Handle STRING_CSTs.
5062         (vn_reference_lookup_3): Likewise.
5063
5064 2017-11-24  Jakub Jelinek  <jakub@redhat.com>
5065
5066         PR sanitizer/83014
5067         * ubsan.c (ubsan_type_descriptor): Use pp_unsigned_wide_integer
5068         instead of pp_printf with HOST_WIDE_INT_PRINT_DEC.  Avoid calling
5069         tree_to_uhwi twice.
5070
5071         * tree-object-size.c (pass_through_call): Use gimple_call_return_flags
5072         ERF_RETURN*ARG* for builtins other than BUILT_IN_ASSUME_ALIGNED,
5073         check for the latter with gimple_call_builtin_p.  Do not handle
5074         BUILT_IN_STPNCPY_CHK which is not a pass through call.
5075
5076 2017-11-24  Christophe Lyon  <christophe.lyon@linaro.org>
5077
5078         * config/arm/arm_neon.h: Fix pragma GCC push_options before
5079         vdot_u32.
5080
5081 2017-11-23  Julia Koval  <julia.koval@intel.com>
5082
5083         * config/i386/avx512vbmi2intrin.h (_mm512_mask_expand_epi8,
5084         _mm512_maskz_expand_epi8, _mm512_mask_expandloadu_epi8,
5085         _mm512_maskz_expandloadu_epi8, _mm512_mask_expand_epi16,
5086         _mm512_maskz_expand_epi16, _mm512_mask_expandloadu_epi16,
5087         _mm512_maskz_expandloadu_epi16): New intrinsics.
5088         * config/i386/avx512vbmi2vlintrin.h (_mm_mask_expand_epi8,
5089         _mm_maskz_expand_epi8, _mm_mask_expandloadu_epi8,
5090         _mm_maskz_expandloadu_epi8, _mm_mask_expand_epi16,
5091         _mm_maskz_expand_epi16, _mm_mask_expandloadu_epi16,
5092         _mm_maskz_expandloadu_epi16, _mm256_mask_expand_epi16,
5093         _mm256_maskz_expand_epi16, _mm256_mask_expandloadu_epi16,
5094         _mm256_maskz_expandloadu_epi16, _mm256_mask_expand_epi8,
5095         _mm256_maskz_expand_epi8, _mm256_mask_expandloadu_epi8,
5096         _mm256_maskz_expandloadu_epi8): New intrinsics.
5097         * config/i386/i386-builtin-types.def (V64QI_FTYPE_PCV64QI_V64QI_UDI,
5098         V32HI_FTYPE_PCV32HI_V32HI_USI, V32QI_FTYPE_PCV32QI_V32QI_USI,
5099         V16HI_FTYPE_PCV16HI_V16HI_UHI, V16QI_FTYPE_PCV16QI_V16QI_UHI,
5100         V8HI_FTYPE_PCV8HI_V8HI_UQI): New types.
5101         * config/i386/i386.c (ix86_expand_special_args_builtin): Use new types.
5102         * config/i386/sse.md (VI248_VLBW): New iterator.
5103         (expand<mode>_mask, expand<mode>_maskz): New patterns.
5104
5105 2017-11-23  Julia Koval  <julia.koval@intel.com>
5106
5107         * config.gcc (avx512vbmi2intrin.h, avx512vbmi2vlintrin): New headers.
5108         * config/i386/avx512vbmi2intrin.h (_mm512_mask_compress_epi8,
5109         _mm512_maskz_compress_epi8, _mm512_mask_compressstoreu_epi8,
5110         _mm512_mask_compress_epi16, _mm512_maskz_compress_epi16,
5111         _mm512_mask_compressstoreu_epi16): New.
5112         * config/i386/avx512vbmi2vlintrin.h (_mm_mask_compress_epi8,
5113         _mm_maskz_compress_epi8, _mm256_mask_compressstoreu_epi16,
5114         _mm_mask_compress_epi16, _mm_maskz_compress_epi16,
5115         _mm256_mask_compress_epi16, _mm256_maskz_compress_epi16,
5116         _mm_mask_compressstoreu_epi8, _mm_mask_compressstoreu_epi16,
5117         _mm256_mask_compress_epi8, _mm256_maskz_compress_epi8,
5118         _mm256_mask_compressstoreu_epi8): New.
5119         * config/i386/i386-builtin-types.def (VOID_FTYPE_PV64QI_V64QI_UDI,
5120         VOID_FTYPE_PV32HI_V32HI_USI, VOID_FTYPE_PV32QI_V32QI_USI,
5121         VOID_FTYPE_PV16QI_V16QI_UHI, VOID_FTYPE_PV16HI_V16HI_UHI,
5122         VOID_FTYPE_PV8HI_V8HI_UQI): New types.
5123         * config/i386/i386-builtin.def (__builtin_ia32_compressqi512_mask,
5124         __builtin_ia32_compresshi512_mask, __builtin_ia32_compressqi256_mask,
5125         __builtin_ia32_compressqi128_mask, __builtin_ia32_compresshi256_mask,
5126         __builtin_ia32_compresshi128_mask,
5127         __builtin_ia32_compressstoreuqi512_mask,
5128         __builtin_ia32_compressstoreuhi512_mask,
5129         __builtin_ia32_compressstoreuqi256_mask,
5130         __builtin_ia32_compressstoreuqi128_mask,
5131         __builtin_ia32_compressstoreuhi256_mask,
5132         __builtin_ia32_compressstoreuhi128_mask): New builtins.
5133         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Create special args
5134         array for flags2.
5135         (ix86_expand_special_args_builtin): Handle new types.
5136         (s4fma_expand): Handle new builtin array.
5137         * config/i386/immintrin.h: Include new headers.
5138         * config/i386/sse.md (VI12_AVX512VLBW): New iterator.
5139         (compress<mode>_mask, compressstore<mode>_mask): New patterns.
5140
5141 2017-11-23  Jakub Jelinek  <jakub@redhat.com>
5142
5143         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Formatting
5144         fixes.  Declare temp and g variables at the top in order to avoid
5145         {} in most of the cases.
5146
5147 2017-11-23  Marc Glisse  <marc.glisse@inria.fr>
5148
5149         * match.pd (ptr-0): New transformation.
5150
5151 2017-11-23  Charles Baylis  <charles.baylis@linaro.org>
5152
5153         * config/arm/arm-protos.h (enum arm_addr_mode_op): New.
5154         (struct addr_mode_cost_table): New.
5155         (struct tune_params): Add field addr_mode_costs.
5156         * config/arm/arm.c (generic_addr_mode_costs): New.
5157         (arm_slowmul_tune): Initialise addr_mode_costs field.
5158         (arm_fastmul_tune): Likewise.
5159         (arm_strongarm_tune): Likewise.
5160         (arm_xscale_tune): Likewise.
5161         (arm_9e_tune): Likewise.
5162         (arm_marvell_pj4_tune): Likewise.
5163         (arm_v6t2_tune): Likewise.
5164         (arm_cortex_tune): Likewise.
5165         (arm_cortex_a8_tune): Likewise.
5166         (arm_cortex_a7_tune): Likewise.
5167         (arm_cortex_a15_tune): Likewise.
5168         (arm_cortex_a35_tune): Likewise.
5169         (arm_cortex_a53_tune): Likewise.
5170         (arm_cortex_a57_tune): Likewise.
5171         (arm_exynosm1_tune): Likewise.
5172         (arm_xgene1_tune): Likewise.
5173         (arm_cortex_a5_tune): Likewise.
5174         (arm_cortex_a9_tune): Likewise.
5175         (arm_cortex_a12_tune): Likewise.
5176         (arm_cortex_a73_tune): Likewise.
5177         (arm_v7m_tune): Likewise.
5178         (arm_cortex_m7_tune): Likewise.
5179         (arm_v6m_tune): Likewise.
5180         (arm_fa726te_tune): Likewise.
5181         (arm_mem_costs): Use table lookup to calculate cost of addressing mode.
5182
5183 2017-11-23  Charles Baylis  <charles.baylis@linaro.org>
5184
5185         * config/arm/arm.c (arm_mem_costs): New function.
5186         (arm_rtx_costs_internal): Use arm_mem_costs.
5187
5188 2017-11-23  Mark Wielaard  <mark@klomp.org>
5189
5190         * dwarf2out.c (init_sections_and_labels): Use generation to create
5191         unique ranges_section_label and ranges_base_label. Return generation.
5192         (output_rnglists): Add generation argument. Use generation to create
5193         unique ranges labels.
5194         (dwarf2out_finish): Get generation from init_sections_and_labels
5195         and pass generation to output_rnglists.
5196
5197 2017-11-23  Mike Stump  <mikestump@comcast.net>
5198             Eric Botcazou  <ebotcazou@adacore.com>
5199
5200         * doc/generic.texi (ANNOTATE_EXPR): Document 3rd operand.
5201         * cfgloop.h (struct loop): Add unroll field.
5202         * function.h (struct function): Add has_unroll bitfield.
5203         * gimplify.c (gimple_boolify) <ANNOTATE_EXPR>: Deal with unroll kind.
5204         (gimplify_expr) <ANNOTATE_EXPR>: Propagate 3rd operand.
5205         * loop-init.c (pass_loop2::gate): Return true if cfun->has_unroll.
5206         (pass_rtl_unroll_loops::gate): Likewise.
5207         * loop-unroll.c (decide_unrolling): Tweak note message.  Skip loops
5208         for which loop->unroll==1.
5209         (decide_unroll_constant_iterations): Use note for consistency and
5210         take loop->unroll into account.  Return early if loop->unroll is set.
5211         Fix thinko in existing test.
5212         (decide_unroll_runtime_iterations): Use note for consistency and
5213         take loop->unroll into account.
5214         (decide_unroll_stupid): Likewise.
5215         * lto-streamer-in.c (input_cfg): Read loop->unroll.
5216         * lto-streamer-out.c (output_cfg): Write loop->unroll.
5217         * tree-cfg.c (replace_loop_annotate_in_block) <annot_expr_unroll_kind>:
5218         New case.
5219         (replace_loop_annotate) <annot_expr_unroll_kind>: Likewise.
5220         (print_loop): Print loop->unroll if set.
5221         * tree-core.h (enum annot_expr_kind): Add annot_expr_unroll_kind.
5222         * tree-inline.c (copy_loops): Copy unroll and set cfun->has_unroll.
5223         * tree-pretty-print.c (dump_generic_node) <annot_expr_unroll_kind>:
5224         New case.
5225         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Bail out if
5226         loop->unroll is set and smaller than the trip count.  Otherwise bypass
5227         entirely the heuristics if loop->unroll is set.  Remove dead note.
5228         Fix off-by-one bug in other note.
5229         (try_peel_loop): Bail out if loop->unroll is set.  Fix formatting.
5230         (tree_unroll_loops_completely_1): Force unrolling if loop->unroll
5231         is greater than 1.
5232         (tree_unroll_loops_completely): Make static.
5233         (pass_complete_unroll::execute): Use correct type for variable.
5234         (pass_complete_unrolli::execute): Fix formatting.
5235         * tree.def (ANNOTATE_EXPR): Add 3rd operand.
5236
5237 2017-11-23  Sergey Shalnov  <Sergey.Shalnov@intel.com>
5238
5239         * config/i386/i386.h (TARGET_PREFER_AVX256): Also
5240         enable when TARGET_PREFER_AVX128 is set.
5241
5242 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
5243
5244         * ipa-profile.c (ipa_propagate_frequency_1): Use count instead of
5245         frequency.
5246         * cgraph.c (cgraph_edge::dump_edge_flags): Dump sreal frequencies.
5247         (cgraph_edge::maybe_hot_p): Use sreal frequencies.
5248
5249 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
5250
5251         * ipa-fnsummary.c (record_modified_bb_info): Use sreal
5252         frequencies. Fix estimation of aggregate parameters.
5253
5254 2017-11-23  Jan Hubicka  <hubicka@ucw.cz>
5255
5256         * cgraphclones.c (cgraph_node::create_clone): Fix updating of profile
5257         when inlining.
5258
5259 2017-11-23  Tom de Vries  <tom@codesourcery.com>
5260
5261         * config/sh/sh.h (ASM_OUTPUT_ADDR_VEC_ELT): Wrap in "do {} while (0)".
5262
5263 2017-11-23  Tom de Vries  <tom@codesourcery.com>
5264
5265         * config/ft32/ft32.h (ASM_OUTPUT_ADDR_VEC_ELT): Remove semicolon after
5266         macro.
5267
5268 2017-11-23  Oleg Endo  <olegendo@gcc.gnu.org>
5269
5270         PR target/83111
5271         * config/sh/sh.md (udivsi3, divsi3, sibcall_value_pcrel,
5272         sibcall_value_pcrel_fdpic): Use local variable instead of
5273         operands[3].
5274         (calli_tbr_rel): Add missing operand 2.
5275         (call_valuei_tbr_rel): Add missing operand 3.
5276
5277 2017-11-23  Jakub Jelinek  <jakub@redhat.com>
5278
5279         PR middle-end/82253
5280         * expr.c (expand_assignment): For CONCAT to_rtx, complex type from and
5281         bitpos/bitsize covering the whole destination, use store_expr only if
5282         the complex mode is the same.  Otherwise, use expand_normal and if
5283         it returns CONCAT, subreg each part separately instead of trying to
5284         subreg the whole result.
5285
5286 2017-11-23  Richard Biener  <rguenther@suse.de>
5287
5288         PR tree-optimization/23094
5289         * tree-ssa-sccvn.c (vuse_ssa_val): Handle VN_TOP when we
5290         come here from walking over backedges in the first iteration.
5291         (vn_reference_lookup_3): Skip clobbers that store the same value.
5292
5293 2017-11-23  Richard Biener  <rguenther@suse.de>
5294
5295         PR tree-optimization/81403
5296         * tree-ssa-pre.c (get_representative_for): Add parameter specifying
5297         a block we need a leader relative to.
5298         (phi_translate_1): For nary processing require a leader from
5299         get_representative_for given we run expression simplification
5300         using match-and-simplify.  Remove previous fix.
5301
5302 2017-11-22  Jeff Law  <law@redhat.com>
5303
5304         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
5305         Use new method allocate_value_range rather than accessing the
5306         vrp_value_range_pool data member directly.
5307         * tree-vrp.c (simplify_stmt_for_jump_threading): Tweak slightly
5308         to use extract_range_from_stmt method to avoid need for
5309         extract_range_from_assignment method.
5310         (vrp_prop::vrp_finalize): Use set_lattice_propagation_complete
5311         method rather than setting values_propgated data member directly.
5312         * vr-values.h (class vr_values): Privatize vrp_value_range_pool,
5313         and values propagated data members and extract_range_from_assignment
5314         method.  Reorder private data members to conform to standards.
5315         Add new methods set_lattice_propagation_complete and
5316         allocate_value_range.
5317
5318 2017-11-22  Eric Botcazou  <ebotcazou@adacore.com>
5319
5320         PR rtl-optimization/83030
5321         * doc/rtl.texi (Flags in an RTL Expression): Alphabetize, add entry
5322         for CROSSING_JUMP_P and mention usage of 'jump' for JUMP_INSNs.
5323         (Insns): Delete entry for REG_CROSSING_JUMP in register notes.
5324         * bb-reorder.c (update_crossing_jump_flags): Do not test whether the
5325         CROSSING_JUMP_P flag is already set before setting it.
5326         * cfgrtl.c (fixup_partition_crossing): Likewise.
5327         * reorg.c (relax_delay_slots): Do not consider a CROSSING_JUMP_P
5328         insn as useless.
5329
5330 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
5331
5332         * simplify-rtx.c (simplify_binary_operation_1) <case VEC_SERIES>:
5333         Handle the case where both arguments are using gen_const_vec_series.
5334
5335 2017-11-22  David Malcolm  <dmalcolm@redhat.com>
5336
5337         PR c++/62170
5338         * pretty-print.c (pp_format): Move quoting implementation to
5339         pp_begin_quote and pp_end_quote.  Update pp_format_decoder call
5340         to pass address of "quote" local.
5341         (pp_begin_quote): New function.
5342         (pp_end_quote): New function.
5343         * pretty-print.h (printer_fn): Convert penultimate param from bool
5344         to bool *.
5345         (pp_begin_quote): New decl.
5346         (pp_end_quote): New decl.
5347         * tree-diagnostic.c (default_tree_printer): Convert penultimate
5348         param from bool to bool *.
5349         * tree-diagnostic.h (default_tree_printer): Likewise.
5350
5351 2017-11-22  Jeff Law  <law@redhat.com>
5352
5353         * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::evrp_range_analyzer)
5354         Initialize vr_values.
5355         (evrp_range_analyzer::try_find_new_range): Call methods attached to
5356         vr_values via vr_values class instance rather than delegators.
5357         (evrp_range_analyzer::record_ranges_from_phis): Likewise.
5358         (evrp_range_analyzer::record_ranges_from_stmt): Likewise.
5359         (evrp_range_analyzer::push_value_range): Likewise.
5360         (evrp_range_analyzer::pop_value_range): Likewise.
5361         * gimple-ssa-evrp-analyze.h (class evrp_range_analyzer): Remove
5362         most delegators.  Those remaining are exposed as public interfaces.
5363         Make vr_values a pointer and private.
5364         (evrp_range_analyzer::~evrp_range_analyzer): Delete the attached
5365         vr_values.
5366         (evrp_range_analyzer::get_vr_value): New method.
5367         * gimple-ssa-evrp.c (class evrp_folder): Use DISABLE_COPY_AND_ASSIGN.
5368         (evrp_folder::evrp_folder): New ctor to initialize vr_values.
5369         (class evrp_dom_walker): Attach evrp_folder class, initialize
5370         it in the ctor.  Remove temporary delegators.
5371         (evrp_dom_walker::before_dom_children): Call methods in attached
5372         evrp_range_analyzer class via class instance pointer.  Use
5373         free value_range_constant_singleton to remove need for
5374         op_with_constant_singleton_value delegator method.  Do not
5375         create a vrp_prop class instance for every call!  Narrow
5376         scope of a couple variables.
5377         (evrp_dom_walker::cleanup): Call methods in attached
5378         evrp_range_analyzer class via class instance pointer.
5379         * vr-values.h (class vr_values): Privatize many methods and
5380         data members.
5381
5382 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
5383
5384         * tree.def (REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR): Delete.
5385         * cfgexpand.c (expand_debug_expr): Remove handling for them.
5386         * expr.c (expand_expr_real_2): Likewise.
5387         * fold-const.c (const_unop): Likewise.
5388         * optabs-tree.c (optab_for_tree_code): Likewise.
5389         * tree-cfg.c (verify_gimple_assign_unary): Likewise.
5390         * tree-inline.c (estimate_operator_cost): Likewise.
5391         * tree-pretty-print.c (dump_generic_node): Likewise.
5392         (op_code_prio): Likewise.
5393         (op_symbol_code): Likewise.
5394         * internal-fn.def (DEF_INTERNAL_SIGNED_OPTAB_FN): Define.
5395         (IFN_REDUC_PLUS, IFN_REDUC_MAX, IFN_REDUC_MIN): New internal functions.
5396         * internal-fn.c (direct_internal_fn_optab): New function.
5397         (direct_internal_fn_array, direct_internal_fn_supported_p
5398         (internal_fn_expanders): Handle DEF_INTERNAL_SIGNED_OPTAB_FN.
5399         * fold-const-call.c (fold_const_reduction): New function.
5400         (fold_const_call): Handle CFN_REDUC_PLUS, CFN_REDUC_MAX and
5401         CFN_REDUC_MIN.
5402         * tree-vect-loop.c: Include internal-fn.h.
5403         (reduction_code_for_scalar_code): Rename to...
5404         (reduction_fn_for_scalar_code): ...this and return an internal
5405         function.
5406         (vect_model_reduction_cost): Take an internal_fn rather than
5407         a tree_code.
5408         (vect_create_epilog_for_reduction): Likewise.  Build calls rather
5409         than assignments.
5410         (vectorizable_reduction): Use internal functions rather than tree
5411         codes for the reduction operation.  Update calls to the functions
5412         above.
5413         * config/aarch64/aarch64-builtins.c (aarch64_gimple_fold_builtin):
5414         Use calls to internal functions rather than REDUC tree codes.
5415         * config/aarch64/aarch64-simd.md: Update comment accordingly.
5416
5417 2017-11-22  Olivier Hainque  <hainque@adacore.com>
5418
5419         * config/vxworks.c (vxworks_override_options): Pick default
5420         dwarf version from macro value, VXWORKS_DWARF_VERSION_DEFAULT.
5421         * config/vxworks.h: Define VXWORKS_DWARF_VERSION_DEFAULT and
5422         DWARF_GNAT_ENCODINGS_DEFAULT.
5423         * config/vxworksae.h: Likewise.
5424
5425 2017-11-22  Marc Glisse  <marc.glisse@inria.fr>
5426
5427         PR tree-optimization/83104
5428         * vr-values.c (simplify_stmt_using_ranges): Check integral argument,
5429         not result.
5430
5431 2017-11-22  Marek Polacek  <polacek@redhat.com>
5432             H.J. Lu  <hongjiu.lu@intel.com>
5433             Jason Merrill  <jason@redhat.com>
5434
5435         PR c++/60336
5436         PR middle-end/67239
5437         PR target/68355
5438         * calls.c (initialize_argument_information): Call
5439         warn_parameter_passing_abi target hook.
5440         (store_one_arg): Use 0 for empty record size.  Don't push 0 size
5441         argument onto stack.
5442         (must_pass_in_stack_var_size_or_pad): Return false for empty types.
5443         * common.opt: Update -fabi-version description.
5444         * config/i386/i386.c (init_cumulative_args): Set cum->warn_empty.
5445         (ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of
5446         int_size_in_bytes.
5447         (ix86_is_empty_record): New function.
5448         (ix86_warn_parameter_passing_abi): New function.
5449         (TARGET_EMPTY_RECORD_P): Redefine.
5450         (TARGET_WARN_PARAMETER_PASSING_ABI): Redefine.
5451         * config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty.
5452         * doc/tm.texi: Regenerated.
5453         * doc/tm.texi.in (TARGET_EMPTY_RECORD_P,
5454         TARGET_WARN_PARAMETER_PASSING_ABI): Add.
5455         * dwarf2out.c (get_ultimate_context): Move to tree.c.
5456         * explow.c (hard_function_value): Call arg_int_size_in_bytes
5457         instead of int_size_in_bytes.
5458         * expr.c (copy_blkmode_to_reg): Likewise.
5459         * function.c (aggregate_value_p): Return 0 for empty types.
5460         (assign_parm_find_entry_rtl): Call warn_parameter_passing_abi
5461         target hook.
5462         (locate_and_pad_parm): Call arg size_in_bytes instead
5463         size_in_bytes.
5464         * lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P.
5465         * stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P.
5466         * target.def (empty_record_p, warn_parameter_passing_abi): New target
5467         hooks.
5468         * targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook.
5469         (std_gimplify_va_arg_expr): Skip empty records.  Call
5470         arg_size_in_bytes instead size_in_bytes.
5471         * targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare.
5472         * tree-core.h (tree_type_common): Add empty_flag.
5473         (tree_decl_common): Update comments.
5474         * tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream
5475         DECL_PADDING_P.
5476         (unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
5477         * tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
5478         DECL_PADDING_P.
5479         (pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
5480         * tree.c (default_is_empty_type): New function.
5481         (default_is_empty_record): New function.
5482         (arg_int_size_in_bytes): New function.
5483         (arg_size_in_bytes): New function.
5484         (get_ultimate_context): New function.
5485         * tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and
5486         TRANSLATION_UNIT_WARN_EMPTY_P.
5487         (default_is_empty_record, arg_int_size_in_bytes,
5488         arg_size_in_bytes, get_ultimate_context): Declare.
5489
5490 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5491
5492         * config/arm/arm.c (cmse_clear_registers): New function.
5493         (cmse_nonsecure_call_clear_caller_saved): Replace register clearing
5494         code by call to cmse_clear_registers.
5495         (cmse_nonsecure_entry_clear_before_return): Likewise.
5496
5497 2017-11-22  Tamar Christina  <tamar.christina@arm.com>
5498
5499         * config/arm/arm_neon.h (vdot_u32, vdotq_u32)
5500         (vdot_s32, vdotq_s32): New.
5501         (vdot_lane_u32, vdotq_lane_u32): New.
5502         (vdot_lane_s32, vdotq_lane_s32): New.
5503
5504
5505 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
5506
5507         PR middle-end/82547
5508         * wide-int.cc (wi::add_large, wi::sub_large): Fix overflow detection
5509         for unsigned values with fewer HWIs than the precision.
5510         (test_overflow): New function.
5511         (wide_int_cc_tests): Call it.
5512
5513 2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
5514
5515         * emit-rtl.c (init_derived_machine_modes): Make sure ptr_mode
5516         has the same mode class as Pmode.
5517
5518 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5519
5520         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of
5521         padding_bits_to_clear_ptr.
5522         (cmse_nonsecure_entry_clear_before_return): Likewise.
5523
5524 2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5525
5526         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Use
5527         auto_sbitap instead of integer bitfield to control register needing
5528         clearing.
5529
5530 2017-11-22  Jakub Jelinek  <jakub@redhat.com>
5531
5532         PR tree-optimization/83044
5533         * tree-vrp.c (vrp_prop::check_array_ref): If eltsize is not
5534         INTEGER_CST or is 0, clear up_bound{,_p1} and later ignore tests
5535         that need the upper bound.  Subtract offset from
5536         get_addr_base_and_unit_offset only if positive and subtract it
5537         before division by eltsize rather than after it.
5538
5539         PR debug/83084
5540         * valtrack.c (propagate_for_debug_subst, propagate_for_debug): Reset
5541         debug insns if they would contain UNSPEC_VOLATILE or volatile asm.
5542         (dead_debug_insert_temp): Likewise, but also ignore even non-volatile
5543         asm.
5544
5545         PR middle-end/82875
5546         * optabs.c (expand_doubleword_mult, expand_binop): Before calling
5547         expand_binop with *mul_widen_optab, make sure at least one of the
5548         operands doesn't have VOIDmode.
5549
5550         PR debug/83034
5551         * dwarf2out.c (mem_loc_descriptor): Handle VEC_SERIES.
5552
5553         PR rtl-optimization/82044
5554         PR tree-optimization/82042
5555         * dse.c (record_store): Check for overflow.
5556         (check_mem_read_rtx): Properly check for overflow if width == -1, call
5557         add_wild_read instead of clear_rhs_from_active_local_stores on
5558         overflow and log it into dump_file.
5559
5560 2017-11-22  Richard Biener  <rguenther@suse.de>
5561
5562         * gimple-iterator.c (gimple_find_edge_insert_loc): Ignore
5563         fake edges to exit when looking for a place to insert.
5564         * tree-ssa-pre.c (clear_expression_ids): Inline into callers
5565         and remove.
5566         (insert_into_preds_of_block): Commit edge insertion immediately,
5567         assert that doesn't require new BBs.
5568         (fini_pre): Release expressions.
5569         (pass_pre::execute): Shuffle things around a bit, if the fn
5570         is too large do not compute AVAIL either as this is really the
5571         quadratic bit.
5572
5573 2017-11-22  Richard Biener  <rguenther@suse.de>
5574
5575         PR tree-optimization/83089
5576         * tree-if-conv.c (pass_if_conversion::execute): If anything
5577         changed reset SCEV and free the number of iteration estimates.
5578
5579 2017-11-21  Martin Sebor  <msebor@redhat.com>
5580
5581         PR tree-optimization/82945
5582         * calls.h (warn_nonstring_bound): Remove unused function.
5583
5584 2017-11-21  Martin Sebor  <msebor@redhat.com>
5585
5586         PR tree-optimization/82945
5587         * builtins.c (expand_builtin_strlen): Call maybe_warn_nonstring_arg.
5588         * calls.h (maybe_warn_nonstring_arg): Declare new function.
5589         * calls.c (get_attr_nonstring_decl, maybe_warn_nonstring_arg): New
5590         functions.
5591         (initialize_argument_information): Call maybe_warn_nonstring_arg.
5592         * calls.h (get_attr_nonstring_decl): Declare new function.
5593         * doc/extend.texi (attribute nonstring): Update.
5594         * gimple-fold.c (gimple_fold_builtin_strncpy): Call
5595         get_attr_nonstring_decl and handle it.
5596         * tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same.  Improve
5597         detection of nul-termination.
5598         (strlen_to_stridx): Change to a pointer.
5599         (handle_builtin_strlen, handle_builtin_stxncpy): Adjust.
5600         (pass_strlen::execute): Same.
5601
5602 2017-11-21  Sergey Shalnov  <Sergey.Shalnov@intel.com>
5603
5604         * config/i386/i386-opts.h (enum prefer_vector_width): Added new enum
5605         for the new option -mprefer-vector-width=[none|128|256|512].
5606         * config/i386/i386.c (ix86_target_string): remove old style options
5607         -mprefer-avx256 and make -mprefer-avx128 as alias.
5608         (ix86_option_override_internal):  Apply defaults for the
5609         -mprefer-vector-width=[128|256] option.
5610         * config/i386/i386.h (TARGET_PREFER_AVX128, TARGET_PREFER_AVX256):
5611         Implement macros to work with -mprefer-vector-width=.
5612         * config/i386/i386.opt: Implemented option
5613         -mprefer-vector-width=[none|128|256|512].
5614         * doc/invoke.texi: Documentation for
5615         -mprefer-vector-width=[none|128|256|512].
5616
5617 2017-11-21  Pat Haugen  <pthaugen@us.ibm.com>
5618
5619         * config/rs6000/ppc-asm.h (f50, vs50): Fix values.
5620
5621 2017-11-21  Jonathan Wakely  <jwakely@redhat.com>
5622
5623         * doc/invoke.texi (-Wmaybe-uninitialized): Rephrase for clarity.
5624
5625 2017-11-21  Marc Glisse  <marc.glisse@inria.fr>
5626
5627         * doc/generic.texi: Document POINTER_DIFF_EXPR, update
5628         POINTER_PLUS_EXPR.
5629         * cfgexpand.c (expand_debug_expr): Handle POINTER_DIFF_EXPR.
5630         * expr.c (expand_expr_real_2): Likewise.
5631         * fold-const.c (const_binop, fold_addr_of_array_ref_difference,
5632         fold_binary_loc): Likewise.
5633         * match.pd (X-X, P+(Q-P), &D-P, (P+N)-P, P-(P+N), (P+M)-(P+N),
5634         P-Q==0, -(A-B), X-Z<Y-Z, (X-Z)-(Y-Z), Z-X<Z-Y, (Z-X)-(Z-Y),
5635         (A-B)+(C-A)): New transformations for POINTER_DIFF_EXPR, based on
5636         MINUS_EXPR transformations.
5637         * optabs-tree.c (optab_for_tree_code): Handle POINTER_DIFF_EXPR.
5638         * tree-cfg.c (verify_expr, verify_gimple_assign_binary): Likewise.
5639         * tree-inline.c (estimate_operator_cost): Likewise.
5640         * tree-pretty-print.c (dump_generic_node, op_code_prio,
5641         op_symbol_code): Likewise.
5642         * tree-vect-stmts.c (vectorizable_operation): Likewise.
5643         * vr-values.c (extract_range_from_binary_expr): Likewise.
5644         * varasm.c (initializer_constant_valid_p_1): Likewise.
5645         * tree.def: New tree code POINTER_DIFF_EXPR.
5646
5647 2017-11-21  Uros Bizjak  <ubizjak@gmail.com>
5648
5649         * config/i386/i386.md (*bswap<mode>2_movbe): Add
5650         integer suffix to movbe mnemonic.
5651         (*bswaphi2_movbe): Ditto.
5652         (bswaphi_lowpart): Merge with *bswaphi_lowpart_1.
5653
5654 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
5655
5656         PR c++/83045
5657         * tree-cfg.c (pass_warn_function_return::execute): Formatting fix.
5658         Also warn if seen __builtin_unreachable () call with BUILTINS_LOCATION.
5659         Use LOCATION_LOCUS when comparing against UNKNOWN_LOCATION.
5660
5661 2017-11-21  Martin Liska  <mliska@suse.cz>
5662
5663         * tree-inline.c (expand_call_inline): Remove not needed
5664         xstrdup_for_dump.
5665
5666 2017-11-21  James Cowgill  <James.Cowgill@imgtec.com>
5667             Jakub Jelinek  <jakub@redhat.com>
5668
5669         PR target/82880
5670         * config/mips/frame-header-opt.c (mips_register_frame_header_opt):
5671         Remove static keyword from f variable.
5672
5673 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
5674
5675         PR tree-optimization/83086
5676         * gimple-ssa-store-merging.c
5677         (imm_store_chain_info::try_coalesce_bswap): Test this_n.base_addr
5678         rather than n.base_addr.
5679
5680 2017-11-21  Martin Liska  <mliska@suse.cz>
5681
5682         PR rtl-optimization/82044
5683         PR tree-optimization/82042
5684         * dse.c (check_mem_read_rtx): Check for overflow.
5685
5686 2017-11-21  Aldy Hernandez  <aldyh@redhat.com>
5687
5688         * tree-ssa-threadbackward.c (find_jump_threads_backwards): Fix
5689         typo in comment.
5690
5691 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
5692
5693         * cfgrtl.c (force_nonfallthru_and_redirect): Don't split a call
5694         and its corresponding call arg location note.
5695
5696 2017-11-21  Claudiu Zissulescu  <claziss@synopsys.com>
5697             Andrew Burgess  <andrew.burgess@embecosm.com>
5698
5699         * config/arc/arc-protos.h (arc_compute_frame_size): Delete
5700         declaration.
5701         (arc_return_slot_offset): Likewise.
5702         (arc_eh_return_address_location): New declaration.
5703         * config/arc/arc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
5704         (MUST_SAVE_REGISTER): Add exception handler case.
5705         (MUST_SAVE_RETURN_ADDR): Likewise.
5706         (arc_frame_pointer_required): Likewise.
5707         (arc_frame_pointer_needed): New function.
5708         (arc_compute_frame_size): Changed.
5709         (arc_expand_prologue): Likewise.
5710         (arc_expand_epilogue): Likewise.
5711         (arc_initial_elimination_offset): Likewise.
5712         (arc_return_slot_offset): Delete.
5713         (arc_eh_return_address_location): New function.
5714         (arc_builtin_setjmp_frame_value): Likewise.
5715         * config/arc/arc.h (EH_RETURN_DATA_REGNO): Use 2 registers.
5716         (EH_RETURN_STACKADJ_RTX): Define.
5717         (EH_RETURN_HANDLER_RTX): Likewise.
5718         * config/arc/arc.md (eh_return): Delete.
5719
5720 2017-11-21  Aldy Hernandez  <aldyh@redhat.com>
5721
5722         * print-tree.h (debug_vec_tree): Remove prototype.
5723         * gdbinit.in (pvt): Remove macro.
5724
5725 2017-11-21  Jakub Jelinek  <jakub@redhat.com>
5726
5727         PR tree-optimization/83047
5728         * gimple-ssa-store-merging.c
5729         (imm_store_chain_info::output_merged_store): If the loads with the
5730         same vuse are in different basic blocks, for load_gsi pick a load
5731         location that is dominated by the other loads.
5732
5733         PR c++/83059
5734         * config/i386/i386.c (ix86_memmodel_check): Start
5735         -Winvalid-memory-model diagnostics with lowercase letter.
5736
5737         PR debug/82718
5738         * dwarf2out.c (dw_loc_list): If crtl->has_bb_partition, temporarily
5739         set in_cold_section_p to the partition containing loc_list->first.
5740         When seeing loc_list->last_before_switch node, update secname and
5741         perform range_across_switch second partition handling only after that.
5742
5743         PR debug/82933
5744         * run-rtl-passes.c: Include debug.h.
5745         (run_rtl_passes): Call debug_hooks->assembly_start.
5746         * dwarf2out.c (dwarf2out_assembly_start): Return early if invoked
5747         multiple times.
5748
5749         PR target/82981
5750         * internal-fn.c (expand_mul_overflow): Use OPTAB_WIDEN instead of
5751         OPTAB_DIRECT in calls to expand_simple_binop.
5752
5753 2017-11-20  David Malcolm  <dmalcolm@redhat.com>
5754
5755         PR c/81404
5756         * Makefile.in (C_COMMON_OBJS): Add c-family/known-headers.o.
5757
5758 2017-11-20  David Malcolm  <dmalcolm@redhat.com>
5759
5760         PR c++/72786
5761         * spellcheck.h (best_match::blithely_get_best_candidate): New
5762         accessor.
5763
5764 2017-11-20  Jakub Jelinek  <jakub@redhat.com>
5765
5766         * config/i386/i386.c (parse_mtune_ctrl_str): Start diagnostics
5767         with lower case letter.
5768
5769 2017-11-20  Uros Bizjak  <ubizjak@gmail.com>
5770
5771         * config/i386/i386.md (bswaphi2): New expander.
5772         (*bswaphi2_movbe): New insn pattern.
5773         (bswaphi -> rorhi pepehole2): New peephole pattern.
5774
5775 2017-11-20  Jeff Law  <law@redhat.com>
5776
5777         * Makefile.in (OBJS): Add gimple-ssa-evrp-analyze.o.
5778         * gimple-ssa-evrp-analyze.c: New file pulled from gimple-ssa-evrp.c.
5779         * gimple-ssa-evrp-analyze.h: New file pulled from gimple-ssa-evrp.c.
5780         * gimple-ssa-evrp.c: Remove bits moved into new files.  Include
5781         gimple-ssa-evrp-analyze.h.
5782
5783         * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Do not
5784         set BB_VISITED here.
5785         (evrp_range_analyzer::enter): Set BB_VISITED here instead.
5786
5787 2017-11-20  Bin Cheng  <bin.cheng@arm.com>
5788
5789         * tree-predcom.c: Add general comment on Store-Store chains.
5790         (split_data_refs_to_components): Postpone clearing eliminate_store_p
5791         flag in component.
5792         (get_chain_last_ref_at): Rename into...
5793         (get_chain_last_write_at): ...this.
5794         (get_chain_last_write_before_load): New function.
5795         (add_ref_to_chain): Promote type of chain from CT_STORE_LOAD to
5796         CT_STORE_STORE when write reference is added.
5797         (determine_roots_comp): Support load ref in CT_STORE_STORE chains.
5798         (is_inv_store_elimination_chain): Update get_chain_last_write_at call.
5799         (initialize_root_vars_store_elim_1): Ditto.
5800         (initialize_root_vars_store_elim_2): Ditto.  Replace rhs once default
5801         definition is created.
5802         (execute_pred_commoning_chain): Support load ref in CT_STORE_STORE
5803         chain by replacing it with dominant stored value.
5804
5805 2017-11-20  Bin Cheng  <bin.cheng@arm.com>
5806
5807         * tree-predcom.c (add_ref_to_chain): Remove check on distance.
5808
5809 2017-11-20  Marc Glisse  <marc.glisse@inria.fr>
5810
5811         * vr-values.c (extract_range_from_binary_expr): Use a full range
5812         for VR_VARYING.
5813
5814 2017-11-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
5815
5816         * config/arm/arm.md (R4_REGNUM): Define constant.
5817         (nonsecure_call_internal): Remove r4 clobber.
5818         (nonsecure_call_value_internal): Likewise.
5819         * config/arm/thumb1.md (nonsecure_call_reg_thumb1_v5): Remove second
5820         clobber and resequence match_operands.
5821         (nonsecure_call_value_reg_thumb1_v5): Likewise.
5822         * config/arm/thumb2.md (nonsecure_call_reg_thumb2): Likewise.
5823         (nonsecure_call_value_reg_thumb2): Likewise.
5824
5825 2017-11-20  Jakub Jelinek  <jakub@redhat.com>
5826
5827         PR tree-optimization/78821
5828         * gimple-ssa-store-merging.c (find_bswap_or_nop_load): Give up
5829         if base is TARGET_MEM_REF.  If base is not MEM_REF, set base_addr
5830         to the address of the base rather than the base itself.
5831         (find_bswap_or_nop_1): Just use pointer comparison for vuse check.
5832         (find_bswap_or_nop_finalize): New function.
5833         (find_bswap_or_nop): Use it.
5834         (bswap_replace): Return a tree rather than bool, change first
5835         argument from gimple * to gimple_stmt_iterator, allow inserting
5836         into an empty sequence, allow ins_stmt to be NULL - then emit
5837         all stmts into gsi.  Fix up MEM_REF address gimplification.
5838         (pass_optimize_bswap::execute): Adjust bswap_replace caller.
5839         (struct store_immediate_info): Add N and INS_STMT non-static
5840         data members.
5841         (store_immediate_info::store_immediate_info): Initialize them
5842         from newly added ctor args.
5843         (merged_store_group::apply_stores): Formatting fixes.  Sort by
5844         bitpos at the end.
5845         (stmts_may_clobber_ref_p): For stores call also
5846         refs_anti_dependent_p.
5847         (gather_bswap_load_refs): New function.
5848         (imm_store_chain_info::try_coalesce_bswap): New method.
5849         (imm_store_chain_info::coalesce_immediate_stores): Use it.
5850         (split_group): Handle LROTATE_EXPR and NOP_EXPR rhs_code specially.
5851         (imm_store_chain_info::output_merged_store): Fail if number of
5852         new estimated stmts is bigger or equal than old.  Handle LROTATE_EXPR
5853         and NOP_EXPR rhs_code.
5854         (pass_store_merging::process_store): Compute n and ins_stmt, if
5855         ins_stmt is non-NULL and the store rhs is otherwise invalid, use
5856         LROTATE_EXPR rhs_code.  Pass n and ins_stmt to store_immediate_info
5857         ctor.
5858         (pass_store_merging::execute): Calculate dominators.
5859
5860         * tree-ssa-math-opts.c (nop_stats, bswap_stats, struct symbolic_number,
5861         BITS_PER_MARKER, MARKER_MASK, MARKER_BYTE_UNKNOWN, HEAD_MARKER, CMPNOP,
5862         CMPXCHG, do_shift_rotate, verify_symbolic_number_p,
5863         init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge,
5864         find_bswap_or_nop_1, find_bswap_or_nop, pass_data_optimize_bswap,
5865         class pass_optimize_bswap, bswap_replace,
5866         pass_optimize_bswap::execute): Moved to ...
5867         * gimple-ssa-store-merging.c: ... this file.
5868         Include optabs-tree.h.
5869         (nop_stats, bswap_stats, do_shift_rotate, verify_symbolic_number_p,
5870         init_symbolic_number, find_bswap_or_nop_load, perform_symbolic_merge,
5871         find_bswap_or_nop_1, find_bswap_or_nop, bswap_replace): Put into
5872         anonymous namespace, remove static keywords.
5873         (pass_optimize_bswap::gate): Test BITS_PER_UNIT == 8 here...
5874         (pass_optimize_bswap::execute): ... rather than here.  Formatting fix.
5875
5876 2017-11-20  Jan Hubicka  <hubicka@ucw.cz>
5877
5878         PR bootstrap/83062
5879         * ipa-inline.c (can_inline_edge_p): Fix typo in previous patch.
5880
5881 2017-11-20  Aldy Hernandez  <aldyh@redhat.com>
5882
5883         * vec.h (debug_helper): New function.
5884         (DEFINE_DEBUG_VEC): New macro.
5885         * hash-set.h (debug_helper): New function.
5886         (DEFINE_DEBUG_HASH_SET): New macro.
5887         * cfg.c (debug_slim (edge)): New function.
5888         Call DEFINE_DEBUG_VEC for edges.
5889         Call DEFINE_DEBUG_HASH_SET for edges.
5890         * cfghooks.c (debug_slim (basic_block)): New function.
5891         Call DEFINE_DEBUG_VEC for basic blocks.
5892         Call DEFINE_DEBUG_HASH_SET for basic blocks.
5893         * print-tree.c (debug_slim): New function to handle trees.
5894         Call DEFINE_DEBUG_VEC for trees.
5895         Call DEFINE_DEBUG_HASH_SET for trees.
5896         (debug (vec<tree, va_gc>) &): Remove.
5897         (debug (<vec<tree, va_gc>) *): Remove.
5898         * print-rtl.c (debug_slim): New function to handle const_rtx.
5899         Call DEFINE_DEBUG_VEC for rtx_def.
5900         Call DEFINE_DEBUG_VEC for rtx_insn.
5901         Call DEFINE_DEBUG_HASH_SET for rtx_def.
5902         Call DEFINE_DEBUG_HASH_SET for rtx_insn.
5903         * sel-sched-dump.c (debug (vec<rtx_insn *> &): Remove.
5904         (debug (vec<rtx_insn *> *ptr): Remove.
5905         (debug_insn_vector): Remove.
5906         * stor-layout.c (debug_rli): Call debug() instead of debug_vec_tree.
5907
5908 2017-11-20  Tom de Vries  <tom@codesourcery.com>
5909
5910         PR rtl-optimization/82020
5911         * simplify-rtx.c (simplify_ternary_operation): Fix comparison mode of
5912         IF_THEN_ELSE condition.
5913
5914 2017-11-19  Jeff Law  <law@redhat.com>
5915
5916         * tree-ssa-dom.c (record_equivalences_from_phis): Fix handling
5917         of degenerates resulting from ignoring an edge.
5918
5919 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
5920
5921         PR ipa/81360
5922         * ipa-inline.c (can_inline_edge_p): Also check that caller is optimized
5923
5924 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
5925
5926         PR ipa/83001
5927         * profile-count.c (profile_count::to_sreal_scale): Fix return value
5928         for uninitialied counts.
5929
5930 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
5931
5932         PR ipa/60243
5933         * tree-inline.c (estimate_num_insns): Set to 1 at least.
5934
5935 2017-11-19  Jan Hubicka  <hubicka@ucw.cz>
5936
5937         PR target/82713
5938         * i386.c (ix86_builtin_vectorization_cost): Be ready for insane types.
5939
5940 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5941
5942         * config/arc/arc.h (FUNCTION_PROFILER): Remove semicolon after
5943         "do while (0)".
5944
5945 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5946
5947         * config/phoenix.h (TARGET_OS_CPP_BUILTINS): Remove semicolon after
5948         "do {} while (0)".
5949
5950 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5951
5952         * config/visium/visium.h (ASM_OUTPUT_CASE_END): Remove semicolon after
5953         macro body.
5954
5955 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5956
5957         * config/ft32/ft32.h (REGISTER_TARGET_PRAGMAS): Remove semicolon after
5958         "do {} while (0)".
5959         * config/spu/spu.h (REGISTER_TARGET_PRAGMAS): Same.
5960
5961 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5962
5963         * config/mcore/mcore-elf.h (MCORE_EXPORT_NAME): Remove semicolon after
5964         "do {} while (0)".
5965         * config/mcore/mcore.h (ASM_OUTPUT_ALIGNED_COMMON): After missing
5966         semicolon after MCORE_EXPORT_NAME call.
5967
5968 2017-11-19  Tom de Vries  <tom@codesourcery.com>
5969
5970         PR target/82961
5971         * vmsdbgout.c (vmsdbgout_early_finish): New function.
5972         (vmsdbg_debug_hooks): Set early_finish field to vmsdbgout_early_finish.
5973
5974 2017-11-18  Jan Hubicka  <hubicka@ucw.cz>
5975
5976         * cgraphclones.c (cgraph_edge::clone): Rename gcov_count to prof_count.
5977         (cgraph_edge::clone): Cleanup updating of profile.
5978         * ipa-cp.c (update_profiling_info): Likewise.
5979         * ipa-inline-transform.c (inline_transform): Likewise.
5980         * ipa-inline.c (inline_small_functions): Add missing space to dump.
5981         * ipa-split.c (execute_split_functions): Do not split when function
5982         is cold.
5983         * predict.c (estimate_bb_frequencies): Cleanup updating of profile.
5984         * profile-count.c (profile_count::dump): Add global0.
5985         (profile_count::to_cgraph_frequency): Do not ICE when entry is
5986         undefined.
5987         (profile_count::to_sreal_scale): Likewise.
5988         (profile_count::adjust_for_ipa_scaling): Fix typo in comment.
5989         (profile_count::combine_with_ipa_count): New function.
5990         * profile-count.h (profile_guessed_global0adjusted): New.
5991         (profile_count::adjusted_zero): New.
5992         (profile_count::global0adjusted): New.
5993         (profile_count::combine_with_ipa_count): New.
5994         * tree-inline.c (copy_edges_for_bb): Add NUM/DEN arugment;
5995         correct profile of return block of split functions.
5996         (copy_cfg_body): Remove unused profile_count.
5997         (copy_body): Likewise.
5998         (expand_call_inline): Update.
5999         (tree_function_versioning): Update.
6000
6001 2017-11-18  Aldy Hernandez  <aldyh@redhat.com>
6002
6003         * hash-set.h (hash_set::empty): New.
6004         * tree-ssa-threadbackward.h: Delete.
6005         * tree-ssa-threadbackward.c (class thread_jumps): New.
6006         Move max_threaded_paths into class.
6007         (fsm_find_thread_path): Remove arguments that are now in class.
6008         (profitable_jump_thread_path): Rename to...
6009         (thread_jumps::profitable_jump_thread_path): ...this.
6010         (convert_and_register_jump_thread_path): Rename to...
6011         (thread_jumps::convert_and_register_current_path): ...this.
6012         (check_subpath_and_update_thread_path): Rename to...
6013         (thread_jumps::check_subpath_and_update_thread_path): ...this.
6014         (register_jump_thread_path_if_profitable): Rename to...
6015         (thread_jumps::register_jump_thread_path_if_profitable): ...this.
6016         (handle_phi): Rename to...
6017         (thread_jumps::handle_phi): ...this.
6018         (handle_assignment): Rename to...
6019         (thread_jumps::handle_assignment): ...this.
6020         (fsm_find_control_statement_thread_paths): Rename to...
6021         (thread_jumps::fsm_find_control_statement_thread_paths): ...this.
6022         (find_jump_threads_backwards): Rename to...
6023         (thread_jumps::find_jump_threads_backwards): ...this.
6024         Initialize path local data.
6025         (pass_thread_jumps::execute): Call find_jump_threads_backwards
6026         from within thread_jumps class.
6027         (pass_early_thread_jumps::execute): Same.
6028
6029 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
6030
6031         * cgraph.c (cgraph_node::dump): Do IPA sanity checking on IPA counts.
6032
6033 2017-11-17  Steve Ellcey  <sellcey@cavium.com>
6034
6035         * config/aarch64/aarch64-simd.md (fnma<mode>4): Move neg operator
6036         to canonical location.
6037
6038 2017-11-17  Steve Ellcey  <sellcey@cavium.com>
6039
6040         PR target/81356
6041         * config/aarch64/aarch64.c (aarch64_use_by_pieces_infrastructure_p):
6042         Remove.
6043         (TARGET_USE_BY_PIECES_INFRASTRUCTURE_P): Remove define.
6044
6045 2017-11-17  H.J. Lu  <hongjiu.lu@intel.com>
6046
6047         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Use
6048         rcrt1.o%s/grcrt1.o%s for -static-pie.
6049
6050 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
6051
6052         * i386.c (ix86_multiplication_cost, ix86_division_cost,
6053         ix86_shift_rotate_cost): Break out from ...
6054         (ix86_rtx_costs): ... here.
6055         (ix86_add_stmt_cost): Use rtx cost machinery to compute cost of
6056         vector operations.
6057
6058 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
6059
6060         * predict.c (determine_unlikely_bbs): Set cgraph node count to 0
6061         when entry block was promoted unlikely.
6062         (estimate_bb_frequencies): Increase frequency scale.
6063         * profile-count.h (profile_count): Export precision info.
6064
6065 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
6066
6067         * tree-tailcall.c (eliminate_tail_call): Be more careful about not
6068         disturbin profile of entry block.
6069
6070 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
6071
6072         * ipa-fnsummary.c (estimate_node_size_and_time): Be more tolerant for
6073         roundoff errors.
6074
6075 2017-11-17  Jan Hubicka  <hubicka@ucw.cz>
6076
6077         * ipa-cp.c (update_profiling_info): Handle conversion to local profile.
6078         * tree-cfg.c (execute_fixup_cfg): Do fixup same way as inliner does.
6079
6080 2017-11-17  Jeff Law  <law@redhat.com>
6081
6082         * gimple-ssa-evrp.c (class evrp_range_analyzer): New class extracted
6083         from evrp_dom_walker class.  Various methods moved into new class.
6084         (evrp_range_analyzer::evrp_range_analyzer): Constructor for new class.
6085         (evrp_range_analyzer::enter): New method.
6086         (evrp_range_analyzer::leave): New method.
6087         (evrp_dom_walker): Remove delegators no longer needed by this class.
6088         Replace vr_values data member with evrp_range_analyzer
6089
6090         * gimple-ssa-evrp.c (evrp_dom_walker::record_ranges_from_phis): New
6091         method extracted from evrp_dom_walker::before_dom_children.
6092         (evrp_dom_walker::record_ranges_from_stmt): Likewise.
6093         (evrp_dom_walker::record_ranges_from_incoming_edge): Likewise.
6094
6095         * gimple-ssa-evrp.c (evrp_dom_walker): Add cleanup method.
6096         Add private copy constructor and move assignment operators.
6097         Privatize methods and class data where trivially possible.
6098         (evrp_dom_walker::cleanup): New function, extracted from
6099         execute_early_vrp.  Simplify access to class data.
6100
6101         * vr-values.h (get_output_for_vrp): Prototype.
6102         * vr-values.c (get_output_for_vrp): New function extracted from
6103         vrp_visit_assignment_or_call and extract_range_from_stmt.
6104         (vrp_visit_assignment_or_call): Use get_output_for_vrp.  Simplify.
6105
6106 2017-11-17  Luis Machado  <luis.machado@linaro.org>
6107
6108         * config/aarch64/aarch64.c
6109         (qdf24xx_prefetch_tune) <default_opt_level>: Set to -1.
6110         (qdf24xx_tunings) <autoprefetcher_model>: Set to
6111         tune_params::AUTOPREFETCHER_WEAK.
6112
6113 2017-11-17  Tamar Christina  <tamar.christina@arm.com>
6114
6115         PR target/82641
6116         * config/arm/arm.c (arm_valid_target_attribute_rec):
6117         Parse "arch=" and "+<ext>".
6118         (arm_valid_target_attribute_tree): Re-init global options.
6119         (arm_option_override): Make non-static.
6120         (arm_options_perform_arch_sanity_checks): Make errors fatal.
6121         * gcc/config/arm/arm-c.c (__ARM_FEATURE_CMSE): Support undef.
6122         (__ARM_FEATURE_CRC32): Support undef.
6123         * config/arm/arm_acle.h (__ARM_FEATURE_CRC32): Replace with pragma.
6124         * doc/extend.texi (ARM Function Attributes): Add pragma and target.
6125
6126 2017-11-17  David Malcolm  <dmalcolm@redhat.com>
6127
6128         * gdbinit.in (break-on-diagnostic): New command.
6129
6130 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
6131
6132         * config/i386/i386.c (ix86_expand_epilogue): Change simple
6133         return to indirect jump for EH return if control-flow
6134         protection is enabled. Change explicit 'false' argument in
6135         pro_epilogue_adjust_stack with a value of
6136         flag_cf_protection.
6137         * config/i386/i386.md (simple_return_indirect_internal):
6138         Remove SImode restriction to support 64-bit.
6139
6140 2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
6141
6142         * combine.c (added_notes_insn): New.
6143         (try_combine): Handle added_notes_insn like added_links_insn.
6144         Rewrite return value code.
6145         (distribute_notes): Set added_notes_insn to the earliest insn we added
6146         a note to.
6147
6148 2017-11-17  Segher Boessenkool  <segher@kernel.crashing.org>
6149
6150         PR rtl-optimization/82621
6151         * combine.c (try_combine): Do not split PARALLELs of two SETs if the
6152         dest of one of those SETs is unused.
6153
6154 2017-11-17  Richard Biener  <rguenther@suse.de>
6155
6156         PR fortran/83017
6157         * tree-core.h (enum annot_expr_kind): Add annot_expr_parallel_kind.
6158         * tree-pretty-print.c (dump_generic_node): Handle
6159         annot_expr_parallel_kind.
6160         * tree-cfg.c (replace_loop_annotate_in_block): Likewise.
6161         * gimplify.c (gimple_boolify): Likewise.
6162
6163 2017-11-17  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
6164
6165         * config.gcc (extra_headers): Add cet.h for x86 targets.
6166         * config/i386/cet.h: New file.
6167         * doc/install.texi: Add --enable-cet/--disable-cet.
6168
6169 2017-11-17  Richard Biener  <rguenther@suse.de>
6170
6171         PR tree-optimization/83017
6172         * tree-parloops.c (MIN_PER_THREAD): Use --param parloops-min-per-thread.
6173         (gen_parallel_loop): Properly count iterations.
6174         (parallelize_loops): Handle loop->can_be_parallel independent
6175         of flag_loop_parallelize_all.  Make static profitability test match
6176         the runtime one.
6177         * params.def (PARAM_PARLOOPS_MIN_PER_THREAD): New.
6178         * invoke.texi (parloops-min-per-thread): Document.
6179
6180 2017-11-17  Vineet Gupta  <vgupta@synopsys.com>
6181
6182         * config/arc/linux.h: GLIBC_DYNAMIC_LINKER update per glibc
6183         upstreaming review comments.
6184
6185 2017-11-17  Tamar Christina  <tamar.christina@arm.com>
6186
6187         * expr.c (copy_blkmode_to_reg): Fix bitsize for targets
6188         with fast unaligned access.
6189         * doc/sourcebuild.texi (word_mode_no_slow_unalign): New.
6190
6191 2017-11-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
6192
6193         * config/arm/arm.c (cmse_nonsecure_entry_clear_before_return): Allocate
6194         to_clear_arg_regs_bitmap to the same size as to_clear_bitmap.
6195
6196 2017-11-17  Richard Biener  <rguenther@suse.de>
6197
6198         * tree-ssa-pre.c (phi_translate_1): Remove redundant constant
6199         folding of references.
6200
6201 2017-11-17  Qing Zhao  <qing.zhao@oracle.com>
6202
6203         PR middle-end/78809
6204         * gimple-fold.c (gimple_fold_builtin_string_compare): Add handling
6205         of replacing call to strncmp with corresponding call to strcmp when
6206         meeting conditions.
6207
6208 2017-11-17  Sergey Shalnov  <Sergey.Shalnov@intel.com>
6209
6210         * config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Add tuning
6211         option prefer-avx256 for skylake-avx512 configuration.
6212         * config/i386/i386.c (ix86_option_override_internal): Ditto.
6213         (get_builtin_code_for_version): Ditto.
6214
6215 2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
6216             Monk Chiang  <sh.chiang04@gmail.com>
6217
6218         * config/nds32/nds32.h (FIRST_PSEUDO_REGISTER): Modify.
6219         (FIXED_REGISTERS): Reserve more register numbers.
6220         (CALL_USED_REGISTERS): Likewise.
6221         (REG_ALLOC_ORDER): Likewise.
6222         (REG_CLASS_CONTENTS): Likewise.
6223         (REGISTER_NAMES): Likewise.
6224
6225 2017-11-17  Chung-Ju Wu  <jasonwucj@gmail.com>
6226             Kito Cheng  <kito.cheng@gmail.com>
6227
6228         * config/nds32/nds32-modes.def: Add vector mode V4QI V2HI V8QI V4HI
6229         V2SI.
6230         * config/nds32/iterators.md: Add vector mode iterators and attributes.
6231
6232 2017-11-16  Steven Munroe  <munroesj@gcc.gnu.org>
6233
6234         * config/rs6000/mmintrin.h (_mm_add_pi32[_ARCH_PWR]): Correct
6235         parameter list for vec_splats.
6236
6237 2017-11-16  Joseph Myers  <joseph@codesourcery.com>
6238
6239         * doc/invoke.texi (-std=c17): Refer to 2018 expected publication
6240         date of C17.
6241         (-std=c18, -std=iso9899:2018, -std=gnu18): Document option aliases.
6242
6243 2017-11-16  Thomas Koenig  <tkoenig@gcc.gnu.org>
6244
6245         PR bootstrap/82856
6246         * doc/install.texi: Document incompatibility of Perl >=5.6.26
6247         with the required version of automake 1.11.6.
6248
6249 2017-11-16  Pat Haugen  <pthaugen@us.ibm.com>
6250
6251         * rs6000/power9.md (power9fpdiv): New automaton and cpu_unit defined
6252         for it.
6253         (DU_C2_3_power9): Correct reservation combinations.
6254         (FP_DIV_power9, VEC_DIV_power9): New.
6255         (power9-alu): Split out rotate/shift...
6256         (power9-rot): ...to here, correct dispatch resource.
6257         (power9-cracked-alu, power9-mul, power9-mul-compare): Correct dispatch
6258         resource.
6259         (power9-fp): Correct latency.
6260         (power9-sdiv): Add div/sqrt resource.
6261         (power9-ddiv): Correct latency, add div/sqrt resource.
6262         (power9-sqrt, power9-dsqrt): Add div/sqrt resource.
6263         (power9-vecfdiv, power9-vecdiv): Correct latency, add div/sqrt
6264         resource.
6265         (power9-qpdiv, power9-qpmul): Adjust resource usage.
6266
6267 2017-11-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
6268
6269         * config/rs6000/rs6000.c (rs6000_expand_builtin): Do not do the
6270         switch statement mapping KF built-ins to TF built-ins if we don't
6271         have the proper ISA 3.0 assembler support.
6272
6273 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
6274
6275         * tree-emutls.c (lower_emutls_data): Remove unused bb_freq.
6276         (lower_emutls_function_body): Do not compute it.
6277
6278 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
6279
6280         * ipa-split.c (split_bb_info): Turn time to sreal.
6281         (split_point): Likewise.
6282         (dump_split_point): Likewise.
6283         (fine_split_points): Likewise.
6284         (execute_split_functions): Only zero split_bbs; turn time to sreals.
6285
6286 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
6287
6288         * ipa-fnsummary.c (analyze_function_body): Accumulate time consistently
6289         in sreal.
6290
6291 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
6292
6293         * predict.c (combine_predictions_for_bb): Preserve zero predicted
6294         edges.
6295         (expensive_function_p): Remove useless assert.
6296         (determine_unlikely_bbs): Propagate also forward; determine cold blocks
6297
6298 2017-11-16  Martin Sebor  <msebor@redhat.com>
6299
6300         PR tree-optimization/82588
6301         PR tree-optimization/82583
6302         * tree-vrp.c (check_array_ref): Handle flexible array members,
6303         string literals, and inner indices.
6304         (search_for_addr_array): Add detail to diagnostics.
6305
6306 2017-11-16  Nathan Sidwell  <nathan@acm.org>
6307
6308         PR c++/82836
6309         PR c++/82737
6310         * tree.h (COPY_DECL_RTL): Rename parms for clarity.
6311         (SET_DECL_ASSEMBLER_NAME): Forward to
6312         overwrite_decl_assembler_name.
6313         (COPY_DECL_ASSEMBLER_NAME): Rename parms for clarity.
6314         (overwrite_decl_assembler_name): Declare.
6315         * tree.c (overwrite_decl_assembler_name): New.
6316         * langhooks-def.h (lhd_overwrite_decl_assembler_name): Declare.
6317         (LANG_HOOKS_OVERWRITE_DECL_ASSEMBLER_NAME): Provide default.
6318         (LANG_HOOKS_INITIALIZER): Add it.
6319         * langhooks.h (struct lang_hooks): Add overwrite_decl_assembler_name.
6320         * langhooks.c (lhd_set_decl_assembler_name): Use
6321         SET_DECL_ASSEMBLER_NAME.
6322         (lhd_overwrite_decl_assembler_name): Default implementation.
6323
6324 2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
6325             Jackson Woodruff  <jackson.woodruff@arm.com>
6326
6327         PR tree-optimization/71026
6328         * match.pd: Canonicalize constant multiplies in division.
6329
6330 2017-11-16  Wilco Dijkstra  <wdijkstr@arm.com>
6331
6332         * opts.c (default_options_table): Add OPT_fomit_frame_pointer entry.
6333         * common/config/alpha/alpha-common.c (TARGET_OPTION_OPTIMIZATION_TABLE):
6334         Remove OPT_fomit_frame_pointer entry.
6335         * common/config/arc/arc-common.c: Likewise.
6336         * common/config/arm/arm-common.c: Likewise.
6337         * common/config/avr/avr-common.c: Likewise.
6338         * common/config/c6x/c6x-common.c: Likewise.
6339         * common/config/cr16/cr16-common.c: Likewise.
6340         * common/config/cris/cris-common.c: Likewise.
6341         * common/config/epiphany/epiphany-common.c: Likewise.
6342         * common/config/fr30/fr30-common.c: Likewise.
6343         * common/config/frv/frv-common.c: Likewise.
6344         * common/config/ia64/ia64-common.c: Likewise.
6345         * common/config/iq2000/iq2000-common.c: Likewise.
6346         * common/config/lm32/lm32-common.c: Likewise.
6347         * common/config/m32r/m32r-common.c: Likewise.
6348         * common/config/mcore/mcore-common.c: Likewise.
6349         * common/config/microblaze/microblaze-common.c: Likewise.
6350         * common/config/mips/mips-common.c: Likewise.
6351         * common/config/mmix/mmix-common.c: Likewise.
6352         * common/config/mn10300/mn10300-common.c: Likewise.
6353         * common/config/nios2/nios2-common.c: Likewise.
6354         * common/config/pa/pa-common.c: Likewise.
6355         * common/config/pdp11/pdp11-common.c: Likewise.
6356         * common/config/powerpcspe/powerpcspe-common.c: Likewise.
6357         * common/config/riscv/riscv-common.c: Likewise.
6358         * common/config/rs6000/rs6000-common.c: Likewise.
6359         * common/config/rx/rx-common.c: Likewise.
6360         * common/config/s390/s390-common.c: Likewise.
6361         * common/config/sh/sh-common.c: Likewise.
6362         * common/config/sparc/sparc-common.c: Likewise.
6363         * common/config/tilegx/tilegx-common.c: Likewise.
6364         * common/config/tilepro/tilepro-common.c: Likewise.
6365         * common/config/v850/v850-common.c: Likewise.
6366         * common/config/visium/visium-common.c: Likewise.
6367         * common/config/xstormy16/xstormy16-common.c: Likewise.
6368         * common/config/xtensa/xtensa-common.c: Likewise.
6369         * invoke.texi (-fomit-frame-pointer): Update documentation.
6370
6371 2017-11-16  Jan Hubicka  <hubicka@ucw.cz>
6372
6373         * tree-cfg.c (gimple_find_sub_bbs): Do not compute freq.
6374
6375 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6376
6377         * cfg.c (scale_bbs_frequencies_int,
6378         cale_bbs_frequencies_gcov_type): Remove.
6379         * cfg.h (scale_bbs_frequencies_int,
6380         cale_bbs_frequencies_gcov_type): Remove.
6381
6382 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6383
6384         * tree-ssa-loop-manip.c
6385         (scale_dominated_blocks_in_loop): Update to profile counts.
6386         (tree_transform_and_unroll_loop): Likewise.
6387
6388 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6389
6390         * tree-vect-loop-manip.c (vect_do_peeling): Do not use
6391         scale_bbs_frequencies_int.
6392
6393 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6394
6395         * final.c (compute_alignments): Use counts rather than frequencies.
6396
6397 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6398
6399         * cfgloopanal.c: Include sreal.h
6400         (average_num_loop_insns): Use counts and sreal for accounting.
6401
6402 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6403
6404         * cfgloopmanip.c (duplicate_loop_to_header_edge): Cleanup profile
6405         manipulation.
6406
6407 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
6408             Kito Cheng  <kito.cheng@gmail.com>
6409
6410         * config/nds32/constraints.md: Provide more constraints.
6411         * config/nds32/nds32.h (enum reg_class, REG_CLASS_NAMES,
6412         REG_CLASS_CONTENTS): Define R5_REG, R8_REG, and FRAME_POINTER_REG to
6413         support constraints usage.
6414
6415 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
6416
6417         * config/nds32/constants.md (UNSPEC_VOLATILE_FUNC_RETURN): Remove.
6418
6419 2017-11-16  Chung-Ju Wu  <jasonwucj@gmail.com>
6420             Kito Cheng  <kito.cheng@gmail.com>
6421
6422         * config/nds32/nds32.opt: Add mext-perf, mext-perf2, mext-string.
6423         * config/nds32/nds32.opt: Refine the layout.
6424         * config/nds32/nds32.c (TARGET_EXT_PERF, TARGET_EXT_PERF2,
6425         TARGET_EXT_STRING): Support new options.
6426         * config/nds32/nds32.h: Likewise.
6427         * config/nds32/nds32.md: Likewise.
6428         * config/nds32/nds32-predicates.c: Likewise.
6429         * config/nds32/constraints.md: Likewise.
6430         * common/config/nds32/nds32-common.c: Likewise.
6431
6432 2017-11-16  Julia Koval  <julia.koval@intel.com>
6433
6434         PR target/82983
6435         * config/i386/gfniintrin.h: Add sse check.
6436         * config/i386/i386.c (ix86_expand_builtin): Fix gfni check.
6437
6438 2017-11-16  Julia Koval  <julia.koval@intel.com>
6439
6440         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VBMI2_SET,
6441         OPTION_MASK_ISA_AVX512VBMI2_UNSET): New.
6442         (ix86_handle_option): Handle -mavx512vbmi2.
6443         * config/i386/cpuid.h: Add bit_AVX512VBMI2.
6444         * config/i386/driver-i386.c (host_detect_local_cpu): Handle new bit.
6445         * config/i386/i386-c.c (__AVX512VBMI2__): New.
6446         * config/i386/i386.c (ix86_target_string): Handle -mavx512vbmi2.
6447         (ix86_valid_target_attribute_inner_p): Ditto.
6448         * config/i386/i386.h (TARGET_AVX512VBMI2, TARGET_AVX512VBMI2_P): New.
6449         * config/i386/i386.opt (mavx512vbmi2): New option.
6450         * doc/invoke.texi: Add new option.
6451
6452 2017-11-16  Julia Koval  <julia.koval@intel.com>
6453
6454         * config/i386/gfniintrin.h (_mm_gf2p8mul_epi8, _mm256_gf2p8mul_epi8,
6455         _mm_mask_gf2p8mul_epi8, _mm_maskz_gf2p8mul_epi8,
6456         _mm256_mask_gf2p8mul_epi8, _mm256_maskz_gf2p8mul_epi8,
6457         _mm512_mask_gf2p8mul_epi8, _mm512_maskz_gf2p8mul_epi8,
6458         _mm512_gf2p8mul_epi8): New intrinsics.
6459         * config/i386/i386-builtin-types.def
6460         (V64QI_FTYPE_V64QI_V64QI): New type.
6461         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8mulb_v64qi,
6462         __builtin_ia32_vgf2p8mulb_v64qi_mask, __builtin_ia32_vgf2p8mulb_v32qi,
6463         __builtin_ia32_vgf2p8mulb_v32qi_mask, __builtin_ia32_vgf2p8mulb_v16qi,
6464         __builtin_ia32_vgf2p8mulb_v16qi_mask): New builtins.
6465         * config/i386/sse.md (vgf2p8mulb_*): New pattern.
6466         * config/i386/i386.c (ix86_expand_args_builtin): Handle new type.
6467
6468 2017-11-15  Uros Bizjak  <ubizjak@gmail.com>
6469
6470         * config/i386/i386.c (x86_print_call_or_nop): Emit 5 byte nop
6471         explicitly as a stream of bytes.
6472
6473 2017-11-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
6474
6475         * config/rs6000/altivec.h (vec_xst_be): New #define.
6476         * config/rs6000/altivec.md (altivec_vperm_<mode>_direct): Rename
6477         and externalize from *altivec_vperm_<mode>_internal.
6478         * config/rs6000/rs6000-builtin.def (XL_BE_V16QI): Remove macro
6479         instantiation.
6480         (XL_BE_V8HI): Likewise.
6481         (XL_BE_V4SI): Likewise.
6482         (XL_BE_V4SI): Likewise.
6483         (XL_BE_V2DI): Likewise.
6484         (XL_BE_V4SF): Likewise.
6485         (XL_BE_V2DF): Likewise.
6486         (XST_BE): Add BU_VSX_OVERLOAD_X macro instantiation.
6487         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Correct
6488         all array entries with these keys: VSX_BUILTIN_VEC_XL,
6489         VSX_BUILTIN_VEC_XL_BE, VSX_BUILTIN_VEC_XST.  Add entries for key
6490         VSX_BUILTIN_VEC_XST_BE.
6491         * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Remove.
6492         (altivec_expand_builtin): Remove handling for VSX_BUILTIN_XL_BE_*
6493         built-ins.
6494         (altivec_init_builtins): Replace conditional calls to def_builtin
6495         for __builtin_vsx_ld_elemrev_{v8hi,v16qi} and
6496         __builtin_vsx_st_elemrev_{v8hi,v16qi} based on TARGET_P9_VECTOR
6497         with unconditional calls.  Remove calls to def_builtin for
6498         __builtin_vsx_le_be_<mode>.  Add a call to def_builtin for
6499         __builtin_vec_xst_be.
6500         * config/rs6000/vsx.md (vsx_ld_elemrev_v8hi): Convert define_insn
6501         to define_expand, and add alternate RTL generation for P8.
6502         (*vsx_ld_elemrev_v8hi_internal): New define_insn based on
6503         vsx_ld_elemrev_v8hi.
6504         (vsx_ld_elemrev_v16qi): Convert define_insn to define_expand, and
6505         add alternate RTL generation for P8.
6506         (*vsx_ld_elemrev_v16qi_internal): New define_insn based on
6507         vsx_ld_elemrev_v16qi.
6508         (vsx_st_elemrev_v8hi): Convert define_insn
6509         to define_expand, and add alternate RTL generation for P8.
6510         (*vsx_st_elemrev_v8hi_internal): New define_insn based on
6511         vsx_st_elemrev_v8hi.
6512         (vsx_st_elemrev_v16qi): Convert define_insn to define_expand, and
6513         add alternate RTL generation for P8.
6514         (*vsx_st_elemrev_v16qi_internal): New define_insn based on
6515         vsx_st_elemrev_v16qi.
6516
6517 2017-11-15  H.J. Lu  <hongjiu.lu@intel.com>
6518
6519         PR target/82990
6520         * config/i386/i386.c (pass_insert_vzeroupper::gate): Remove
6521         TARGET_AVX512ER check.
6522         (ix86_option_override_internal): Set MASK_VZEROUPPER if
6523         neither -mzeroupper nor -mno-zeroupper is used and
6524         TARGET_EMIT_VZEROUPPER is set.
6525         * config/i386/i386.h (TARGET_EMIT_VZEROUPPER): New.
6526         * config/i386/x86-tune.def: Add X86_TUNE_EMIT_VZEROUPPER.
6527
6528 2017-11-15  Will Schmidt  <will_schmidt@vnet.ibm.com>
6529
6530         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
6531         folding of vector compares.
6532         (fold_build_vec_cmp): New helper function.
6533         (fold_compare_helper): New helper function.
6534         (builtin_function_type): Add compare builtins to the list of functions
6535         having unsigned arguments.  Cosmetic updates to comment indentation.
6536         * config/rs6000/vsx.md (vcmpneb, vcmpneh, vcmpnew): Update to specify
6537         the not+eq combination.
6538
6539 2017-11-15  Bin Cheng  <bin.cheng@arm.com>
6540
6541         PR tree-optimization/82726
6542         PR tree-optimization/70754
6543         * tree-predcom.c (order_drefs_by_pos): New function.
6544         (combine_chains): Move code setting has_max_use_after to...
6545         (try_combine_chains): ...here.  New parameter.  Sort combined chains
6546         according to position information.
6547         (tree_predictive_commoning_loop): Update call to above function.
6548         (update_pos_for_combined_chains, pcom_stmt_dominates_stmt_p): New.
6549
6550 2017-11-15  Bin Cheng  <bin.cheng@arm.com>
6551
6552         PR tree-optimization/82726
6553         Revert
6554         2017-01-23  Bin Cheng  <bin.cheng@arm.com>
6555
6556         PR tree-optimization/70754
6557         * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
6558         (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
6559         combined stmt before it if not NULL.
6560         (combine_chains): Process refs reversely and compute dominance point
6561         for root ref.
6562
6563         Revert
6564         2017-02-23  Bin Cheng  <bin.cheng@arm.com>
6565
6566         PR tree-optimization/79663
6567         * tree-predcom.c (combine_chains): Process refs in reverse order
6568         only for ZERO length chains, and add explaining comment.
6569
6570 2017-11-15  Tamar Christina  <tamar.christina@arm.com>
6571
6572         * config/arm/arm-cpus.in (armv8_3, ARMv8_3a, armv8.3-a): New
6573         * config/arm/arm-tables.opt (armv8.3-a): Regenerated.
6574         * doc/invoke.texi (ARM Options): Add armv8.3-a.
6575
6576 2017-11-15  Tamar Christina  <tamar.christina@arm.com>
6577
6578         * config/arm/arm.h (TARGET_DOTPROD): Add arm_arch8_2.
6579
6580 2017-11-15  Martin Liska  <mliska@suse.cz>
6581
6582         * tree-cfg.c (pass_warn_function_return::execute):
6583         Compare warn_return_type for greater than zero.
6584
6585 2017-11-15  Sebastian Peryt  <sebastian.peryt@intel.com>
6586
6587         PR target/82941
6588         PR target/82942
6589         * config/i386/i386.c (pass_insert_vzeroupper): Modify gate condition
6590         to return true on Xeon and not on Xeon Phi.
6591         (ix86_check_avx256_register): Changed to ...
6592         (ix86_check_avx_upper_register): ... this. Add extra check for
6593         VALID_AVX512F_REG_OR_XI_MODE.
6594         (ix86_avx_u128_mode_needed): Changed
6595         ix86_check_avx256_register to ix86_check_avx_upper_register.
6596         (ix86_check_avx256_stores): Changed to ...
6597         (ix86_check_avx_upper_stores): ... this. Changed
6598         ix86_check_avx256_register to ix86_check_avx_upper_register.
6599         (ix86_avx_u128_mode_after): Changed
6600         avx_reg256_found to avx_upper_reg_found. Changed
6601         ix86_check_avx256_stores to ix86_check_avx_upper_stores.
6602         (ix86_avx_u128_mode_entry): Changed
6603         ix86_check_avx256_register to ix86_check_avx_upper_register.
6604         (ix86_avx_u128_mode_exit): Ditto.
6605         * config/i386/i386.h: (host_detect_local_cpu): New define.
6606
6607 2017-11-15  Dominik Infuehr  <dominik.infuehr@theobroma-systems.com>
6608
6609         * config/arm/xgene1.md (xgene1): Split into automatons
6610         xgene1_main, xgene1_decoder, xgene1_div, xgene1_simd.
6611         (xgene1_f_load): Adjust reservations and/or types.
6612         (xgene1_f_store): Likewise.
6613         (xgene1_load_pair): Likewise.
6614         (xgene1_store_pair): Likewise.
6615         (xgene1_fp_load1): Likewise.
6616         (xgene1_load1): Likewise.
6617         (xgene1_store1): Likewise.
6618         (xgene1_move): Likewise.
6619         (xgene1_alu): Likewise.
6620         (xgene1_simd): Likewise.
6621         (xgene1_bfm): Likewise.
6622         (xgene1_neon_load1): Likewise.
6623         (xgene1_neon_store1): Likewise.
6624         (xgene1_neon_logic): Likewise.
6625         (xgene1_neon_st1): Likewise.
6626         (xgene1_neon_ld1r): Likewise.
6627         (xgene1_alu_cond): Added.
6628         (xgene1_shift_reg): Likwise.
6629         (xgene1_bfx): Likewise.
6630         (xgene1_mul): Split into xgene1_mul32, xgene1_mul64.
6631
6632 2017-11-15  Jakub Jelinek  <jakub@redhat.com>
6633
6634         PR target/82981
6635         * internal-fn.c: Include gimple-ssa.h, tree-phinodes.h and
6636         ssa-iterators.h.
6637         (can_widen_mult_without_libcall): New function.
6638         (expand_mul_overflow): If only checking unsigned mul overflow,
6639         not result, and can do efficiently MULT_HIGHPART_EXPR, emit that.
6640         Don't use WIDEN_MULT_EXPR if it would involve a libcall, unless
6641         no other way works.  Add MULT_HIGHPART_EXPR + MULT_EXPR support.
6642         (expand_DIVMOD): Formatting fix.
6643         * expmed.h (expand_mult): Add NO_LIBCALL argument.
6644         * expmed.c (expand_mult): Likewise.  Use OPTAB_WIDEN rather
6645         than OPTAB_LIB_WIDEN if NO_LIBCALL is true, and allow it to fail.
6646
6647         PR tree-optimization/82977
6648         * tree-ssa-strlen.c (strlen_optimize_stmt): Pass a reference to a copy
6649         constructed temporary to strlen_to_stridx.put.
6650
6651 2017-11-15  Martin Liska  <mliska@suse.cz>
6652
6653         * configure.ac: Remove -fkeep-inline-functions from coverage_flags.
6654         * configure: Regenerate.
6655
6656 2017-11-15  Martin Liska  <mliska@suse.cz>
6657
6658         PR target/82927
6659         * config/sh/sh-mem.cc: Use proper probability for
6660         REG_BR_PROB_NOTE.
6661
6662 2017-11-14  Jeff Law  <law@redhat.com>
6663
6664         * explow.c (anti_adjust_stack_and_probe_stack_clash): Avoid probing
6665         the red zone for stack_clash_protection_final_dynamic_probe targets
6666         when the total dynamic stack size is zero bytes.
6667
6668         * tree-ssa-threadupdate.c (thread_through_all_blocks): Thread
6669         blocks is post order.
6670
6671 2017-11-15  Alexandre Oliva  <aoliva@redhat.com>
6672
6673         * dumpfile.h (TDF_COMPARE_DEBUG): New.
6674         * final.c (rest_of_clean_state): Set it for the
6675         -fcompare-debug dump.
6676         * tree-pretty-print.c (dump_generic_node): Omit OBJ_TYPE_REF
6677         class when TDF_COMPARE_DEBUG is set.
6678
6679         * dwarf2out.c (gen_producer_string): Discard
6680         OPT_fcompare_debug.
6681
6682 2017-11-15  Joseph Myers  <joseph@codesourcery.com>
6683
6684         PR c/81156
6685         * doc/extend.texi (Other Builtins): Document __builtin_tgmath.
6686         * ginclude/tgmath.h (__tg_cplx, __tg_ldbl, __tg_dbl, __tg_choose)
6687         (__tg_choose_2, __tg_choose_3, __TGMATH_REAL_1_2)
6688         (__TGMATH_REAL_2_3): Remove macros.
6689         (__TGMATH_CPLX, __TGMATH_CPLX_2, __TGMATH_REAL, __TGMATH_REAL_2)
6690         (__TGMATH_REAL_3, __TGMATH_CPLX_ONLY): Define using
6691         __builtin_tgmath.
6692         (frexp, ldexp, nexttoward, scalbn, scalbln): Define using
6693         __TGMATH_REAL_2.
6694         (remquo): Define using __TGMATH_REAL_3.
6695
6696 2017-11-14  Jeff Law  <law@redhat.com>
6697
6698         * vr-values.c: New file with contents extracted from tree-vrp.c.
6699         * Makefile.in (OBJS): Add vr-values.o
6700         * tree-vrp.h (set_value_range_to_nonnull): Prototype.
6701         (set_value_range, set_and_canonicalize_value_range): Likewise.
6702         (vrp_bitmap_equal_p, range_is_nonnull): Likewise.
6703         (value_range_constant_singleton, symbolic_range_p): Likewise.
6704         (compare_values, compare_values_warnv, vrp_val_is_min): Likewise.
6705         (vrp_val_is_max, copy_value_range, set_value_range_to_value): Likewise.
6706         (extract_range_from_binary_expr_1, vrp_val_min, vrp_val_max): Likewise.
6707         (set_value_range_to_null, range_int_cst_p, opreand_less_p): Likewise.
6708         (find_case_label_range, find_case_label_index): Likewise.
6709         (zero_nonzero_bits_from_vr, overflow_comparison_p): Likewise.
6710         (range_int_cst_singleton_p, value_inside_range): Likewise.
6711         (get_single_symbol): Likewise.
6712         (switch_update): Move structure definition here.
6713         (to_remove_edges, to_update_switch_stmts): Provide externs.
6714         * tree-vrp.c: Move all methods for vr-values class to vr-values.c
6715         (vrp_val_max, vrp_val_min, vrp_val_is_max): Make externally visible.
6716         (vrp_val_is_min, set_value_range): Likewise.
6717         (set_and_canonicalize_value_range, copy_value_range): Likewise.
6718         (set_value_range_to_value, set_value_range_to_nonnull): Likewise.
6719         (set_value_range_to_null, vrp_bitmap_equal_p): Likewise.
6720         (range_is_nonnull, range_int_cst_p): Likewwise.
6721         (range_int_cst_singleton_p, symbolic_range_p): Likewise.
6722         (get_single_symbol, operand_less_p): Likewise
6723         (compare_values_warnv, compare_values): Likewise.
6724         (value_inside_range, value_range_constant_singleton): Likewise.
6725         (zero_nonzero_bitgs_from_vr): Likewise.
6726         (extract_range_from_binary_expr_1): Likewise.
6727         (overflow_comparison_p): Likewise.
6728         (to_remove_edges, to_update_switch_stmts): Likewise.
6729         (find_case_label-index, find_case_label_range): Likewise.
6730         (switch_update, set_value_range_to_nonnegative): Remove.
6731         (set_value_range_to_truthvalue): Likewise.
6732         (symbolic_range_based_on_p, gimple_assign_nonzero_p): Likewise.
6733         (gimple_stmt_nonzero_p, compare_ranges): Likewise.
6734         (compare_range_with_value, vrp_valueize, vrp_valueize_1): Likewise.
6735         (find_case_label_ranges, test_for_singularity): Likewise.
6736         (range_fits_type_p, simplify_conversion_using_ranges): LIkewise.
6737         (x_vr_values): Move to its remaining use site.
6738
6739 2017-11-10  Jeff Law  <law@redhat.com>
6740
6741         * vr-values.h (VR_INITIALIZER): Move #define here.
6742         * gimple-ssa-evrp.c: New file with contents extracted from tree-vrp.c
6743         * Makefile.in (OBJS): Add tree-evrp.o
6744         * tree-vrp.h (assert_info): Move structure definition here.
6745         (set_value_range_to_varying): Prototype.
6746         (vrp_operand_equal_p, range_includes_zero_p): Likewise.
6747         (infer_value_range, register_edge_assert_for): Likewise.
6748         (stmt_interesting_for_vrp): Likewise.
6749         * tree-vrp.c: Move all methods for evrp class into gimple-ssa-evrp.c.
6750         (set_value_range_to_varying): No longer static.
6751         (vrp_operand_equal_p, range_includes_zero_p): Likewise.
6752         (infer_value_range, register_edge_assert_for): Likewise.
6753
6754 2017-11-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
6755
6756         * config/rs6000/rs6000.md (bswapdi2): On 32-bit ISA 3.0, don't
6757         generate the XXBRD instruction.
6758
6759         * config/rs6000/rs6000-c.c (is_float128_p): New helper function.
6760         (rs6000_builtin_type_compatible): Treat _Float128 and long double
6761         as being compatible if -mabi=ieeelongdouble.
6762         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_HW_1): New macros
6763         to setup float128 built-ins with hardware support.
6764         (BU_FLOAT128_HW_2): Likewise.
6765         (BU_FLOAT128_HW_3): Likewise.
6766         (BU_FLOAT128_HW_VSX_1): Likewise.
6767         (BU_FLOAT128_HW_VSX_2): Likewise.
6768         (scalar_extract_expq): Change float128 built-in functions to
6769         accommodate having both KFmode and TFmode functions.  Use the
6770         KFmode variant as the default.
6771         (scalar_extract_sigq): Likewise.
6772         (scalar_test_neg_qp): Likewise.
6773         (scalar_insert_exp_q): Likewise.
6774         (scalar_insert_exp_qp): Likewise.
6775         (scalar_test_data_class_qp): Likewise.
6776         (sqrtf128_round_to_odd): Delete processing the round to odd
6777         built-in functions as special built-in functions, and define them
6778         as float128 built-ins.  Use the KFmode variant as the default.
6779         (truncf128_round_to_odd): Likewise.
6780         (addf128_round_to_odd): Likewise.
6781         (subf128_round_to_odd): Likewise.
6782         (mulf128_round_to_odd): Likewise.
6783         (divf128_round_to_odd): Likewise.
6784         (fmaf128_round_to_odd): Likewise.
6785         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
6786         support for KFmode and TFmode xststdcqp calls.
6787         (rs6000_expand_builtin): If long double is IEEE 128-bit floating
6788         point, switch the built-in handlers for the get/set float128
6789         exponent, get float128 mantissa, float128 test built-ins, and the
6790         float128 round to odd built-in functions.  Eliminate creating the
6791         float128 round to odd built-in functions as special built-ins.
6792         (rs6000_init_builtins): Eliminate special creation of the float128
6793         round to odd built-in functions.
6794         * config/rs6000/vsx.md (xsxexpqp_<mode>): Change float128 built-in
6795         function insns to support both TFmode and KFmode variants.
6796         (xsxsigqp_<mode>): Likewise.
6797         (xsiexpqpf_<mode>): Likewise.
6798         (xsiexpqp_<mode>): Likewise.
6799         (xststdcqp_<mode>): Likewise.
6800         (xststdcnegqp_<mode>): Likewise.
6801         (xststdcqp_<mode>): Likewise.
6802
6803 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6804
6805         * tree-ssa-threadupdate.c (compute_path_counts): Remove
6806         unused path_in_freq_ptr parameter.
6807         (ssa_fix_duplicate_block_edges): Do not pass around path_in_freq
6808
6809 2017-11-14  Jan Hubicka  <hubicka@ucw.cz>
6810
6811         * ipa-inline.c (edge_badness): Dump sreal frequency.
6812         (compute_inlined_call_time): Match natural implementaiton ...
6813         * ipa-fnsummary.c (estimate_edge_size_and_time): ... here; remove
6814         forgotten division by CGRAPH_FREQ_BASE.
6815
6816 2017-11-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
6817
6818         * config.gcc (*-*-solaris2*): Enable default_use_cxa_atexit since
6819         Solaris 11.  Update comment.
6820         * configure.ac (gcc_cv_ld_pid): Adapt comment for Solaris 12
6821         renaming.
6822         * config/sol2.h (STARTFILE_SPEC): Likewise.
6823         * configure: Regenerate.
6824
6825 2017-11-14  Carl Love  <cel@us.ibm.com>
6826
6827         * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Remove
6828         le_ and be_ prefixes to swap* variables.  Remove
6829         if (VECTOR_ELT_ORDER_BIG) statement. Remove E_V16QImode case
6830         statements.
6831
6832 2017-11-14  Jason Merrill  <jason@redhat.com>
6833
6834         Support GTY((cache)) on hash_map.
6835         * hash-traits.h (ggc_remove): Add ggc_maybe_mx member function.
6836         (ggc_cache_remove): Override it instead of ggc_mx.
6837         * hash-table.h (gt_ggc_mx): Call it instead of ggc_mx.
6838         (gt_cleare_cache): Call ggc_mx instead of gt_ggc_mx.
6839         * hash-map-traits.h (simple_hashmap_traits): Add maybe_mx member.
6840         (simple_cache_map_traits): Override maybe_mx.
6841         * hash-map.h (hash_entry): Add ggc_maybe_mx and keep_cache_entry.
6842         (hash_map): Friend gt_cleare_cache.
6843         (gt_cleare_cache): New.
6844         * tree.h (tree_cache_traits): New hash_map traits class.
6845         (tree_cache_map): New typedef.
6846
6847 2017-11-14  Richard Biener  <rguenther@suse.de>
6848
6849         * tree-cfgcleanup.c (cleanup_control_expr_graph): Remove first_p
6850         paramter and handling.
6851         (cleanup_control_flow_bb): Likewise.
6852         (cleanup_control_flow_pre): New helper performing a DFS walk
6853         to call cleanup_control_flow_bb in PRE order.
6854         (cleanup_tree_cfg_1): Do the first phase of cleanup_control_flow_bb
6855         via cleanup_control_flow_pre.
6856
6857 2017-11-14  James Greenhalgh  <james.greenhalgh@arm.com>
6858
6859         * config/aarch64/aarch64-simd.md
6860         (aarch64_simd_bsl<mode>_internal): Remove DImode.
6861         (*aarch64_simd_bsl<mode>_alt): Likewise.
6862         (aarch64_simd_bsldi_internal): New.
6863         (aarch64_simd_bsldi_alt): Likewise.
6864
6865 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6866
6867         * tracer.c (better_p): Do not compare frequencies.
6868         * reg-stack.c (better_edge): Likewise.
6869         * shrink-wrap.c (try_shrink_wrapping): Do not convert to gcov counts
6870         and back.
6871
6872 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6873
6874         * auto-profile.c (afdo_annotate_cfg): Use update_max_bb_count.
6875         * cgraphunit.c (cgraph_node::expand_thunk): Use update_max_bb_count.
6876         * ipa-utils.c (ipa_merge_profiles): Use update_max_bb_count.
6877         * lto-streamer-in.c (input_function): Use update_max_bb_count.
6878         * omp-expand.c (expand_omp_taskreg): Use update_max_bb_count.
6879         * predict.c (maybe_hot_frequency_p): Inline to ...
6880         (maybe_hot_count_p): ... here; rewrite to counts.
6881         (counts_to_freqs): Rename to ...
6882         (update_max_bb_count): ... this one.
6883         (expensive_function_p): Use counts.
6884         (estimate_bb_frequencies): Update.
6885         (rebuild_frequencies): Update.
6886         * predict.h (counts_to_freqs): Rename to ...
6887         (update_max_bb_count): ... this one.
6888         * profile.c (compute_branch_probabilities): Add debug info
6889         * tree-inline.c (expand_call_inline): Update debug info.
6890         (optimize_inline_calls): Use update_max_bb_count..
6891         (tree_function_versioning): Use update_max_bb_count..
6892         * value-prof.c (gimple_value_profile_transformations):
6893         Do not use update_max_bb_count.
6894
6895 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6896
6897         * ipa-inline.c (compute_uninlined_call_time, compute_inlined_call_time):
6898         always use frequencies.
6899
6900 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6901
6902         * bb-reorder.c: Remove frequencies from comments.
6903         (better_edge_p): Use profile counts.
6904         (find_traces): Dump profile counts.
6905         (rotate_loop): Use profile counts.
6906         (find_traces_1_round): Likewise.
6907         (connect_better_edge_p): Use counts instead of probabilities for
6908         reverse walk.
6909         (copy_bb_p): Drop early check for non-0 frequency.
6910         (sanitize_hot_paths): Update comments.
6911
6912 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6913
6914         * ipa-split.c (struct split_point): Add count.
6915         (consider_split): Do not compute incoming frequency; compute incoming
6916         count and store it to split_point.
6917         (split_function): Set count of the call to split part correctly.
6918
6919 2017-11-13  Carl Love  <cel@us.ibm.com>
6920
6921         * config/rs6000/altivec.md (altivec_vsumsws_be): Add define_expand.
6922
6923 2017-11-13  Tom Tromey  <tom@tromey.com>
6924
6925         * doc/cpp.texi (Variadic Macros): Document __VA_OPT__.
6926
6927 2017-11-13  Carl Love  <cel@us.ibm.com>
6928
6929         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins):
6930         Add support for builtins:
6931         unsigned int vec_first_{,miss}_match_{,or_eos}index,
6932         vector {un,}signed {char,int,short},
6933         vector {un,}signed {char,int,short}) arguments.
6934         * config/rs6000/rs6000-builtin.def (VFIRSTMATCHINDEX,
6935         VFIRSTMATCHOREOSINDEX, VFIRSTMISMATCHINDEX, VFIRSTMISMATCHOREOSINDEX):
6936         Add BU_P9V_AV_2 expansions for the builtins.
6937         * config/rs6000/altivec.h (vec_first_match_index,
6938         vec_first_mismatch_index, vec_first_match_or_eos_index,
6939         vec_first_mismatch_or_eos_index): Add #defines for the builtins.
6940         * config/rs6000/rs6000-protos.h (bytes_in_mode): Add
6941         new extern declaration.
6942         * config/rs6000/rs6000.c (bytes_in_mode): Add new function.
6943         * config/rs6000/vsx.md (first_match_index_<mode>,
6944         first_match_or_eos_index_<mode>, first_mismatch_index_<mode>,
6945         first_mismatch_or_eos_index_<mode>): Add define expand.
6946         (vctzlsbb_<mode>): Add mode field to define_insn for vctzlsbb.
6947         * doc/extend.texi: Update the built-in documenation file for the new
6948         built-in functions.
6949
6950 2017-11-13  Michael Meissner  <meissner@linux.vnet.ibm.com>
6951
6952         * match.pd: Convert fminf<N>, fminf<N>x, fmax<N>, and fmax<N>x
6953         into the min/max operations for _Float<N> and _Float<N>X types.
6954
6955 2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
6956
6957         PR lto/81351
6958         * dwarf2out.c (do_eh_frame): New static variable.
6959         (dwarf2out_begin_prologue): Set it.
6960         (dwarf2out_frame_finish): Test it instead of dwarf2out_do_eh_frame.
6961
6962 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6963
6964         * tree-ssa-coalesce.c (coalesce_cost): Fix formating.
6965
6966         * tree-ssa-sink.c (select_best_block): Do not use frequencies.
6967
6968 2017-11-13  Eric Botcazou  <ebotcazou@adacore.com>
6969
6970         PR lto/81351
6971         * debug.h (dwarf2out_do_eh_frame): Declare.
6972         * dwarf2cfi.c (dwarf2out_do_eh_frame): New predicate.
6973         (dwarf2out_do_frame): Use it.
6974         (dwarf2out_do_cfi_asm): Likewise.
6975         * dwarf2out.c (dwarf2out_frame_finish): Likewise.
6976         (dwarf2out_assembly_start): Likewise.
6977         (dwarf2out_begin_prologue): Fix comment.
6978         * toplev.c (compile_file): Always call dwarf2out_frame_finish
6979         if the target needs either debug or unwind DWARF2 info.
6980         * lto-opts.c (lto_write_options): Do not save -fexceptions,
6981         -fnon-call-exceptions, -ffp-contract, -fmath-errno, -fsigned-zeros,
6982         -ftrapping-math, -ftrapv and -fwrapv.
6983
6984 2017-11-13  Jan Hubicka  <hubicka@ucw.cz>
6985
6986         * cgraph.c (cgraph_edge::sreal_frequency): New function.
6987         * cgraph.h (cgraph_edge::sreal_frequency): Declare.
6988         * ipa-fnsummary.c (dump_ipa_call_summary): Use sreal_frequency.
6989         (estimate_edge_size_and_time): Likewise.
6990         (ipa_merge_fn_summary_after_inlining): Likewise.
6991         * ipa-inline.c (cgraph_freq_base_rec): Remove.
6992         (compute_uninlined_call_time): Use sreal_frequency.
6993         (compute_inlined_call_time): Likewise.
6994         (ipa_inline): Do not initialize cgraph_freq_base_rec.
6995         * profile-count.c: Include sreal.h.
6996         (profile_count::to_sreal_scale): New.
6997         * profile-count.h: Forward declare sreal.
6998         (profile_count::to_sreal_scale): Declare.
6999
7000 2017-11-13  Nathan Sidwell  <nathan@acm.org>
7001
7002         * diagnostic.c (maybe_line_and_column): New.
7003         (diagnostic_get_location_text): Use it.
7004         (diagnostic_report_current_module): Likewise.
7005         (test_diagnostic_get_location_text): Add tests.
7006
7007 2017-11-13  Luis Machado  <luis.machado@linaro.org>
7008
7009         * doc/md.texi (Specifying processor pipeline description): Fix
7010         incorrect latency for the div instruction example.
7011
7012 2017-11-13  Jakub Jelinek  <jakub@redhat.com>
7013
7014         PR tree-optimization/78821
7015         * gimple-ssa-store-merging.c (compatible_load_p): Don't require
7016         that bit_not_p is the same.
7017         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
7018         (split_group): Count precisely bit_not_p bits in each statement.
7019         (invert_op): New function.
7020         (imm_store_chain_info::output_merged_store): Use invert_op to
7021         emit BIT_XOR_EXPR with a xor_mask instead of BIT_NOT_EXPR if some
7022         but not all orig_stores have BIT_NOT_EXPR in the corresponding spots.
7023
7024 2017-11-13  Martin Liska  <mliska@suse.cz>
7025
7026         * gcov.c (struct coverage_info): Remove typedef of coverage_t.
7027         (struct source_info): Likewise.
7028         (add_branch_counts): Likewise.
7029         (add_line_counts): Likewise.
7030         (function_summary): Likewise.
7031         (output_intermediate_line): Likewise.
7032         (generate_results): Likewise.
7033
7034 2017-11-13  Martin Liska  <mliska@suse.cz>
7035
7036         * gcov.c (struct block_info): Remove typedef for block_t.
7037         (struct line_info): Likewise.
7038         (line_info::has_block): Likewise.
7039         (EXIT_BLOCK): Likewise.
7040         (unblock): Likewise.
7041         (circuit): Likewise.
7042         (get_cycles_count): Likewise.
7043         (process_file): Likewise.
7044         (read_graph_file): Likewise.
7045         (solve_flow_graph): Likewise.
7046         (find_exception_blocks): Likewise.
7047         (add_line_counts): Likewise.
7048         (accumulate_line_info): Likewise.
7049         (output_line_details): Likewise.
7050
7051 2017-11-13  Martin Liska  <mliska@suse.cz>
7052
7053         * gcov.c (struct arc_info): Remove typedef for arc_t.
7054         (struct line_info): Likewise.
7055         (add_branch_counts): Likewise.
7056         (output_branch_count): Likewise.
7057         (function_info::~function_info): Likewise.
7058         (circuit): Likewise.
7059         (output_intermediate_line): Likewise.
7060         (read_graph_file): Likewise.
7061         (solve_flow_graph): Likewise.
7062         (find_exception_blocks): Likewise.
7063         (add_line_counts): Likewise.
7064         (accumulate_line_info): Likewise.
7065         (output_line_details): Likewise.
7066         (output_function_details): Likewise.
7067
7068 2017-11-13  Martin Liska  <mliska@suse.cz>
7069
7070         * gcov.c (struct function_info): Remove typedef for function_t.
7071         (struct source_info): Likewise.
7072         (source_info::get_functions_at_location): Likewise.
7073         (solve_flow_graph): Likewise.
7074         (find_exception_blocks): Likewise.
7075         (add_line_counts): Likewise.
7076         (output_intermediate_file): Likewise.
7077         (process_file): Likewise.
7078         (generate_results): Likewise.
7079         (release_structures): Likewise.
7080         (read_graph_file): Likewise.
7081         (read_count_file): Likewise.
7082         (accumulate_line_counts): Likewise.
7083         (output_lines): Likewise.
7084
7085 2017-11-13  Martin Liska  <mliska@suse.cz>
7086
7087         * gcov.c (function_info::function_info): Remove num_counts
7088         and add vector<gcov_type>.
7089         (function_info::~function_info): Use the vector.
7090         (process_file): Likewise.
7091         (read_graph_file): Likewise.
7092         (read_count_file): Likewise.
7093         (solve_flow_graph): Likewise.
7094
7095 2017-11-13  Martin Liska  <mliska@suse.cz>
7096
7097         * gcov.c (function_info::is_artificial): New function.
7098         (process_file): Erase all artificial early.
7099         (generate_results): Skip as all artificial are already
7100         removed.
7101
7102 2017-11-13  Martin Liska  <mliska@suse.cz>
7103
7104         * gcov.c (read_graph_file): Store to global vector of functions.
7105         (read_count_file): Iterate the vector.
7106         (process_file): Likewise.
7107         (generate_results): Likewise.
7108         (release_structures): Likewise.
7109
7110 2017-11-13  Jakub Jelinek  <jakub@redhat.com>
7111
7112         PR tree-optimization/82954
7113         * gimple-ssa-store-merging.c
7114         (imm_store_chain_info::coalesce_immediate_stores): If
7115         !infof->ops[N].base_addr, split group if info->ops[N].base_addr.
7116
7117 2017-11-13  Richard Sandiford  <richard.sandiford@linaro.org>
7118
7119         * config/aarch64/aarch64-simd.md (aarch64_store_lane0<mode>):
7120         Upddate call to ENDIAN_LANE_N.
7121         (aarch64_<sur>dot_lane<vsi2qi>): Use aarch64_endian_lane_rtx.
7122         (aarch64_<sur>dot_laneq<vsi2qi>): Likewise.
7123         (*aarch64_simd_vec_copy_lane<mode>): Update calls to ENDIAN_LANE_N
7124         and use aarch64_endian_lane_rtx.
7125         (*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
7126
7127 2017-11-12  Tom de Vries  <tom@codesourcery.com>
7128
7129         * config/riscv/riscv.h (ASM_OUTPUT_LABELREF): Wrap in do {} while (0).
7130
7131 2017-11-12  Tom de Vries  <tom@codesourcery.com>
7132
7133         * config/elfos.h (ASM_OUTPUT_ASCII): Remove semicolon after macro body.
7134
7135 2017-11-12  Tom de Vries  <tom@codesourcery.com>
7136
7137         * config/cr16/cr16.h (ASM_OUTPUT_LABELREF): Remove semicolon after macro
7138         body.
7139         * config/powerpcspe/xcoff.h (ASM_OUTPUT_LABELREF): Same.
7140         * config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Same.
7141         * defaults.h (ASM_OUTPUT_LABELREF): Same.
7142
7143 2017-11-11  Martin Sebor  <msebor@redhat.com>
7144
7145         PR c/81117
7146         * doc/extend.texi (attribute nonstring): Remove spurious argument.
7147
7148         PR bootstrap/82948
7149         * prefic.c (translate_name): Replace strncpy with memcpy to
7150         avoid -Wstringop-truncation.
7151
7152 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
7153
7154         * tree-ssa-loop-im.c (execute_sm_if_changed): Do not compute freq_sum.
7155
7156 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
7157
7158         * predict.c (maybe_hot_frequency_p): Do not use cfun.
7159
7160 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
7161
7162         * tree-ssa-tail-merge.c (replace_block_by): Fix and re-enable profile
7163         merging.
7164
7165 2017-11-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
7166
7167         * config/rs6000/rs6000.md (bswaphi2_reg): On ISA 3.0 systems,
7168         enable generating XXBRH if the value is in a vector register.
7169         (bswapsi2_reg): On ISA 3.0 systems, enable generating XXBRW if the
7170         value is in a vector register.
7171         (bswapdi2_reg): On ISA 3.0 systems, always use XXBRD to do
7172         register to register bswap64's instead of doing the GPR sequence
7173         used on previous machines.
7174         (bswapdi2_xxbrd): New insn.
7175         (bswapdi2_reg): Disallow on ISA 3.0.
7176         (register to register bswap64 splitter): Do not split the insn on
7177         ISA 3.0 systems that use XXBRD.
7178
7179 2017-11-10  Martin Sebor  <msebor@redhat.com>
7180
7181         PR c/81117
7182         * config/darwin-c.c (framework_construct_pathname): Replace strncpy
7183         with memcpy.
7184         (find_subframework_file): Same.
7185
7186 2017-11-10  Jan Hubicka  <hubicka@ucw.cz>
7187
7188         * auto-profile.c (afdo_indirect_call): Drop frequency.
7189         * cgraph.c (symbol_table::create_edge): Drop frequency argument.
7190         (cgraph_node::create_edge): Drop frequency argument.
7191         (cgraph_node::create_indirect_edge): Drop frequency argument.
7192         (cgraph_edge::make_speculative): Drop frequency arguments.
7193         (cgraph_edge::resolve_speculation): Do not update frequencies
7194         (cgraph_edge::dump_edge_flags): Do not dump frequency.
7195         (cgraph_node::dump): Check consistency in IPA mode.
7196         (cgraph_edge::maybe_hot_p): Use IPA counter.
7197         (cgraph_edge::verify_count_and_frequency): Rename to ...
7198         (cgraph_edge::verify_count): ... this one; drop frequency checking.
7199         (cgraph_node::verify_node): Update.
7200         * cgraph.h (struct cgraph_edge): Drop frequency.
7201         (cgraph_edge::frequency): New function.
7202         * cgraphbuild.c (pass_build_cgraph_edges::execute): Donot pass
7203         frequencies.
7204         (cgraph_edge::rebuild_edges): Likewise.
7205         * cgraphclones.c (cgraph_edge::clone): Scale only counts.
7206         (duplicate_thunk_for_node): Do not pass frequency.
7207         (cgraph_node::create_clone): Scale only counts.
7208         (cgraph_node::create_virtual_clone): Do not pass frequency.
7209         (cgraph_node::create_edge_including_clones): Do not pass frequency.
7210         (cgraph_node::create_version_clone): Do not pass frequency.
7211         * cgraphunit.c (cgraph_node::analyze): Do not pass frequency.
7212         (cgraph_node::expand_thunk): Do not pass frequency.
7213         (cgraph_node::create_wrapper): Do not pass frequency.
7214         * gimple-iterator.c (update_call_edge_frequencies): Do not pass
7215         frequency.
7216         * gimple-streamer-in.c (input_bb): Scale only IPA counts.
7217         * ipa-chkp.c (chkp_produce_thunks): Do not pass frequency.
7218         * ipa-cp.c (ipcp_lattice::print): Use frequency function.
7219         (gather_caller_stats): Use frequency function.
7220         (ipcp_cloning_candidate_p): Use frequency function.
7221         (ipcp_propagate_stage): Use frequency function.
7222         (get_info_about_necessary_edges): Use frequency function.
7223         (update_profiling_info): Update only IPA profile.
7224         (update_specialized_profile): Use frequency functoin.
7225         (perhaps_add_new_callers): Update only IPA profile.
7226         * ipa-devirt.c (ipa_devirt): Use IPA profile.
7227         * ipa-fnsummary.c (redirect_to_unreachable): Do not set frequrency.
7228         (dump_ipa_call_summary): Use frequency function.
7229         (estimate_edge_size_and_time): Use frequency function.
7230         (ipa_merge_fn_summary_after_inlining): Use frequency function.
7231         * ipa-inline-analysis.c (do_estimate_edge_time): Use IPA profile.
7232         * ipa-inline-transform.c (update_noncloned_frequencies): Rename to ..
7233         (update_noncloned_counts): ... ths one; scale counts only.
7234         (clone_inlined_nodes): Do not scale frequency.
7235         (inline_call): Do not pass frequency.
7236         * ipa-inline.c (compute_uninlined_call_time): Use IPA profile.
7237         (compute_inlined_call_time): Use IPA profile.
7238         (want_inline_small_function_p): Use IPA profile.
7239         (want_inline_self_recursive_call_p): Use IPA profile.
7240         (edge_badness): Use IPA profile.
7241         (lookup_recursive_calls): Use IPA profile.
7242         (recursive_inlining): Do not pass frequency.
7243         (resolve_noninline_speculation): Do not update frequency.
7244         (inline_small_functions): Collect max of IPA profile.
7245         (dump_overall_stats): Dump IPA porfile.
7246         (dump_inline_stats): Dump IPA porfile.
7247         (ipa_inline): Collect IPA stats.
7248         * ipa-inline.h (clone_inlined_nodes): Update prototype.
7249         * ipa-profile.c (ipa_propagate_frequency_1): Use frequency function.
7250         (ipa_propagate_frequency): Use frequency function.
7251         (ipa_profile): Cleanup.
7252         * ipa-prop.c (ipa_make_edge_direct_to_target): Do not pass frequency
7253         * ipa-utils.c (ipa_merge_profiles): Merge all profiles.
7254         * lto-cgraph.c (lto_output_edge): Do not stream frequency.
7255         (input_node): Do not stream frequency.
7256         (input_edge): Do not stream frequency.
7257         (merge_profile_summaries): Scale only IPA profiles.
7258         * omp-simd-clone.c (simd_clone_adjust): Do not pass frequency.
7259         * predict.c (drop_profile): Do not recompute frequency.
7260         * trans-mem.c (ipa_tm_insert_irr_call): Do not pass frequency.
7261         (ipa_tm_insert_gettmclone_call): Do not pass frequency.
7262         * tree-cfg.c (execute_fixup_cfg): Drop profile to global0 if needed.
7263         * tree-chkp.c (chkp_copy_bounds_for_assign): Do not pass frequency.
7264         * tree-emutls.c (gen_emutls_addr): Do not pass frequency.
7265         * tree-inline.c (copy_bb): Do not scale frequency.
7266         (expand_call_inline): Do not scale frequency.
7267         (tree_function_versioning): Do not scale frequency.
7268         * ubsan.c (ubsan_create_edge): Do not pass frequency.
7269
7270 2017-11-10  Julia Koval  <julia.koval@intel.com>
7271
7272         * config/i386/gfniintrin.h (_mm_gf2p8affine_epi64_epi8)
7273         (_mm256_gf2p8affine_epi64_epi8, _mm_mask_gf2p8affine_epi64_epi8)
7274         (_mm_maskz_gf2p8affine_epi64_epi8, _mm256_mask_gf2p8affine_epi64_epi8)
7275         (_mm256_maskz_gf2p8affine_epi64_epi8)
7276         (_mm512_mask_gf2p8affine_epi64_epi8, _mm512_gf2p8affine_epi64_epi8)
7277         (_mm512_maskz_gf2p8affine_epi64_epi8): New intrinsics.
7278         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineqb_v64qi)
7279         (__builtin_ia32_vgf2p8affineqb_v32qi)
7280         (__builtin_ia32_vgf2p8affineqb_v16qi): New builtins.
7281         * config/i386/sse.md (vgf2p8affineqb_<mode><mask_name>): New pattern.
7282
7283 2017-11-10  Tamar Christina  <tamar.christina@arm.com>
7284
7285         PR target/82641
7286         * config/arm/arm.c
7287         (arm_option_override): Refactor.
7288         (arm_option_reconfigure_globals): New.
7289         (arm_options_perform_arch_sanity_checks): New.
7290         * config/arm/arm-protos.h (arm_option_reconfigure_globals):
7291         New prototype.
7292         (arm_options_perform_arch_sanity_checks): Likewise
7293
7294 2017-11-10  Pat Haugen  <pthaugen@us.ibm.com>
7295
7296         * rs6000/power9.md (power9-qpdiv): Correct DFU pipe usage.
7297         (power9-qpmul): New.
7298         * rs6000/rs6000.md ("type" attr): Add qmul.
7299         (mul<mode>3, fma<mode>4_hw, *fms<mode>4_hw, *nfma<mode>4_hw,
7300         *nfms<mode>4_hw, mul<mode>3_odd, fma<mode>4_odd, *fms<mode>4_odd,
7301         *nfma<mode>4_odd, *nfms<mode>4_odd): Change type to qmul.
7302
7303 2017-11-10  Martin Sebor  <msebor@redhat.com>
7304
7305         PR c/81117
7306         * builtins.c (compute_objsize): Handle arrays that
7307         compute_builtin_object_size likes to fail for.  Make extern.
7308         * builtins.h (compute_objsize): Declare.
7309         (check_strncpy_sizes): New function.
7310         (expand_builtin_strncpy): Call check_strncpy_sizes.
7311         * gimple-fold.c (gimple_fold_builtin_strncpy): Implement
7312         -Wstringop-truncation.
7313         (gimple_fold_builtin_strncat): Same.
7314         * gimple.c (gimple_build_call_from_tree): Set call location.
7315         * tree-ssa-strlen.c (strlen_to_stridx): New global variable.
7316         (maybe_diag_bound_equal_length, is_strlen_related_p): New functions.
7317         (handle_builtin_stxncpy, handle_builtin_strncat): Same.
7318         (handle_builtin_strlen): Use strlen_to_stridx.
7319         (strlen_optimize_stmt): Handle flavors of strncat, strncpy, and
7320         stpncpy.
7321         Use strlen_to_stridx.
7322         (pass_strlen::execute): Release strlen_to_stridx.
7323         * doc/invoke.texi (-Wsizeof-pointer-memaccess): Document enhancement.
7324         (-Wstringop-truncation): Document new option.
7325
7326 2017-11-10  Martin Liska  <mliska@suse.cz>
7327
7328         PR gcov-profile/82702
7329         * gcov.c (main): Handle intermediate files in a different
7330         way.
7331         (get_gcov_intermediate_filename): New function.
7332         (output_gcov_file): Remove support of intermediate files.
7333         (generate_results): Allocate intermediate file.
7334         (release_structures): Clean-up properly fn_end.
7335         (output_intermediate_file): Start iterating with line 1.
7336
7337 2017-11-10  Jakub Jelinek  <jakub@redhat.com>
7338
7339         PR tree-optimization/82929
7340         * gimple-ssa-store-merging.c (struct store_immediate_info): Add
7341         ops_swapped_p non-static data member.
7342         (store_immediate_info::store_immediate_info): Clear it.
7343         (imm_store_chain_info::coalesce_immediate_stores): If swapping
7344         ops set ops_swapped_p.
7345         (count_multiple_uses): Handle ops_swapped_p.
7346
7347 2017-11-10  Martin Liska  <mliska@suse.cz>
7348
7349         * coverage.c (coverage_init): Stream information about
7350         support of has_unexecuted_blocks.
7351         * doc/gcov.texi: Document that.
7352         * gcov-dump.c (dump_gcov_file): Support it in gcov_dump tool.
7353         * gcov.c (read_graph_file): Likewise.
7354         (output_line_beginning): Fix a small issue with
7355         color output.
7356
7357 2017-11-10  Bin Cheng  <bin.cheng@arm.com>
7358
7359         * tree-predcom.c (determine_roots_comp): Avoid memory leak by freeing
7360         reference of trivial component.
7361
7362 2017-11-10  Jakub Jelinek  <jakub@redhat.com>
7363
7364         PR bootstrap/82916
7365         * gimple-ssa-store-merging.c
7366         (pass_store_merging::terminate_all_aliasing_chains): For
7367         gimple_store_p stmts also call refs_output_dependent_p.
7368
7369         PR rtl-optimization/82913
7370         * compare-elim.c (try_merge_compare): Punt if def_insn is not
7371         single set.
7372
7373 2017-11-09  Jeff Law  <law@redhat.com>
7374
7375         * vr-values.h: New file with vr_values class.
7376         * tree-vrp.c: Include vr-values.h
7377         (vrp_value_range_pool, vrp_equiv_obstack, num_vr_values): Move static
7378         data objects into the vr_values class.
7379         (vr_value, values_propagated, vr_phi_edge_counts): Likewise.
7380         (get_value_range): Make it a member function within vr_values class.
7381         (set_defs_to_varying, update_value_range, add_equivalence): Likewise.
7382         (vrp_stmt_computes_nonzero_p, op_with_boolean_value_range_p): Likewise.
7383         (op_with_constant_singleton_value_range): Likewise.
7384         (extract_range_for_var_from_comparison_expr): Likewise.
7385         (extract_range_from_assert, extract_range_from_ssa_name): Likewise.
7386         (extract_range_from_binary_expr): Likewise.
7387         (extract_range_from_unary_expr): Likewise.
7388         (extract_range_from_cond_expr, extrat_range_from_comparison): Likewise.
7389         (check_for_binary_op_overflow, extract_range_basic): Likewise.
7390         (extract_range_from_assignment, adjust_range_with_scev): Likewise.
7391         (dump_all_value_ranges, get_vr_for_comparison): Likewise.
7392         (compare_name_with_value, compare_names): Likewise.
7393         (vrp_evaluate_conditional_warnv_with_ops_using_ranges): Likewise.
7394         (vrp_evaluate_conditional_warnv_with_ops): Likewise.  Remove prototype.
7395         (vrp_evaluate_conditional, vrp_visit_cond_stmt): Likewise.
7396         (vrp_visit_switch_stmt, extract_range_from_stmt): Likewise.
7397         (extract_range_from_phi_node): Likewise.
7398         (simplify_truth_ops_using_ranges): Likewise.
7399         (simplify_div_or_mod_using_ranges): Likewise.
7400         (simplify_min_or_max_using_ranges, simplify_abs_using_ranges): Likewise.
7401         (simplify_bit_ops_using_ranges, simplify_cond_using_ranges_1): Likewise.
7402         (simplify_cond_using_ranges_2, simplify_switch_using_ranges): Likewise.
7403         (simplify_float_conversion_using_ranges): Likewise.
7404         (simplify_internal_call_using_ranges): Likewise.
7405         (two_valued_val_range_p, simplify_stmt_using_ranges): Likewise.
7406         (vrp_visit_assignment_or_call): Likewise.  Smuggle class instance
7407         poitner via x_vr_values for calls into gimple folder.
7408         (vrp_initialize_lattice): Make this the vr_values ctor.
7409         (vrp_free_lattice): Make this the vr_values dtor.
7410         (set_vr_value): New function.
7411         (class vrp_prop): Add vr_values data member.  Add various member
7412         functions as well as member functions that delegate to vr_values.
7413         (check_array_ref): Make a member function within vrp_prop class.
7414         (search_for_addr_array, vrp_initialize): Likewise.
7415         (vrp_finalize): Likewise.  Revamp to avoid direct access to
7416         vr_value, values_propagated, etc.
7417         (check_array_bounds): Extract vrp_prop class instance pointer from
7418         walk info structure.  Use it to call member functions.
7419         (check_all_array_refs): Make a member function within vrp_prop class.
7420         Smuggle class instance pointer via walk info structure.
7421         (x_vr_values): New local static.
7422         (vrp_valueize): Use x_vr_values to get class instance.
7423         (vr_valueize_1): Likewise.
7424         (class vrp_folder): Add vr_values data member.  Add various member
7425         functions as well as member functions that delegate to vr_values.
7426         (fold_predicate_in): Make a mber fucntion within vrp_folder class.
7427         (simplify_stmt_for_jump_threading): Extract smuggled vr_values
7428         class instance from vr_values.  Use it to call member functions.
7429         (vrp_dom_walker): Add vr_values data member.
7430         (vrp_dom_walker::after_dom_children): Smuggle vr_values class
7431         instance via x_vr_values.
7432         (identify_jump_threads): Accept vr_values as argument.  Store
7433         it into the walker structure.
7434         (evrp_dom_walker): Add vr_values class data member.  Add various
7435         delegators.
7436         (evrp_dom_walker::try_find_new_range): Use vr_values data
7437         member to access the memory allocator.
7438         (evrp_dom_walker::before_dom_children): Store vr_values class
7439         instance into the vrp_folder class.
7440         (evrp_dom_walker::push_value_range): Rework to avoid direct
7441         access to num_vr_values and vr_value.
7442         (evrp_dom_walker::pop_value_range): Likewise.
7443         (execute_early_vrp): Remove call to vrp_initialize_lattice.
7444         Use vr_values to get to dump_all_value_ranges member function.
7445         Remove call to vrp_free_lattice.  Call vrp_initialize, vrp_finalize,
7446         and simplify_cond_using_ranges_2 via vrp_prop class instance.
7447         Pass vr_values class instance down to identify_jump_threads.
7448         Remove call to vrp_free_lattice.
7449         (debug_all_value_ranges): Remove.
7450
7451         * tree-vrp.c (vrp_prop): Move class to earlier point in the file.
7452         (vrp_folder): Likewise.
7453
7454         * tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack.
7455         Get it from the existing bitmap instead.
7456         (vrp_intersect_ranges_1): Likewise.
7457
7458 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
7459
7460         * gimple-ssa-store-merging.c (struct store_immediate_info): Add
7461         bit_not_p field.
7462         (store_immediate_info::store_immediate_info): Add bitnotp argument,
7463         set bit_not_p to it.
7464         (imm_store_chain_info::coalesce_immediate_stores): Break group
7465         if bit_not_p is different.
7466         (count_multiple_uses, split_group,
7467         imm_store_chain_info::output_merged_store): Handle info->bit_not_p.
7468         (handled_load): Avoid multiple chained BIT_NOT_EXPRs.
7469         (pass_store_merging::process_store): Handle BIT_{AND,IOR,XOR}_EXPR
7470         result inverted using BIT_NOT_EXPR, compute bit_not_p, pass it
7471         to store_immediate_info ctor.
7472
7473 2017-11-09  Jim Wilson  <jimw@sifive.com>
7474
7475         * collect2.c (OBJECT_FORMAT_COFF): Remove EXTENDED_COFF support.
7476         (scan_prog_file): Likewise.
7477
7478 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
7479
7480         * bb-reorder.c (max_entry_frequency): Remove.
7481         (find_traces, rotate_loop, mark_bb_visited, connect_better_edge_p,
7482         connect_traces, push_to_next_round_p): Remove prototypes.
7483         (find_traces_1_round): Use counts only.
7484         (push_to_next_round_p): Likewise.
7485         (find_traces): Likewise.
7486         (rotate_loop): Likewise.
7487         (find_traces_1_round): Likewise.
7488         (connect_traces): Likewise.
7489         (edge_order): Likewise.
7490
7491 2017-11-09  Thomas Preud'homme  <thomas.preudhomme@arm.com>
7492
7493         * config/arm/arm.c (output_return_instruction): Add comments to
7494         indicate requirement for cmse_nonsecure_entry return to account
7495         for the size of clearing instruction output here.
7496         (thumb_exit): Likewise.
7497         * config/arm/thumb2.md (thumb2_cmse_entry_return): Fix length for
7498         return in hardfloat mode.
7499
7500 2017-11-09  Segher Boessenkool  <segher@kernel.crashing.org>
7501
7502         * config/rs6000/rs6000.c (machine_function): Add a bool,
7503         "toc_is_wrapped_separately".
7504         (rs6000_option_override_internal): Enable OPTION_MASK_SAVE_TOC_INDIRECT
7505         if it wasn't explicitly set or unset, we are optimizing for speed, and
7506         doing separate shrink-wrapping.
7507         (rs6000_get_separate_components): Enable the TOC component if
7508         saving the TOC register in the prologue.
7509         (rs6000_components_for_bb): Handle the TOC component.
7510         (rs6000_emit_prologue_components): Store the TOC register where needed.
7511         (rs6000_set_handled_components): Mark TOC as handled, if handled.
7512         (rs6000_emit_prologue): Don't save the TOC if that is already done.
7513
7514 2017-11-09  Martin Jambor  <mjambor@suse.cz>
7515
7516         * ipa-param-manipulation.c: New file.
7517         * ipa-param-manipulation.h: Likewise.
7518         * Makefile.in (OBJS): Add ipa-param-manipulation.o.
7519         (PLUGIN_HEADERS): Addded ipa-param-manipulation.h
7520         * ipa-param.h (ipa_parm_op): Moved to ipa-param-manipulation.h.
7521         (ipa_parm_adjustment): Likewise.
7522         (ipa_parm_adjustment_vec): Likewise.
7523         (ipa_get_vector_of_formal_parms): Moved declaration to
7524         ipa-param-manipulation.h.
7525         (ipa_get_vector_of_formal_parm_types): Likewise.
7526         (ipa_modify_formal_parameters): Likewise.
7527         (ipa_modify_call_arguments): Likewise.
7528         (ipa_combine_adjustments): Likewise.
7529         (ipa_dump_param_adjustments): Likewise.
7530         (ipa_modify_expr): Likewise.
7531         (ipa_get_adjustment_candidate): Likewise.
7532         * ipa-prop.c (ipa_get_vector_of_formal_parms): Moved to
7533         ipa-param-manipulation.c.
7534         (ipa_get_vector_of_formal_parm_types): Likewise.
7535         (ipa_modify_formal_parameters): Likewise.
7536         (ipa_modify_call_arguments): Likewise.
7537         (ipa_modify_expr): Likewise.
7538         (get_ssa_base_param): Likewise.
7539         (ipa_get_adjustment_candidate): Likewise.
7540         (index_in_adjustments_multiple_times_p): Likewise.
7541         (ipa_combine_adjustments): Likewise.
7542         (ipa_dump_param_adjustments): Likewise.
7543         * tree-sra.c: Also include ipa-param-manipulation.h
7544         * omp-simd-clone.c: Include ipa-param-manipulation.h instead of
7545         ipa-param.h.
7546
7547 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7548             Alan Hayward  <alan.hayward@arm.com>
7549             David Sherwood  <david.sherwood@arm.com>
7550
7551         * doc/sourcebuild.texi (vect_masked_store): Document.
7552
7553 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7554             Alan Hayward  <alan.hayward@arm.com>
7555             David Sherwood  <david.sherwood@arm.com>
7556
7557         * doc/sourcebuild.texi (vect_align_stack_vars): Document.
7558
7559 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7560             Alan Hayward  <alan.hayward@arm.com>
7561             David Sherwood  <david.sherwood@arm.com>
7562
7563         * doc/sourcebuild.texi (vect_variable_length): Document.
7564
7565 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7566             Alan Hayward  <alan.hayward@arm.com>
7567             David Sherwood  <david.sherwood@arm.com>
7568
7569         * doc/sourcebuild.texi (vect_unaligned_possible): Document.
7570
7571 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7572             Alan Hayward  <alan.hayward@arm.com>
7573             David Sherwood  <david.sherwood@arm.com>
7574
7575         * doc/sourcebuild.texi (vect_element_align_preferred): Document.
7576
7577 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7578             Alan Hayward  <alan.hayward@arm.com>
7579             David Sherwood  <david.sherwood@arm.com>
7580
7581         * doc/sourcebuild.texi (vect_perm_short, vect_perm_byte): Document
7582         previously undocumented selectors.
7583         (vect_perm3_byte, vect_perm3_short, vect_perm3_int): Document.
7584
7585 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7586
7587         * doc/rtl.texi (const_vector): Say that elements can be
7588         const_wide_ints too.
7589         * emit-rtl.h (valid_for_const_vec_duplicate_p): Declare.
7590         * emit-rtl.c (valid_for_const_vec_duplicate_p): New function.
7591         (gen_vec_duplicate): Use it instead of CONSTANT_P.
7592         * optabs.c (expand_vector_broadcast): Likewise.
7593
7594 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7595             Alan Hayward  <alan.hayward@arm.com>
7596             David Sherwood  <david.sherwood@arm.com>
7597
7598         * tree-ssa-loop-ivopts.c (get_address_cost): Try using a
7599         scaled index even if the unscaled address was invalid.
7600         Don't increase the complexity of using a scale in that case.
7601
7602 2017-11-09  Richard Sandiford  <richard.sandiford@linaro.org>
7603             Alan Hayward  <alan.hayward@arm.com>
7604             David Sherwood  <david.sherwood@arm.com>
7605
7606         * doc/rtl.texi: Rewrite the subreg rules so that they partition
7607         the inner register into REGMODE_NATURAL_SIZE bytes rather than
7608         UNITS_PER_WORD bytes.
7609         * emit-rtl.c (validate_subreg): Divide subregs into blocks
7610         based on REGMODE_NATURAL_SIZE of the inner mode.
7611         (gen_lowpart_common): Split the SCALAR_FLOAT_MODE_P and
7612         !SCALAR_FLOAT_MODE_P cases.  Use REGMODE_NATURAL_SIZE for the latter.
7613         * expmed.c (lowpart_bit_field_p): Divide the value up into
7614         chunks of REGMODE_NATURAL_SIZE rather than UNITS_PER_WORD.
7615         * expr.c (store_constructor): Use REGMODE_NATURAL_SIZE to test
7616         whether something is likely to occupy more than one register.
7617
7618 2017-11-09  Jan Hubicka  <hubicka@ucw.cz>
7619
7620         PR ipa/82879
7621         * ipa-inline-transform.c (update_noncloned_frequencies): Use
7622         profile_count::adjust_for_ipa_scaling.
7623         * tree-inline.c (copy_bb, copy_cfg_body): Likewise.
7624         * profile-count.c (profile_count::adjust_for_ipa_scaling): New member
7625         function.
7626         * profile-count.h (profile_count::adjust_for_ipa_scaling): Declare.
7627
7628 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
7629
7630         * gimple-ssa-store-merging.c (count_multiple_uses): New function.
7631         (split_group): Add total_orig and total_new arguments, estimate the
7632         number of statements related to the store group without store merging
7633         and with store merging.
7634         (imm_store_chain_info::output_merged_store): Adjust split_group
7635         callers, punt if estimated number of statements with store merging
7636         is not smaller than estimated number of statements without it.
7637         Formatting fix.
7638         (handled_load): Remove has_single_use checks.
7639         (pass_store_merging::process_store): Likewise.
7640
7641 2017-11-09  Richard Biener  <rguenther@suse.de>
7642
7643         PR tree-optimization/82902
7644         * tree-ssa-phiprop.c (propagate_with_phi): Test proper type.
7645
7646 2017-11-09  Martin Liska  <mliska@suse.cz>
7647
7648         PR target/82863
7649         * emit-rtl.c (init_emit_regs): Initialize split_branch_probability to
7650         uninitialized.
7651
7652 2017-11-09  Martin Liska  <mliska@suse.cz>
7653
7654         PR tree-optimization/82669
7655         * sbitmap.h (bmp_iter_set_init): Remove non needed check.
7656
7657 2017-11-09  Martin Liska  <mliska@suse.cz>
7658
7659         PR gcov-profile/48463
7660         * coverage.c (coverage_begin_function): Output also end locus
7661         of a function and information whether the function is
7662         artificial.
7663         * gcov-dump.c (tag_function): Parse and print the information.
7664         * gcov.c (INCLUDE_MAP): Add include.
7665         (INCLUDE_SET): Likewise.
7666         (struct line_info): Move earlier in the source file because
7667         of vector<line_info> in function_info structure.
7668         (line_info::line_info): Likewise.
7669         (line_info::has_block): Likewise.
7670         (struct source_info): Add new member index.
7671         (source_info::get_functions_at_location): New function.
7672         (function_info::group_line_p): New function.
7673         (output_intermediate_line): New function.
7674         (output_intermediate_file): Use the mentioned function.
7675         (struct function_start): New.
7676         (struct function_start_pair_hash): Likewise.
7677         (process_file): Add code that identifies group functions.
7678         Assign lines either to global or function scope.
7679         (generate_results): Skip artificial functions.
7680         (find_source): Assign index for each source file.
7681         (read_graph_file): Read new flag artificial and end_line.
7682         (add_line_counts): Assign it either to global of function scope.
7683         (accumulate_line_counts): Isolate core of the function to
7684         accumulate_line_info and call it for both function and global
7685         scope lines.
7686         (accumulate_line_info): New function.
7687         (output_line_beginning): Fix GNU coding style.
7688         (print_source_line): New function.
7689         (output_line_details): Likewise.
7690         (output_function_details): Likewise.
7691         (output_lines): Iterate both source (global) scope and function
7692         scope.
7693         (struct function_line_start_cmp): New class.
7694         * doc/gcov.texi: Reflect changes in documentation.
7695
7696 2017-11-09  Jakub Jelinek  <jakub@redhat.com>
7697
7698         PR debug/82837
7699         * dwarf2out.c (const_ok_for_output_1): Reject NEG in addition to NOT.
7700         (mem_loc_descriptor): Handle (const (neg (...))) as (neg (const (...)))
7701         and similarly for not instead of neg.
7702
7703 2017-11-08  Andi Kleen  <ak@linux.intel.com>
7704
7705         * config/i386/i386.opt: Add -mforce-indirect-call.
7706         * config/i386/predicates.md: Check for flag_force_indirect_call.
7707         * doc/invoke.texi: Document -mforce-indirect-call
7708
7709 2017-11-08  Kito Cheng  <kito.cheng@gmail.com>
7710
7711         * config/riscv/riscv-protos.h (riscv_slow_unaligned_access_p):
7712         New extern.
7713         (MOVE_RATIO): Use riscv_slow_unaligned_access_p.
7714         config/riscv/riscv.c (predict.h): New include.
7715         (riscv_slow_unaligned_access_p): No longer static.
7716         (riscv_block_move_straight): Add require.
7717         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
7718
7719 2017-11-08  Jakub Jelinek  <jakub@redhat.com>
7720
7721         PR target/82855
7722         * config/i386/sse.md (<avx512>_eq<mode>3<mask_scalar_merge_name>,
7723         <avx512>_eq<mode>3<mask_scalar_merge_name>_1): Use
7724         nonimmediate_operand predicate for operand 1 instead of
7725         register_operand.
7726
7727 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7728
7729         * config/aarch64/aarch64-simd.md (store_pair_lanes<mode>):
7730         New pattern.
7731         * config/aarch64/constraints.md (Uml): New constraint.
7732         * config/aarch64/predicates.md (aarch64_mem_pair_lanes_operand): New
7733         predicate.
7734
7735 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7736
7737         * simplify-rtx.c (simplify_ternary_operation): Simplify vec_merge
7738         of two vec_duplicates into a vec_concat.
7739
7740 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7741
7742         * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
7743         Simplify vec_merge of vec_duplicate and vec_concat.
7744         * config/aarch64/constraints.md (Utq): New constraint.
7745         * config/aarch64/aarch64-simd.md (load_pair_lanes<mode>): New
7746         define_insn.
7747
7748 2017-11-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
7749
7750         * simplify-rtx.c (simplify_ternary_operation, VEC_MERGE):
7751         Simplify vec_merge of vec_duplicate and const_vector.
7752         * config/aarch64/predicates.md (aarch64_simd_or_scalar_imm_zero):
7753         New predicate.
7754         * config/aarch64/aarch64-simd.md (*aarch64_combinez<mode>): Use VDC
7755         mode iterator.  Update predicate on operand 1 to
7756         handle non-const_vec constants.  Delete constraints.
7757         (*aarch64_combinez_be<mode>): Likewise for operand 2.
7758
7759 2017-11-08  Jakub Jelinek  <jakub@redhat.com>
7760
7761         PR tree-optimization/78821
7762         * gimple-ssa-store-merging.c (struct store_operand_info): Add bit_not_p
7763         data member.
7764         (store_operand_info::store_operand_info): Initialize it to false.
7765         (pass_store_merging::terminate_all_aliasing_chains): Rewritten to use
7766         ref_maybe_used_by_stmt_p and stmt_may_clobber_ref_p on lhs of each
7767         store in the group, and if chain_info is non-NULL, to ignore altogether
7768         that chain.
7769         (compatible_load_p): Fail if bit_not_p does not match.
7770         (imm_store_chain_info::output_merged_store): Handle bit_not_p loads.
7771         (handled_load): Fill in bit_not_p.  Handle BIT_NOT_EXPR.
7772         (pass_store_merging::process_store): Adjust
7773         terminate_all_aliasing_chains calls to pass NULL in all current spots,
7774         call terminate_all_aliasing_chains newly when adding a store into
7775         a chain with non-NULL chain_info.
7776
7777 2017-11-08  Wilco Dijkstra  <wdijkstr@arm.com>
7778
7779         * config/aarch64/aarch64.c (aarch64_can_eliminate): Simplify logic.
7780
7781 2017-11-08  Wilco Dijkstra  <wdijkstr@arm.com>
7782
7783         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
7784         Remove.
7785         (aarch64_layout_frame): Initialise emit_frame_chain.
7786         (aarch64_can_eliminate): Remove omit leaf frame pointer code.
7787         (TARGET_FRAME_POINTER_REQUIRED): Remove define.
7788
7789 2017-11-08  Martin Liska  <mliska@suse.cz>
7790
7791         * gimplify.c (expand_FALLTHROUGH_r): Simplify usage
7792         of gimple_call_internal_p.
7793
7794 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7795
7796         * config/mips/mips.h (ASM_OUTPUT_LABELREF): Wrap in "do {} while (0)".
7797
7798 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7799
7800         * config/mips/mips.h (ASM_OUTPUT_CASE_END): Remove semicolon after
7801         "do {} while (0)".
7802
7803 2017-11-08  Martin Liska  <mliska@suse.cz>
7804
7805         PR sanitizer/82792
7806         * gimplify.c (expand_FALLTHROUGH_r): Skip IFN_ASAN_MARK.
7807
7808 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
7809
7810         * gimple-pretty-print.c (dump_profile): Return "" instead of NULL.
7811
7812 2017-11-07  Jakub Jelinek  <jakub@redhat.com>
7813
7814         PR target/82855
7815         * config/i386/i386.md (SWI1248_AVX512BWDQ2_64): New mode iterator.
7816         (*cmp<mode>_ccz_1): New insn with $k alternative.
7817
7818         PR target/82855
7819         * config/i386/i386.c (ix86_swap_binary_operands_p): Treat
7820         RTX_COMM_COMPARE as commutative as well.
7821         (ix86_binary_operator_ok): Formatting fix.
7822         * config/i386/sse.md (*mul<mode>3<mask_name><round_name>,
7823         *<code><mode>3<mask_name><round_saeonly_name>,
7824         *<code><mode>3<mask_name>, *<code>tf3, *mul<mode>3<mask_name>,
7825         *<s>mul<mode>3_highpart<mask_name>,
7826         *vec_widen_umult_even_v16si<mask_name>,
7827         *vec_widen_umult_even_v8si<mask_name>,
7828         *vec_widen_umult_even_v4si<mask_name>,
7829         *vec_widen_smult_even_v16si<mask_name>,
7830         *vec_widen_smult_even_v8si<mask_name>, *sse4_1_mulv2siv2di3<mask_name>,
7831         *avx2_pmaddwd, *sse2_pmaddwd, *<sse4_1_avx2>_mul<mode>3<mask_name>,
7832         *avx2_<code><mode>3, *avx512f_<code><mode>3<mask_name>,
7833         *sse4_1_<code><mode>3<mask_name>, *<code>v8hi3,
7834         *sse4_1_<code><mode>3<mask_name>, *<code>v16qi3, *avx2_eq<mode>3,
7835         <avx512>_eq<mode>3<mask_scalar_merge_name>_1, *sse4_1_eqv2di3,
7836         *sse2_eq<mode>3, <mask_codefor><code><mode>3<mask_name>,
7837         *<code><mode>3, *<sse2_avx2>_uavg<mode>3<mask_name>,
7838         *<ssse3_avx2>_pmulhrsw<mode>3<mask_name>, *ssse3_pmulhrswv4hi3): Use
7839         !(MEM_P (operands[1]) && MEM_P (operands[2])) condition instead of
7840         ix86_binary_operator_ok.  Formatting fixes.
7841         (*<plusminus_insn><mode>3<mask_name><round_name>,
7842         *<plusminus_insn><mode>3, *<plusminus_insn><mode>3_m): Formatting
7843         fixes.
7844
7845 2017-11-07  Segher Boessenkool  <segher@kernel.crashing.org>
7846
7847         * config/rs6000/rs6000.md (GPR2): New mode_iterator.
7848         ("cstore<mode>4"): Don't always expand with rs6000_emit_int_cmove for
7849         eq and ne if TARGET_ISEL.
7850         (cmp): New code_iterator.
7851         (UNS, UNSU_, UNSIK): New code_attrs.
7852         (<code><GPR:mode><GPR2:mode>2_isel): New define_insn_and_split.
7853         ("eq<mode>3"): New define_expand, rename the define_insn_and_split
7854         to...
7855         ("eq<mode>3"): ... this.
7856         ("ne<mode>3"): New define_expand, rename the define_insn_and_split
7857         to...
7858         ("ne<mode>3"): ... this.
7859
7860 2017-11-07  Julia Koval  <julia.koval@intel.com>
7861
7862         PR target/82812
7863         * common/config/i386/i386-common.c
7864         (OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET): Remove MPX from flag.
7865         (ix86_handle_option): Move MPX to isa_flags2 and GFNI to isa_flags.
7866         * config/i386/i386-c.c (ix86_target_macros_internal): Ditto.
7867         * config/i386/i386.opt: Ditto.
7868         * config/i386/i386.c (ix86_target_string): Ditto.
7869         (ix86_option_override_internal): Ditto.
7870         (ix86_init_mpx_builtins): Move MPX to args2.
7871         (ix86_expand_builtin): Special handling for OPTION_MASK_ISA_GFNI.
7872         * config/i386/i386-builtin.def (__builtin_ia32_vgf2p8affineinvqb_v64qi,
7873         __builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
7874         __builtin_ia32_vgf2p8affineinvqb_v32qi,
7875         __builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
7876         __builtin_ia32_vgf2p8affineinvqb_v16qi,
7877         __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): Move to ARGS array.
7878
7879 2017-11-07  Uros Bizjak  <ubizjak@gmail.com>
7880
7881         PR target/80425
7882         * config/i386.i386.md (*zero_extendsidi2): Change (?r,*Yj), (?*Yi,r)
7883         and (*x,m) to ($r,Yj), ($Yi,r) and ($x,m).
7884         (zero-extendsidi peephole2): Remove peephole.
7885
7886 2017-11-07  Eric Botcazou  <ebotcazou@adacore.com>
7887
7888         PR c/53037
7889         * stor-layout.c: Include attribs.h.
7890         (handle_warn_if_not_align): Replace test on TYPE_USER_ALIGN with
7891         explicit lookup of "aligned" attribute.
7892
7893 2017-11-07  Andrew Waterman  <andrew@sifive.com>
7894
7895         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): New prototype.
7896         (riscv_expand_block_move): Likewise.
7897         * config/riscv/riscv.h (MOVE_RATIO): Tune cost to movmemsi
7898         implementation.
7899         (RISCV_MAX_MOVE_BYTES_PER_LOOP_ITER): New define.
7900         (RISCV_MAX_MOVE_BYTES_STRAIGHT): New define.
7901         * config/riscv/riscv.c (riscv_block_move_straight): New function.
7902         (riscv_adjust_block_mem): Likewise.
7903         (riscv_block_move_loop): Likewise.
7904         (riscv_expand_block_move): Likewise.
7905         * config/riscv/riscv.md (movmemsi): New pattern.
7906
7907 2017-11-07  Michael Clark  <michaeljclark@mac.com>
7908
7909         * config/riscv/linux.h (MUSL_ABI_SUFFIX): New define.
7910         (MUSL_DYNAMIC_LINKER): Likewise.
7911
7912 2017-11-07  Richard Sandiford  <richard.sandiford@linaro.org>
7913
7914         * config/aarch64/aarch64.md (ashl<mode>3, ashr<mode>3, lshr<mode>3)
7915         (rotr<mode>3, rotl<mode>3): Use aarch64_reg_or_imm instead of
7916         nonmmory_operand.
7917
7918 2017-11-07  Richard Biener  <rguenther@suse.de>
7919
7920         * match.pd: Fix build.
7921
7922 2017-11-07  Wilco Dijkstra  <wdijkstr@arm.com>
7923             Jackson Woodruff  <jackson.woodruff@arm.com>
7924
7925         PR tree-optimization/71026
7926         * match.pd: Canonicalize negate in division.
7927
7928 2017-11-07  Sudakshina Das  <sudi.das@arm.com>
7929
7930         PR middle-end/80131
7931         * match.pd: Simplify 1 << (C - x) where C = precision (x) - 1.
7932
7933 2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
7934
7935         * match.pd ((a&~b)|(a^b),(a&~b)^~a,(a|b)&~(a^b),a|~(a^b),
7936         (a|b)|(a&^b),(a&b)|~(a^b),~(~a&b),~X^Y): New transformations.
7937
7938 2017-11-07  Marc Glisse  <marc.glisse@inria.fr>
7939
7940         * fold-const.c (negate_expr_p) [PLUS_EXPR, MINUS_EXPR]: Handle
7941         non-scalar integral types.
7942         * match.pd (negate_expr_p): Handle MINUS_EXPR.
7943         (-(A-B), -(~A)): New transformations.
7944
7945 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7946
7947         * config/powerpcspe/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove
7948         semicolon after "do {} while (0)".
7949         * config/powerpcspe/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7950         * config/powerpcspe/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7951         * config/powerpcspe/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7952         * config/powerpcspe/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7953         * config/powerpcspe/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7954
7955 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7956
7957         * config/rs6000/aix43.h (SUBTARGET_OVERRIDE_OPTIONS): Remove semicolon
7958         after "do {} while (0)".
7959         * config/rs6000/aix51.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7960         * config/rs6000/aix52.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7961         * config/rs6000/aix53.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7962         * config/rs6000/aix61.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7963         * config/rs6000/aix71.h (SUBTARGET_OVERRIDE_OPTIONS): Same.
7964
7965 2017-11-07  Tom de Vries  <tom@codesourcery.com>
7966
7967         PR other/82784
7968         * config/arm/arm.c (HANDLE_NARROW_SHIFT_ARITH): Remove semicolon after
7969         "while {} do (0)".
7970         (arm_rtx_costs_internal): Add missing semicolon after
7971         HANDLE_NARROW_SHIFT_ARITH call.
7972
7973 2017-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
7974
7975         * config/rs6000/rs6000.c (rs6000_option_override_internal): Don't
7976         disable isel if it was not set explicitly.
7977
7978 2017-11-06  James Bowman  <james.bowman@ftdichip.com>
7979
7980         * gcc/dwarf2out.c (modified_type_die): Retain ADDR_SPACE qualifiers.
7981         (add_type_attribute) likewise.
7982
7983 2017-11-06  H.J. Lu  <hongjiu.lu@intel.com>
7984
7985         * config/i386/i386.c (ix86_can_use_return_insn_p): Use reference
7986         of struct ix86_frame.
7987         (ix86_initial_elimination_offset): Likewise.
7988         (ix86_expand_split_stack_prologue): Likewise.
7989
7990 2017-11-06  Marc Glisse  <marc.glisse@inria.fr>
7991
7992         * tree-vrp.h (enum value_range_type): Update stale comment.
7993
7994 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
7995             Alan Hayward  <alan.hayward@arm.com>
7996             David Sherwood  <david.sherwood@arm.com>
7997
7998         * config/aarch64/aarch64-protos.h (aarch64_expand_vec_perm)
7999         (aarch64_expand_vec_perm_const): Take the number of units too.
8000         * config/aarch64/aarch64.c (aarch64_expand_vec_perm)
8001         (aarch64_expand_vec_perm_const): Likewise.
8002         * config/aarch64/aarch64-simd.md (vec_perm_const<mode>)
8003         (vec_perm<mode>): Update accordingly.
8004
8005 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
8006             Alan Hayward  <alan.hayward@arm.com>
8007             David Sherwood  <david.sherwood@arm.com>
8008
8009         * config/aarch64/aarch64-protos.h (aarch64_simd_vect_par_cnst_half):
8010         Take the number of units too.
8011         * config/aarch64/aarch64.c (aarch64_simd_vect_par_cnst_half): Likewise.
8012         (aarch64_simd_check_vect_par_cnst_half): Update call accordingly,
8013         but check for a vector mode before rather than after the call.
8014         * config/aarch64/aarch64-simd.md (aarch64_split_simd_mov<mode>)
8015         (move_hi_quad_<mode>, vec_unpack<su>_hi_<mode>)
8016         (vec_unpack<su>_lo_<mode, vec_widen_<su>mult_lo_<mode>)
8017         (vec_widen_<su>mult_hi_<mode>, vec_unpacks_lo_<mode>)
8018         (vec_unpacks_hi_<mode>, aarch64_saddl2<mode>, aarch64_uaddl2<mode>)
8019         (aarch64_ssubl2<mode>, aarch64_usubl2<mode>, widen_ssum<mode>3)
8020         (widen_usum<mode>3, aarch64_saddw2<mode>, aarch64_uaddw2<mode>)
8021         (aarch64_ssubw2<mode>, aarch64_usubw2<mode>, aarch64_sqdmlal2<mode>)
8022         (aarch64_sqdmlsl2<mode>, aarch64_sqdmlal2_lane<mode>)
8023         (aarch64_sqdmlal2_laneq<mode>, aarch64_sqdmlsl2_lane<mode>)
8024         (aarch64_sqdmlsl2_laneq<mode>, aarch64_sqdmlal2_n<mode>)
8025         (aarch64_sqdmlsl2_n<mode>, aarch64_sqdmull2<mode>)
8026         (aarch64_sqdmull2_lane<mode>, aarch64_sqdmull2_laneq<mode>)
8027         (aarch64_sqdmull2_n<mode>): Update accordingly.
8028
8029 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
8030             Alan Hayward  <alan.hayward@arm.com>
8031             David Sherwood  <david.sherwood@arm.com>
8032
8033         * config/aarch64/aarch64-protos.h (aarch64_reverse_mask): Take
8034         the number of units too.
8035         * config/aarch64/aarch64.c (aarch64_reverse_mask): Likewise.
8036         * config/aarch64/aarch64-simd.md (vec_load_lanesoi<mode>)
8037         (vec_store_lanesoi<mode>, vec_load_lanesci<mode>)
8038         (vec_store_lanesci<mode>, vec_load_lanesxi<mode>)
8039         (vec_store_lanesxi<mode>): Update accordingly.
8040
8041 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
8042             Alan Hayward  <alan.hayward@arm.com>
8043             David Sherwood  <david.sherwood@arm.com>
8044
8045         * config/aarch64/aarch64-protos.h (aarch64_endian_lane_rtx): Declare.
8046         * config/aarch64/aarch64.c (aarch64_endian_lane_rtx): New function.
8047         * config/aarch64/aarch64.h (ENDIAN_LANE_N): Take the number
8048         of units rather than the mode.
8049         * config/aarch64/iterators.md (nunits): New mode attribute.
8050         * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_args):
8051         Use aarch64_endian_lane_rtx instead of GEN_INT (ENDIAN_LANE_N ...).
8052         * config/aarch64/aarch64-simd.md (aarch64_dup_lane<mode>)
8053         (aarch64_dup_lane_<vswap_width_name><mode>, *aarch64_mul3_elt<mode>)
8054         (*aarch64_mul3_elt_<vswap_width_name><mode>): Likewise.
8055         (*aarch64_mul3_elt_to_64v2df, *aarch64_mla_elt<mode>): Likewise.
8056         (*aarch64_mla_elt_<vswap_width_name><mode>, *aarch64_mls_elt<mode>)
8057         (*aarch64_mls_elt_<vswap_width_name><mode>, *aarch64_fma4_elt<mode>)
8058         (*aarch64_fma4_elt_<vswap_width_name><mode>):: Likewise.
8059         (*aarch64_fma4_elt_to_64v2df, *aarch64_fnma4_elt<mode>): Likewise.
8060         (*aarch64_fnma4_elt_<vswap_width_name><mode>): Likewise.
8061         (*aarch64_fnma4_elt_to_64v2df, reduc_plus_scal_<mode>): Likewise.
8062         (reduc_plus_scal_v4sf, reduc_<maxmin_uns>_scal_<mode>): Likewise.
8063         (reduc_<maxmin_uns>_scal_<mode>): Likewise.
8064         (*aarch64_get_lane_extend<GPI:mode><VDQQH:mode>): Likewise.
8065         (*aarch64_get_lane_zero_extendsi<mode>): Likewise.
8066         (aarch64_get_lane<mode>, *aarch64_mulx_elt_<vswap_width_name><mode>)
8067         (*aarch64_mulx_elt<mode>, *aarch64_vgetfmulx<mode>): Likewise.
8068         (aarch64_sq<r>dmulh_lane<mode>, aarch64_sq<r>dmulh_laneq<mode>)
8069         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_lane<mode>): Likewise.
8070         (aarch64_sqrdml<SQRDMLH_AS:rdma_as>h_laneq<mode>): Likewise.
8071         (aarch64_sqdml<SBINQOPS:as>l_lane<mode>): Likewise.
8072         (aarch64_sqdml<SBINQOPS:as>l_laneq<mode>): Likewise.
8073         (aarch64_sqdml<SBINQOPS:as>l2_lane<mode>_internal): Likewise.
8074         (aarch64_sqdml<SBINQOPS:as>l2_laneq<mode>_internal): Likewise.
8075         (aarch64_sqdmull_lane<mode>, aarch64_sqdmull_laneq<mode>): Likewise.
8076         (aarch64_sqdmull2_lane<mode>_internal): Likewise.
8077         (aarch64_sqdmull2_laneq<mode>_internal): Likewise.
8078         (aarch64_vec_load_lanesoi_lane<mode>): Likewise.
8079         (aarch64_vec_store_lanesoi_lane<mode>): Likewise.
8080         (aarch64_vec_load_lanesci_lane<mode>): Likewise.
8081         (aarch64_vec_store_lanesci_lane<mode>): Likewise.
8082         (aarch64_vec_load_lanesxi_lane<mode>): Likewise.
8083         (aarch64_vec_store_lanesxi_lane<mode>): Likewise.
8084         (aarch64_simd_vec_set<mode>): Update use of ENDIAN_LANE_N.
8085         (aarch64_simd_vec_setv2di): Likewise.
8086
8087 2017-11-06  Carl Love  <cel@us.ibm.com>
8088
8089         * config/rs6000/rs6000-c.c (P8V_BUILTIN_VEC_REVB): Add power 8
8090         definitions.
8091         (P9V_BUILTIN_VEC_REVB): Remove the power 9 instance definitions.
8092         * config/rs6000/altivec.h (vec_revb): Change the #define from power 9
8093         to power 8.
8094         * config/rs6000/r6000-protos.h (swap_endian_selector_for_mode): Add new
8095         extern declaration.
8096         * config/rs6000/rs6000.c (swap_endian_selector_for_mode): Add function.
8097         * config/rs6000/rs6000-builtin.def (BU_P8V_VSX_1, BU_P8V_OVERLOAD_1):
8098         Add power 8 macro expansions.
8099         (BU_P9V_OVERLOAD_1): Remove power 9 overload expansion.
8100         * config/rs6000/vsx.md (revb_<mode>): Add define_expand to generate
8101         power 8 instructions.  (VSX_XXBR): Add iterator.
8102
8103 2017-11-06  Wilco Dijkstra  <wdijkstr@arm.com>
8104
8105         * config/arm/arm.md (predicable_short_it): Change default to "no",
8106         improve documentation, remove uses that are identical to the default.
8107         (enabled_for_depr_it): Rename to enabled_for_short_it.
8108         * gcc/config/arm/arm-fixed.md (predicable_short_it):
8109         Remove default uses.
8110         * gcc/config/arm/ldmstm.md (predicable_short_it): Likewise.
8111         * gcc/config/arm/sync.md (predicable_short_it): Likewise.
8112         * gcc/config/arm/thumb2.md (predicable_short_it): Likewise.
8113         * gcc/config/arm/vfp.md (predicable_short_it): Likewise.
8114
8115 2017-11-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
8116
8117         PR target/82748
8118         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1): Delete
8119         float128 helper macros, which are no longer used after deleting
8120         the old 'q' built-in functions, and moving the round to odd
8121         built-in functions to being special built-in functions.
8122         (BU_FLOAT128_2): Likewise.
8123         (BU_FLOAT128_1_HW): Likewise.
8124         (BU_FLOAT128_2_HW): Likewise.
8125         (BU_FLOAT128_3_HW): Likewise.
8126         (FABSQ): Delete old 'q' built-in functions.
8127         (COPYSIGNQ): Likewise.
8128         (SQRTF128_ODD): Move round to odd built-in functions to be
8129         special built-in functions, so that we can handle
8130         -mabi=ieeelongdouble.
8131         (TRUNCF128_ODD): Likewise.
8132         (ADDF128_ODD): Likewise.
8133         (SUBF128_ODD): Likewise.
8134         (MULF128_ODD): Likewise.
8135         (DIVF128_ODD): Likewise.
8136         (FMAF128_ODD): Likewise.
8137         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Map old 'q'
8138         built-in names to 'f128'.
8139         * config/rs6000/rs6000.c (rs6000_fold_builtin): Remove folding the
8140         old 'q' built-in functions, as the machine independent code for
8141         'f128' built-in functions handles this.
8142         (rs6000_expand_builtin): Add expansion for float128 round to odd
8143         functions, keying off on -mabi=ieeelongdouble of whether to use
8144         the KFmode or TFmode variant.
8145         (rs6000_init_builtins): Initialize the _Float128 round to odd
8146         built-in functions.
8147         * doc/extend.texi (PowerPC Built-in Functions): Document the old
8148         _Float128 'q' built-in functions are now mapped into the new
8149         'f128' built-in functions.
8150
8151 2017-11-06  David Edelsohn  <dje.gcc@gmail.com>
8152
8153         * collect2.c (add_lto_object): Compile for OBJECT_COFF.
8154         (scan_prog_file): Don't skip PASS_LTOINFO. Scan for LTO objects.
8155
8156 2017-11-06  David Malcolm  <dmalcolm@redhat.com>
8157
8158         PR jit/82826
8159         * ipa-fnsummary.c (ipa_fnsummary_c_finalize): New function.
8160         * ipa-fnsummary.h (ipa_fnsummary_c_finalize): New decl.
8161         * toplev.c: Include "ipa-fnsummary.h".
8162         (toplev::finalize): Call ipa_fnsummary_c_finalize.
8163
8164 2017-11-06  Jakub Jelinek  <jakub@redhat.com>
8165
8166         PR tree-optimization/82838
8167         * gimple-ssa-store-merging.c
8168         (imm_store_chain_info::output_merged_store): Call force_gimple_operand_1
8169         on a separate gimple_seq which is then appended to seq.
8170
8171 2017-11-06  Jeff Law  <law@redhat.com>
8172
8173         PR target/82788
8174         * config/i386/i386.c (PROBE_INTERVAL): Remove.
8175         (get_probe_interval): New functions.
8176         (ix86_adjust_stack_and_probe_stack_clash): Use get_probe_interval.
8177         (ix86_adjust_stack_and_probe): Likewise.
8178         (output_adjust_stack_and_probe): Likewise.
8179         (ix86_emit_probe_stack_range): Likewise.
8180         (ix86_expand_prologue): Likewise.
8181
8182 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
8183
8184         PR tree-optimization/82816
8185         * tree-ssa-math-opts.c (convert_mult_to_widen): Return false
8186         if the modes of the two types are the same.
8187         (convert_plusminus_to_widen): Likewise.
8188
8189 2017-11-06  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
8190
8191         * config/rs6000/altivec.md (*p9_vadu<mode>3) Rename to
8192         p9_vadu<mode>3.
8193         (usadv16qi): New define_expand.
8194         (usadv8hi): New define_expand.
8195
8196 2017-11-06  Jan Hubicka  <hubicka@ucw.cz>
8197
8198         PR bootstrap/82832
8199         * ipa-inline-transform.c (update_noncloned_frequencies): Always
8200         scale.
8201         (inline_transform): Likewise.
8202         * predict.c (counts_to_freqs): Remove useless conditional.
8203         * profile-count.h (profile_count::apply_scale): Move sanity check.
8204         * tree-inline.c (copy_bb): Always scale.
8205         (copy_cfg_body): Likewise.
8206
8207 2017-11-06  Christophe Lyon  <christophe.lyon@linaro.org>
8208
8209         PR target/67591
8210         * config/arm/arm.md (*sub_shiftsi): Add predicable_short_it
8211         attribute.
8212         (*cmp_ite0): Add enabled_for_depr_it attribute.
8213         (*cmp_ite1): Likewise.
8214
8215 2017-11-06  Segher Boessenkool  <segher@kernel.crashing.org>
8216
8217         * config/rs6000/rs6000.c (rs6000_insn_cost): Handle TYPE_MFCR and
8218         TYPE_MFCRF.
8219
8220 2017-11-06  Richard Sandiford  <richard.sandiford@linaro.org>
8221
8222         * tree-vrp.c (vrp_int_const_binop): Return true on success and
8223         return the value by pointer.
8224         (extract_range_from_multiplicative_op_1): Update accordingly.
8225         Return as soon as an operation fails.
8226
8227 2017-11-05  Tom de Vries  <tom@codesourcery.com>
8228
8229         PR other/82784
8230         * asan.c (DEF_SANITIZER_BUILTIN_1): Factor out of ...
8231         (DEF_SANITIZER_BUILTIN): ... here.
8232         (initialize_sanitizer_builtins): Use DEF_SANITIZER_BUILTIN_1 instead of
8233         DEF_SANITIZER_BUILTIN in if stmt.  Add missing semicolon.
8234
8235 2017-11-05  Tom de Vries  <tom@codesourcery.com>
8236
8237         PR other/82784
8238         * config/elfos.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon after
8239         macro body.
8240         (ASM_OUTPUT_CASE_LABEL): Add semicolon after
8241         ASM_OUTPUT_BEFORE_CASE_LABEL call.
8242         * config/arc/arc.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon
8243         after macro body.
8244         * config/m68k/m68kelf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
8245         * config/mips/mips.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
8246         * config/v850/v850.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same.
8247
8248 2017-11-05  Tom de Vries  <tom@codesourcery.com>
8249
8250         PR other/82784
8251         * graphite-scop-detection.c (DEBUG_PRINT): Remove semicolon after
8252         "do {} while (0)".
8253
8254 2017-11-04  Michael Clark  <michaeljclark@mac.com>
8255
8256         * config/riscv/riscv.c (riscv_print_operand): Add a 'i' format.
8257         config/riscv/riscv.md (addsi3): Use 'i' for immediates.
8258         (adddi3): Likewise.
8259         (*addsi3_extended): Likewise.
8260         (*addsi3_extended2): Likewise.
8261         (<optab>si3): Likewise.
8262         (<optab>di3): Likewise.
8263         (<optab><mode>3): Likewise.
8264         (<*optabe>si3_internal): Likewise.
8265         (zero_extendqi<SUPERQI:mode>2): Likewise.
8266         (*add<mode>hi3): Likewise.
8267         (*xor<mode>hi3): Likewise.
8268         (<optab>di3): Likewise.
8269         (*<optab>si3_extend): Likewise.
8270         (*sge<u>_<X:mode><GPR:mode>): Likewise.
8271         (*slt<u>_<X:mode><GPR:mode>): Likewise.
8272         (*sle<u>_<X:mode><GPR:mode>): Likewise.
8273
8274 2017-11-04  Andrew Waterman  <andrew@sifive.com>
8275
8276         * config/riscv/riscv.c (riscv_option_override): Conditionally set
8277         TARGET_STRICT_ALIGN based upon -mtune argument.
8278
8279 2017-11-04  Andrew Waterman  <andrew@sifive.com>
8280
8281         * config/riscv/riscv.h (SLOW_BYTE_ACCESS): Change to 1.
8282
8283 2017-11-04  Daniel Santos  <daniel.santos@pobox.com>
8284
8285         * config/i386/i386.c (choose_basereg): Use optional scratch
8286         register and add assertion.
8287         (x86_emit_outlined_ms2sysv_save): Use scratch register when
8288         needed, and don't allocate stack.
8289         (ix86_expand_prologue): Rearrange where SSE saves/stub call is
8290         emitted, correct wrong allocation with -mcall-ms2sysv-xlogues.
8291         (ix86_emit_outlined_ms2sysv_restore): Fix non-immediate offsets.
8292
8293 2017-11-03  Jeff Law  <law@redhat.com>
8294
8295         * config/i386/i386.c (ix86_emit_restore_reg_using_pop): Prototype.
8296         (ix86_adjust_stack_and_probe_stack_clash): Use a push/pop sequence
8297         to probe at the start of a noreturn function.
8298
8299 2017-11-03  Jakub Jelinek  <jakub@redhat.com>
8300
8301         PR tree-optimization/78821
8302         * gimple-ssa-store-merging.c: Update the file comment.
8303         (MAX_STORE_ALIAS_CHECKS): Define.
8304         (struct store_operand_info): New type.
8305         (store_operand_info::store_operand_info): New constructor.
8306         (struct store_immediate_info): Add rhs_code and ops data members.
8307         (store_immediate_info::store_immediate_info): Add rhscode, op0r
8308         and op1r arguments to the ctor, initialize corresponding data members.
8309         (struct merged_store_group): Add load_align_base and load_align
8310         data members.
8311         (merged_store_group::merged_store_group): Initialize them.
8312         (merged_store_group::do_merge): Update them.
8313         (merged_store_group::apply_stores): Pick the constant for
8314         encode_tree_to_bitpos from one of the two operands, or skip
8315         encode_tree_to_bitpos if neither operand is a constant.
8316         (class pass_store_merging): Add process_store method decl.  Remove
8317         bool argument from terminate_all_aliasing_chains method decl.
8318         (pass_store_merging::terminate_all_aliasing_chains): Remove
8319         var_offset_p argument and corresponding handling.
8320         (stmts_may_clobber_ref_p): New function.
8321         (compatible_load_p): New function.
8322         (imm_store_chain_info::coalesce_immediate_stores): Terminate group
8323         if there is overlap and rhs_code is not INTEGER_CST.  For
8324         non-overlapping stores terminate group if rhs is not mergeable.
8325         (get_alias_type_for_stmts): Change first argument from
8326         auto_vec<gimple *> & to vec<gimple *> &.  Add IS_LOAD, CLIQUEP and
8327         BASEP arguments.  If IS_LOAD is true, look at rhs1 of the stmts
8328         instead of lhs.  Compute *CLIQUEP and *BASEP in addition to the
8329         alias type.
8330         (get_location_for_stmts): Change first argument from
8331         auto_vec<gimple *> & to vec<gimple *> &.
8332         (struct split_store): Remove orig_stmts data member, add orig_stores.
8333         (split_store::split_store): Create orig_stores rather than orig_stmts.
8334         (find_constituent_stmts): Renamed to ...
8335         (find_constituent_stores): ... this.  Change second argument from
8336         vec<gimple *> * to vec<store_immediate_info *> *, push pointers
8337         to info structures rather than the statements.
8338         (split_group): Rename ALLOW_UNALIGNED argument to
8339         ALLOW_UNALIGNED_STORE, add ALLOW_UNALIGNED_LOAD argument and handle
8340         it.  Adjust find_constituent_stores caller.
8341         (imm_store_chain_info::output_merged_store): Handle rhs_code other
8342         than INTEGER_CST, adjust split_group, get_alias_type_for_stmts and
8343         get_location_for_stmts callers.  Set MR_DEPENDENCE_CLIQUE and
8344         MR_DEPENDENCE_BASE on the MEM_REFs if they are the same in all stores.
8345         (mem_valid_for_store_merging): New function.
8346         (handled_load): New function.
8347         (pass_store_merging::process_store): New method.
8348         (pass_store_merging::execute): Use process_store method.  Adjust
8349         terminate_all_aliasing_chains caller.
8350
8351 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
8352
8353         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
8354         Return true for more constants, symbols and label references.
8355         (aarch64_valid_floating_const): Remove unused function.
8356
8357 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
8358
8359         PR target/82786
8360         * config/aarch64/aarch64.c (aarch64_layout_frame):
8361         Undo forcing of LR at bottom of frame.
8362
8363 2017-11-03  Jeff Law  <law@redhat.com>
8364
8365         PR target/82823
8366         * config/i386/i386.c (ix86_expand_prologue): Tighten assert
8367         for int_registers_saved.
8368
8369         * cfganal.c (single_pred_edge_ignoring_loop_edges): New function
8370         extracted from tree-ssa-dom.c.
8371         * cfganal.h (single_pred_edge_ignoring_loop_edges): Prototype.
8372         * tree-ssa-dom.c (single_incoming_edge_ignoring_loop_edges): Remove.
8373         (record_equivalences_from_incoming_edge): Add additional argument
8374         to single_pred_edge_ignoring_loop_edges call.
8375         * tree-ssa-uncprop.c (single_incoming_edge_ignoring_loop_edges): Remove.
8376         (uncprop_dom_walker::before_dom_children): Add additional argument
8377         to single_pred_edge_ignoring_loop_edges call.
8378         * tree-ssa-sccvn.c (sccvn_dom_walker::before_dom_children): Use
8379         single_pred_edge_ignoring_loop_edges rather than open coding.
8380         * tree-vrp.c (evrp_dom_walker::before_dom_children): Similarly.
8381
8382 2017-11-03  Marc Glisse  <marc.glisse@inria.fr>
8383
8384         * match.pd (-(-A)): Rewrite.
8385
8386 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
8387
8388         * config/rs6000/rs60000-protos.h (rs6000_emit_sISEL): Delete.
8389         (rs6000_emit_int_cmove): New declaration.
8390         * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Delete declaration.
8391         (rs6000_emit_sISEL): Delete.
8392         (rs6000_emit_int_cmove): Make non-static.
8393         * config/rs6000/rs6000.md (cstore<mode>4): Use rs6000_emit_int_cmove
8394         instead of rs6000_emit_sISEL.
8395
8396 2017-11-03  Jan Hubicka  <hubicka@ucw.cz>
8397
8398         * asan.c (create_cond_insert_point): Maintain profile.
8399         * ipa-utils.c (ipa_merge_profiles): Be sure only IPA profiles are
8400         merged.
8401         * basic-block.h (struct basic_block_def): Remove frequency.
8402         (EDGE_FREQUENCY): Use to_frequency
8403         * bb-reorder.c (push_to_next_round_p): Use only IPA counts for global
8404         heuristics.
8405         (find_traces): Update to use to_frequency.
8406         (find_traces_1_round): Likewise; use only IPA counts.
8407         (bb_to_key): Likewise.
8408         (connect_traces): Use IPA counts only.
8409         (copy_bb_p): Update to use to_frequency.
8410         (fix_up_crossing_landing_pad): Likewise.
8411         (sanitize_hot_paths): Likewise.
8412         * bt-load.c (basic_block_freq): Likewise.
8413         * cfg.c (init_flow): Set count_max to uninitialized.
8414         (check_bb_profile): Remove frequencies; check counts.
8415         (dump_bb_info): Do not dump frequencies.
8416         (update_bb_profile_for_threading): Update counts only.
8417         (scale_bbs_frequencies_int): Likewise.
8418         (MAX_SAFE_MULTIPLIER): Remove.
8419         (scale_bbs_frequencies_gcov_type): Update counts only.
8420         (scale_bbs_frequencies_profile_count): Update counts only.
8421         (scale_bbs_frequencies): Update counts only.
8422         * cfg.h (struct control_flow_graph): Add count-max.
8423         (update_bb_profile_for_threading): Update prototype.
8424         * cfgbuild.c (find_bb_boundaries): Do not update frequencies.
8425         (find_many_sub_basic_blocks): Likewise.
8426         * cfgcleanup.c (try_forward_edges): Likewise.
8427         (try_crossjump_to_edge): Likewise.
8428         * cfgexpand.c (expand_gimple_cond): Likewise.
8429         (expand_gimple_tailcall): Likewise.
8430         (construct_init_block): Likewise.
8431         (construct_exit_block): Likewise.
8432         * cfghooks.c (verify_flow_info): Check consistency of counts.
8433         (dump_bb_for_graph): Do not dump frequencies.
8434         (split_block_1): Do not update frequencies.
8435         (split_edge): Do not update frequencies.
8436         (make_forwarder_block): Do not update frequencies.
8437         (duplicate_block): Do not update frequencies.
8438         (account_profile_record): Do not update frequencies.
8439         * cfgloop.c (find_subloop_latch_edge_by_profile): Use IPA counts
8440         for global heuristics.
8441         * cfgloopanal.c (average_num_loop_insns): Update to use to_frequency.
8442         (expected_loop_iterations_unbounded): Use counts only.
8443         * cfgloopmanip.c (scale_loop_profile): Simplify.
8444         (create_empty_loop_on_edge): Simplify
8445         (loopify): Simplify
8446         (duplicate_loop_to_header_edge): Simplify
8447         * cfgrtl.c (force_nonfallthru_and_redirect): Update profile.
8448         (update_br_prob_note): Take care of removing note when profile
8449         becomes undefined.
8450         (relink_block_chain): Do not dump frequency.
8451         (rtl_account_profile_record): Use to_frequency.
8452         * cgraph.c (symbol_table::create_edge): Convert count to ipa count.
8453         (cgraph_edge::redirect_call_stmt_to_calle): Conver tcount to ipa count.
8454         (cgraph_update_edges_for_call_stmt_node): Likewise.
8455         (cgraph_edge::verify_count_and_frequency): Update.
8456         (cgraph_node::verify_node): Temporarily disable frequency verification.
8457         * cgraphbuild.c (compute_call_stmt_bb_frequency): Use
8458         to_cgraph_frequency.
8459         (cgraph_edge::rebuild_edges): Convert to ipa counts.
8460         * cgraphunit.c (init_lowered_empty_function): Do not initialize
8461         frequencies.
8462         (cgraph_node::expand_thunk): Update profile.
8463         * except.c (dw2_build_landing_pads): Do not update frequency.
8464         * final.c (compute_alignments): Use to_frequency.
8465         (dump_basic_block_info): Do not dump frequency.
8466         * gimple-pretty-print.c (dump_profile): Do not dump frequency.
8467         (dump_gimple_bb_header): Do not dump frequency.
8468         * gimple-ssa-isolate-paths.c (isolate_path): Do not update frequency;
8469         do update count.
8470         * gimple-streamer-in.c (input_bb): Do not stream frequency.
8471         * gimple-streamer-out.c (output_bb): Do not stream frequency.
8472         * haifa-sched.c (sched_pressure_start_bb): Use to_freuqency.
8473         (init_before_recovery): Do not update frequency.
8474         (sched_create_recovery_edges): Do not update frequency.
8475         * hsa-gen.c (convert_switch_statements): Do not update frequency.
8476         * ipa-cp.c (ipcp_propagate_stage): Update search for max_count.
8477         (ipa_cp_c_finalize): Set max_count to uninitialized.
8478         * ipa-fnsummary.c (get_minimal_bb): Use counts.
8479         (param_change_prob): Use counts.
8480         * ipa-profile.c (ipa_profile_generate_summary): Do not summarize
8481         local profiles.
8482         * ipa-split.c (consider_split): Use to_frequency.
8483         (split_function): Use to_frequency.
8484         * ira-build.c (loop_compare_func): Likewise.
8485         (mark_loops_for_removal): Likewise.
8486         (mark_all_loops_for_removal): Likewise.
8487         * loop-doloop.c (doloop_modify): Do not update frequency.
8488         * loop-unroll.c (unroll_loop_runtime_iterations): Do not update
8489         frequency.
8490         * lto-streamer-in.c (input_function): Update count_max.
8491         * omp-expand.c (expand_omp_taskreg): Update count_max.
8492         * omp-simd-clone.c (simd_clone_adjust): Update profile.
8493         * predict.c (maybe_hot_frequency_p): Use to_frequency.
8494         (maybe_hot_count_p): Use ipa counts only.
8495         (maybe_hot_bb_p): Simplify.
8496         (maybe_hot_edge_p): Simplify.
8497         (probably_never_executed): Do not take frequency argument.
8498         (probably_never_executed_bb_p): Do not pass frequency.
8499         (probably_never_executed_edge_p): Likewise.
8500         (combine_predictions_for_bb): Check that profile is nonzero.
8501         (propagate_freq): Do not set frequency.
8502         (drop_profile): Simplify.
8503         (counts_to_freqs): Simplify.
8504         (expensive_function_p): Use to_frequency.
8505         (propagate_unlikely_bbs_forward): Simplify.
8506         (determine_unlikely_bbs): Simplify.
8507         (estimate_bb_frequencies): Add hack to silence graphite issues.
8508         (compute_function_frequency): Use ipa counts.
8509         (pass_profile::execute): Update.
8510         (rebuild_frequencies): Use counts only.
8511         (force_edge_cold): Use counts only.
8512         * profile-count.c (profile_count::dump): Dump new count types.
8513         (profile_count::differs_from_p): Check compatiblity.
8514         (profile_count::to_frequency): New function.
8515         (profile_count::to_cgraph_frequency): New function.
8516         * profile-count.h (struct function): Declare.
8517         (enum profile_quality): Add profile_guessed_local and
8518         profile_guessed_global0.
8519         (class profile_proability): Decrease number of bits to 29;
8520         update from_reg_br_prob_note and to_reg_br_prob_note.
8521         (class profile_count: Update comment; decrease number of bits
8522         to 61. Check compatibility.
8523         (profile_count::compatible_p): New private member function.
8524         (profile_count::ipa_p): New member function.
8525         (profile_count::operator<): Handle global zero correctly.
8526         (profile_count::operator>): Handle global zero correctly.
8527         (profile_count::operator<=): Handle global zero correctly.
8528         (profile_count::operator>=): Handle global zero correctly.
8529         (profile_count::nonzero_p): New member function.
8530         (profile_count::force_nonzero): New member function.
8531         (profile_count::max): New member function.
8532         (profile_count::apply_scale): Handle IPA scalling.
8533         (profile_count::guessed_local): New member function.
8534         (profile_count::global0): New member function.
8535         (profile_count::ipa): New member function.
8536         (profile_count::to_frequency): Declare.
8537         (profile_count::to_cgraph_frequency): Declare.
8538         * profile.c (OVERLAP_BASE): Delete.
8539         (compute_frequency_overlap): Delete.
8540         (compute_branch_probabilities): Do not use compute_frequency_overlap.
8541         * regs.h (REG_FREQ_FROM_BB): Use to_frequency.
8542         * sched-ebb.c (rank): Use counts only.
8543         * shrink-wrap.c (handle_simple_exit): Use counts only.
8544         (try_shrink_wrapping): Use counts only.
8545         (place_prologue_for_one_component): Use counts only.
8546         * tracer.c (find_best_predecessor): Use to_frequency.
8547         (find_trace): Use to_frequency.
8548         (tail_duplicate): Use to_frequency.
8549         * trans-mem.c (expand_transaction): Do not update frequency.
8550         * tree-call-cdce.c: Do not update frequency.
8551         * tree-cfg.c (gimple_find_sub_bbs): Likewise.
8552         (gimple_merge_blocks): Likewise.
8553         (gimple_split_edge): Likewise.
8554         (gimple_duplicate_sese_region): Likewise.
8555         (gimple_duplicate_sese_tail): Likewise.
8556         (move_sese_region_to_fn): Likewise.
8557         (gimple_account_profile_record): Likewise.
8558         (insert_cond_bb): Likewise.
8559         * tree-complex.c (expand_complex_div_wide): Likewise.
8560         * tree-eh.c (lower_resx): Update profile.
8561         * tree-inline.c (copy_bb): Simplify count scaling; do not scale
8562         frequencies.
8563         (initialize_cfun): Do not initialize frequencies
8564         (freqs_to_counts): Delete.
8565         (copy_cfg_body): Ignore count parameter.
8566         (copy_body): Update.
8567         (expand_call_inline): Update count_max.
8568         (optimize_inline_calls): Update count_max.
8569         (tree_function_versioning): Update count_max.
8570         * tree-ssa-coalesce.c (coalesce_cost_bb): Use to_frequency.
8571         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Do not update
8572         frequency.
8573         * tree-ssa-loop-im.c (execute_sm_if_changed): Use counts only.
8574         * tree-ssa-loop-ivcanon.c (unloop_loops): Do not update freuqency.
8575         (try_peel_loop): Likewise.
8576         * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Use
8577         to_frequency.
8578         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Pass -1.
8579         (tree_transform_and_unroll_loop): Do not use frequencies
8580         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations):
8581         Use reliable prediction only.
8582         * tree-ssa-loop-unswitch.c (hoist_guard): Do not use frequencies.
8583         * tree-ssa-sink.c (select_best_block): Use to_frequency.
8584         * tree-ssa-tail-merge.c (replace_block_by): Temporarily disable
8585         probability scaling.
8586         * tree-ssa-threadupdate.c (create_block_for_threading): Do
8587         not update frequency
8588         (any_remaining_duplicated_blocks): Likewise.
8589         (update_profile): Likewise.
8590         (estimated_freqs_path): Delete.
8591         (freqs_to_counts_path): Delete.
8592         (clear_counts_path): Delete.
8593         (ssa_fix_duplicate_block_edges): Likewise.
8594         (duplicate_thread_path): Likewise.
8595         * tree-switch-conversion.c (gen_inbound_check): Use counts.
8596         * tree-tailcall.c (decrease_profile): Do not update frequency.
8597         (eliminate_tail_call): Likewise.
8598         * tree-vect-loop-manip.c (vect_do_peeling): Likewise.
8599         * tree-vect-loop.c (scale_profile_for_vect_loop): Likewise.
8600         (optimize_mask_stores): Likewise.
8601         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
8602         * ubsan.c (ubsan_expand_null_ifn): Update profile.
8603         (ubsan_expand_ptr_ifn): Update profile.
8604         * value-prof.c (gimple_ic): Simplify.
8605         * value-prof.h (gimple_ic): Update prototype.
8606         * ipa-inline-transform.c (inline_transform): Fix scaling conditoins.
8607         * ipa-inline.c (compute_uninlined_call_time): Be sure that
8608         counts are nonzero.
8609         (want_inline_self_recursive_call_p): Likewise.
8610         (resolve_noninline_speculation): Only cummulate defined counts.
8611         (inline_small_functions): Use nonzero_p.
8612         (ipa_inline): Do not access freed node.
8613
8614 2017-11-03  Wilco Dijkstra  <wdijkstr@arm.com>
8615
8616         * config/aarch64/aarch64.c (aarch64_override_options_internal):
8617         Set PARAM_SCHED_PRESSURE_ALGORITHM to SCHED_PRESSURE_MODEL.
8618
8619 2017-11-03  Kito Cheng  <kito.cheng@gmail.com>
8620
8621         * config/riscv/riscv.c (riscv_legitimize_move): Handle
8622         non-legitimate address.
8623
8624 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
8625
8626         * config/rs6000/rs6000.md (*lt0_disi): Delete.
8627         (*lt0_<mode>di, *lt0_<mode>si): New.
8628
8629 2017-11-03  Segher Boessenkool  <segher@kernel.crashing.org>
8630
8631         * config/rs6000/rs6000.md (move_from_CR_ov_bit): Change condition to
8632         TARGET_PAIRED_FLOAT.
8633
8634 2017-11-03  Siddhesh Poyarekar  <siddhesh.poyarekar@linaro.org>
8635             Jim Wilson  <jim.wilson@linaro.org>
8636
8637         * config/aarch64/aarch64-cores.def (saphira): New CPU.
8638         * config/aarch64/aarch64-tune.md: Regenerated.
8639         * doc/invoke.texi (AArch64 Options/-mtune): Add "saphira".
8640         * gcc/config/aarch64/aarch64.c (saphira_tunings): New tuning table.
8641
8642 2017-11-03  Cupertino Miranda  <cmiranda@synopsys.com>
8643
8644         * config/arc/arc.c (arc_save_restore): Corrected CFA note.
8645         (arc_expand_prologue): Restore blink for millicode.
8646         * config/arc/linux.h (LINK_EH_SPEC): Defined.
8647
8648 2017-11-03  Richard Sandiford  <richard.sandiford@linaro.org>
8649
8650         PR target/82809
8651         * config/i386/i386.c (ix86_vector_duplicate_value): Use
8652         gen_vec_duplicate after forcing the scalar into a register.
8653
8654 2017-11-02  Segher Boessenkool  <segher@kernel.crashing.org>
8655
8656         * combine (try_combine): Print the insns input to try_combine to the
8657         dump file.
8658
8659 2017-11-02  Steve Ellcey  <sellcey@cavium.com>
8660
8661         PR target/79868
8662         * config/aarch64/aarch64-c.c (aarch64_pragma_target_parse):
8663         Remove second argument from aarch64_process_target_attr call.
8664         * config/aarch64/aarch64-protos.h (aarch64_process_target_attr):
8665         Ditto.
8666         * config/aarch64/aarch64.c (aarch64_attribute_info): Change
8667         field type.
8668         (aarch64_handle_attr_arch): Remove second argument.
8669         (aarch64_handle_attr_cpu): Ditto.
8670         (aarch64_handle_attr_tune): Ditto.
8671         (aarch64_handle_attr_isa_flags): Ditto.
8672         (aarch64_process_one_target_attr): Ditto.
8673         (aarch64_process_target_attr): Ditto.
8674         (aarch64_option_valid_attribute_p): Remove second argument.
8675         on aarch64_process_target_attr call.
8676
8677 2017-11-02  David Malcolm  <dmalcolm@redhat.com>
8678
8679         * diagnostic.c: Include "selftest-diagnostic.h".
8680         (selftest::assert_location_text): New function.
8681         (selftest::test_diagnostic_get_location_text): New function.
8682         (selftest::diagnostic_c_tests): Call it.
8683
8684 2017-11-02  David Malcolm  <dmalcolm@redhat.com>
8685
8686         * Makefile.in (OBJS-libcommon): Add selftest-diagnostic.o.
8687         * diagnostic-show-locus.c: Include "selftest-diagnostic.h".
8688         (class selftest::test_diagnostic_context): Move to...
8689         * selftest-diagnostic.c: New file.
8690         * selftest-diagnostic.h: New file.
8691
8692 2017-11-02  James Bowman  <james.bowman@ftdichip.com>
8693
8694         * config/ft32/ft32.c (ft32_addr_space_legitimate_address_p): increase
8695         offset range for FT32B.
8696         * config/ft32/ft32.h: option "mcompress" enables relaxation.
8697         * config/ft32/ft32.md: Add TARGET_NOPM.
8698         * config/ft32/ft32.opt: Add mft32b, mcompress, mnopm.
8699         * gcc/doc/invoke.texi: Add mft32b, mcompress, mnopm.
8700
8701 2017-11-02  Wilco Dijkstra  <wdijkstr@arm.com>
8702
8703         * config/aarch64/aarch64.h (MALLOC_ABI_ALIGNMENT): New define.
8704
8705 2017-11-02  Jeff Law  <law@redhat.com>
8706
8707         * gimple-ssa-sprintf.c (sprintf_dom_walker): Remove
8708         virtual keyword on FINAL OVERRIDE members.
8709
8710         * tree-ssa-propagate.h (ssa_propagation_engine): Group
8711         virtuals together.  Add virtual destructor.
8712         (substitute_and_fold_engine): Similarly.
8713
8714 2017-11-02  Jan Hubicka  <hubicka@ucw.cz>
8715
8716         * x86-tune.def (X86_TUNE_USE_INCDEC): Enable for Haswell+.
8717
8718 2017-11-02  Richard Biener  <rguenther@suse.de>
8719
8720         PR tree-optimization/82795
8721         * tree-if-conv.c (predicate_mem_writes): Remove bogus assert.
8722
8723 2017-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
8724
8725         * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Don't require
8726         gcc_SUN_LD_VERSION.
8727         (gcc_GAS_CHECK_FEATURE): Remove.
8728         * configure.ac (ld_vers) <*-*-solaris2*>: Move comments from
8729         gcc_AC_INITFINI_ARRAY here.  Update for Solaris 11.4 changes.
8730         * configure: Regenerate.
8731
8732 2017-11-02  Claudiu Zissulescu <claziss@synopsys.com>
8733
8734         * config/arc/arc.c (hwloop_optimize): Account for empty
8735         body loops.
8736
8737 2017-11-02  Richard Biener  <rguenther@suse.de>
8738
8739         PR middle-end/82765
8740         * varasm.c (decode_addr_const): Make offset HOST_WIDE_INT.
8741         Truncate ARRAY_REF index and element size.
8742
8743 2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
8744
8745         * doc/invoke.texi (RISC-V Options): Use "@minus{}2 GB", not "-2 GB".
8746
8747 2017-11-01  Jeff Law  <law@redhat.com>
8748
8749         * tree-ssa-ccp.c (ccp_folder): New class derived from
8750         substitute_and_fold_engine.
8751         (ccp_folder::get_value): New member function.
8752         (ccp_folder::fold_stmt): Renamed from ccp_fold_stmt.
8753         (ccp_fold_stmt): Remove prototype.
8754         (ccp_finalize): Call substitute_and_fold from the ccp_class.
8755         * tree-ssa-copy.c (copy_folder): New class derived from
8756         substitute_and_fold_engine.
8757         (copy_folder::get_value): Renamed from get_value.
8758         (fini_copy_prop): Call substitute_and_fold from copy_folder class.
8759         * tree-vrp.c (vrp_folder): New class derived from
8760         substitute_and_fold_engine.
8761         (vrp_folder::fold_stmt): Renamed from vrp_fold_stmt.
8762         (vrp_folder::get_value): New member function.
8763         (vrp_finalize): Call substitute_and_fold from vrp_folder class.
8764         (evrp_dom_walker::before_dom_children): Similarly for replace_uses_in.
8765         * tree-ssa-propagate.h (substitute_and_fold_engine): New class to
8766         provide a class interface to folder/substitute routines.
8767         (ssa_prop_fold_stmt_fn): Remove typedef.
8768         (ssa_prop_get_value_fn): Likewise.
8769         (subsitute_and_fold): Remove prototype.
8770         (replace_uses_in): Likewise.
8771         * tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
8772         Renamed from replace_uses_in.  Call the virtual member function
8773         (substitute_and_fold_engine::replace_phi_args_in): Similarly.
8774         (substitute_and_fold_dom_walker): Remove initialization of
8775         data member entries for calbacks.  Add substitute_and_fold_engine
8776         member and initialize it.
8777         (substitute_and_fold_dom_walker::before_dom_children0: Use the
8778         member functions for get_value, replace_phi_args_in c
8779         replace_uses_in, and fold_stmt calls.
8780         (substitute_and_fold_engine::substitute_and_fold): Renamed from
8781         substitute_and_fold.  Remove assert.   Update ctor call.
8782
8783         * tree-ssa-propagate.h (ssa_prop_visit_stmt_fn): Remove typedef.
8784         (ssa_prop_visit_phi_fn): Likewise.
8785         (class ssa_propagation_engine): New class to provide an interface
8786         into ssa_propagate.
8787         * tree-ssa-propagate.c (ssa_prop_visit_stmt): Remove file scoped
8788         variable.
8789         (ssa_prop_visit_phi): Likewise.
8790         (ssa_propagation_engine::simulate_stmt): Moved into class.
8791         Call visit_phi/visit_stmt from the class rather than via
8792         file scoped static variables.
8793         (ssa_propagation_engine::simulate_block): Moved into class.
8794         (ssa_propagation_engine::process_ssa_edge_worklist): Similarly.
8795         (ssa_propagation_engine::ssa_propagate): Similarly.  No longer
8796         set file scoped statics for the visit_stmt/visit_phi callbacks.
8797         * tree-complex.c (complex_propagate): New class derived from
8798         ssa_propagation_engine.
8799         (complex_propagate::visit_stmt): Renamed from complex_visit_stmt.
8800         (complex_propagate::visit_phi): Renamed from complex_visit_phi.
8801         (tree_lower_complex): Call ssa_propagate via the complex_propagate
8802         class.
8803         * tree-ssa-ccp.c: (ccp_propagate): New class derived from
8804         ssa_propagation_engine.
8805         (ccp_propagate::visit_phi): Renamed from ccp_visit_phi_node.
8806         (ccp_propagate::visit_stmt): Renamed from ccp_visit_stmt.
8807         (do_ssa_ccp): Call ssa_propagate from the ccp_propagate class.
8808         * tree-ssa-copy.c (copy_prop): New class derived from
8809         ssa_propagation_engine.
8810         (copy_prop::visit_stmt): Renamed from copy_prop_visit_stmt.
8811         (copy_prop::visit_phi): Renamed from copy_prop_visit_phi_node.
8812         (execute_copy_prop): Call ssa_propagate from the copy_prop class.
8813         * tree-vrp.c (vrp_prop): New class derived from ssa_propagation_engine.
8814         (vrp_prop::visit_stmt): Renamed from vrp_visit_stmt.
8815         (vrp_prop::visit_phi): Renamed from vrp_visit_phi_node.
8816         (execute_vrp): Call ssa_propagate from the vrp_prop class.
8817
8818 2017-11-01  Jakub Jelinek  <jakub@redhat.com>
8819
8820         PR rtl-optimization/82778
8821         PR rtl-optimization/82597
8822         * compare-elim.c (struct comparison): Add in_a_setter field.
8823         (find_comparison_dom_walker::before_dom_children): Remove killed
8824         bitmap and df_simulate_find_defs call, instead walk the defs.
8825         Compute last_setter and initialize in_a_setter.  Merge definitions
8826         with first initialization for a few variables.
8827         (try_validate_parallel): Use insn_invalid_p instead of
8828         recog_memoized.  Return insn rather than just the pattern.
8829         (try_merge_compare): Fix up comment.  Don't uselessly test if
8830         in_a is a REG_P.  Use cmp->in_a_setter instead of walking UD
8831         chains.
8832         (execute_compare_elim_after_reload): Remove df_chain_add_problem
8833         call.
8834
8835 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8836             Alan Hayward  <alan.hayward@arm.com>
8837             David Sherwood  <david.sherwood@arm.com>
8838
8839         * config/aarch64/aarch64.c (aarch64_rtx_costs): Use
8840         aarch64_hard_regno_nregs to get the number of registers
8841         in a mode.
8842
8843 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8844             Alan Hayward  <alan.hayward@arm.com>
8845             David Sherwood  <david.sherwood@arm.com>
8846
8847         * config/aarch64/constraints.md (Upl): Rename to...
8848         (Uaa): ...this.
8849         * config/aarch64/aarch64.md
8850         (*zero_extend<SHORT:mode><GPI:mode>2_aarch64, *addsi3_aarch64_uxtw):
8851         Update accordingly.
8852
8853 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8854             Alan Hayward  <alan.hayward@arm.com>
8855             David Sherwood  <david.sherwood@arm.com>
8856
8857         * config/aarch64/aarch64.c (aarch64_add_constant_internal)
8858         (aarch64_add_constant, aarch64_add_sp, aarch64_sub_sp): Move
8859         earlier in file.
8860
8861 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8862             Alan Hayward  <alan.hayward@arm.com>
8863             David Sherwood  <david.sherwood@arm.com>
8864
8865         * config/aarch64/aarch64.c (aarch64_evpc_trn, aarch64_evpc_uzp)
8866         (aarch64_evpc_zip, aarch64_evpc_ext, aarch64_evpc_rev)
8867         (aarch64_evpc_dup): Generate rtl direcly, rather than using
8868         named expanders.
8869         (aarch64_expand_vec_perm_const_1): Explicitly check for permutes
8870         of a single element.
8871         * config/aarch64/iterators.md: Add a comment above the permute
8872         unspecs to say that they are generated directly by
8873         aarch64_expand_vec_perm_const.
8874         * config/aarch64/aarch64-simd.md: Likewise the permute instructions.
8875
8876 2017-11-01  Nathan Sidwell  <nathan@acm.org>
8877
8878         * tree-dump.c (dequeue_and_dump): Use HAS_DECL_ASSEMBLER_NAME_P.
8879
8880 2017-11-01  Palmer Dabbelt  <palmer@dabbelt.com>
8881
8882         * doc/invoke.texi (RISC-V Options): Explicitly name the medlow
8883         and medany code models, and describe what they do.
8884
8885 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8886
8887         Revert accidental duplicate:
8888
8889         * combine.c (can_change_dest_mode): Reject changes in
8890         REGMODE_NATURAL_SIZE.
8891
8892 2017-11-01  Segher Boessenkool  <segher@kernel.crashing.org>
8893
8894         PR rtl-optimization/64682
8895         PR rtl-optimization/69567
8896         PR rtl-optimization/69737
8897         PR rtl-optimization/82683
8898         * combine.c (distribute_notes) <REG_DEAD>: If the new I2 sets the same
8899         register mentioned in the note, drop the note, unless it came from I3,
8900         in which case it should go to I3 again.
8901
8902 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8903
8904         * tree-ssa-dse.c (normalize_ref): Check whether the ranges overlap
8905         and return false if not.
8906         (clear_bytes_written_by, live_bytes_read): Update accordingly.
8907
8908 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8909
8910         * tree-ssa-alias.h (ranges_overlap_p): Return false if either
8911         range is known to be empty.
8912
8913 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8914             Alan Hayward  <alan.hayward@arm.com>
8915             David Sherwood  <david.sherwood@arm.com>
8916
8917         * simplify-rtx.c (simplify_const_unary_operation): Use GET_MODE_NUNITS
8918         and CONST_VECTOR_NUNITS instead of computing the number of units from
8919         the byte sizes of the vector and element.
8920         (simplify_binary_operation_1): Likewise.
8921         (simplify_const_binary_operation): Likewise.
8922         (simplify_ternary_operation): Likewise.
8923
8924 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8925             Alan Hayward  <alan.hayward@arm.com>
8926             David Sherwood  <david.sherwood@arm.com>
8927
8928         * var-tracking.c (INT_MEM_OFFSET): Replace with...
8929         (int_mem_offset): ...this new function.
8930         (var_mem_set, var_mem_delete_and_set, var_mem_delete)
8931         (find_mem_expr_in_1pdv, dataflow_set_preserve_mem_locs)
8932         (same_variable_part_p, use_type, add_stores, vt_get_decl_and_offset):
8933         Update accordingly.
8934
8935 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8936             Alan Hayward  <alan.hayward@arm.com>
8937             David Sherwood  <david.sherwood@arm.com>
8938
8939         * lower-subreg.c (interesting_mode_p): New function.
8940         (compute_costs, find_decomposable_subregs, decompose_register)
8941         (simplify_subreg_concatn, can_decompose_p, resolve_simple_move)
8942         (resolve_clobber, dump_choices): Use it.
8943
8944 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8945             Alan Hayward  <alan.hayward@arm.com>
8946             David Sherwood  <david.sherwood@arm.com>
8947
8948         * rtlhash.c (add_rtx): Use add_hwi for 'w' and add_int for 'i'.
8949
8950 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8951             Alan Hayward  <alan.hayward@arm.com>
8952             David Sherwood  <david.sherwood@arm.com>
8953
8954         * alias.c (find_base_value, find_base_term): Only process integer
8955         truncations.  Check the precision rather than the size.
8956
8957 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8958             Alan Hayward  <alan.hayward@arm.com>
8959             David Sherwood  <david.sherwood@arm.com>
8960
8961         * machmode.h (is_narrower_int_mode): New function
8962         * optabs.c (expand_float, expand_fix): Use it.
8963         * dwarf2out.c (rotate_loc_descriptor): Likewise.
8964
8965 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8966             Alan Hayward  <alan.hayward@arm.com>
8967             David Sherwood  <david.sherwood@arm.com>
8968
8969         * rtl.h (narrower_subreg_mode): New function.
8970         * ira-color.c (update_costs_from_allocno): Use it.
8971
8972 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
8973             Alan Hayward  <alan.hayward@arm.com>
8974             David Sherwood  <david.sherwood@arm.com>
8975
8976         * optabs-query.h (convert_optab_p): New function, split out from...
8977         (convert_optab_handler): ...here.
8978         (widening_optab_handler): Delete.
8979         (find_widening_optab_handler): Remove permit_non_widening parameter.
8980         (find_widening_optab_handler_and_mode): Likewise.  Provide an
8981         override that operates on mode class wrappers.
8982         * optabs-query.c (widening_optab_handler): Delete.
8983         (find_widening_optab_handler_and_mode): Remove permit_non_widening
8984         parameter.  Assert that the two modes are the same class and that
8985         the "from" mode is narrower than the "to" mode.  Use
8986         convert_optab_handler instead of widening_optab_handler.
8987         * expmed.c (expmed_mult_highpart_optab): Use convert_optab_handler
8988         instead of widening_optab_handler.
8989         * expr.c (expand_expr_real_2): Update calls to
8990         find_widening_optab_handler.
8991         * optabs.c (expand_widen_pattern_expr): Likewise.
8992         (expand_binop_directly): Take the insn_code as a parameter.
8993         (expand_binop): Only call find_widening_optab_handler for
8994         conversion optabs; use optab_handler otherwise.  Update calls
8995         to find_widening_optab_handler and expand_binop_directly.
8996         Use convert_optab_handler instead of widening_optab_handler.
8997         * tree-ssa-math-opts.c (convert_mult_to_widen): Update calls to
8998         find_widening_optab_handler and use scalar_mode rather than
8999         machine_mode.
9000         (convert_plusminus_to_widen): Likewise.
9001
9002 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9003             Alan Hayward  <alan.hayward@arm.com>
9004             David Sherwood  <david.sherwood@arm.com>
9005
9006         * machmode.h (fixed_size_mode): New class.
9007         * rtl.h (get_pool_mode): Return fixed_size_mode.
9008         * gengtype.c (main): Add fixed_size_mode.
9009         * target.def (get_raw_result_mode): Return a fixed_size_mode.
9010         (get_raw_arg_mode): Likewise.
9011         * doc/tm.texi: Regenerate.
9012         * targhooks.h (default_get_reg_raw_mode): Return a fixed_size_mode.
9013         * targhooks.c (default_get_reg_raw_mode): Likewise.
9014         * config/ia64/ia64.c (ia64_get_reg_raw_mode): Likewise.
9015         * config/mips/mips.c (mips_get_reg_raw_mode): Likewise.
9016         * config/msp430/msp430.c (msp430_get_raw_arg_mode): Likewise.
9017         (msp430_get_raw_result_mode): Likewise.
9018         * config/avr/avr-protos.h (regmask): Use as_a <fixed_side_mode>
9019         * dbxout.c (dbxout_parms): Require fixed-size modes.
9020         * expr.c (copy_blkmode_from_reg, copy_blkmode_to_reg): Likewise.
9021         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
9022         * omp-low.c (lower_oacc_reductions): Likewise.
9023         * simplify-rtx.c (simplify_immed_subreg): Take fixed_size_modes.
9024         (simplify_subreg): Update accordingly.
9025         * varasm.c (constant_descriptor_rtx::mode): Change to fixed_size_mode.
9026         (force_const_mem): Update accordingly.  Return NULL_RTX for modes
9027         that aren't fixed-size.
9028         (get_pool_mode): Return a fixed_size_mode.
9029         (output_constant_pool_2): Take a fixed_size_mode.
9030
9031 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9032             Alan Hayward  <alan.hayward@arm.com>
9033             David Sherwood  <david.sherwood@arm.com>
9034
9035         * doc/rtl.texi (vec_series): Document.
9036         (const): Say that the operand can be a vec_series.
9037         * rtl.def (VEC_SERIES): New rtx code.
9038         * rtl.h (const_vec_series_p_1): Declare.
9039         (const_vec_series_p): New function.
9040         * emit-rtl.h (gen_const_vec_series): Declare.
9041         (gen_vec_series): Likewise.
9042         * emit-rtl.c (const_vec_series_p_1, gen_const_vec_series)
9043         (gen_vec_series): Likewise.
9044         * optabs.c (expand_mult_highpart): Use gen_const_vec_series.
9045         * simplify-rtx.c (simplify_unary_operation): Handle negations
9046         of vector series.
9047         (simplify_binary_operation_series): New function.
9048         (simplify_binary_operation_1): Use it.  Handle VEC_SERIES.
9049         (test_vector_ops_series): New function.
9050         (test_vector_ops): Call it.
9051         * config/powerpcspe/altivec.md (altivec_lvsl): Use
9052         gen_const_vec_series.
9053         (altivec_lvsr): Likewise.
9054         * config/rs6000/altivec.md (altivec_lvsl, altivec_lvsr): Likewise.
9055
9056 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9057             Alan Hayward  <alan.hayward@arm.com>
9058             David Sherwood  <david.sherwood@arm.com>
9059
9060         * doc/rtl.texi (const): Update description of address constants.
9061         Say that vector constants are allowed too.
9062         * common.md (E, F): Use CONSTANT_P instead of checking for
9063         CONST_VECTOR.
9064         * emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
9065         checking for CONST_VECTOR.
9066         * expmed.c (make_tree): Use build_vector_from_val for a CONST
9067         VEC_DUPLICATE.
9068         * expr.c (expand_expr_real_2): Check for vector modes instead
9069         of checking for CONST_VECTOR.
9070         * rtl.h (const_vec_p): New function.
9071         (const_vec_duplicate_p): Check for a CONST VEC_DUPLICATE.
9072         (unwrap_const_vec_duplicate): Handle them here too.
9073
9074 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9075             David Malcolm  <dmalcolm@redhat.com>
9076             Alan Hayward  <alan.hayward@arm.com>
9077             David Sherwood  <david.sherwood@arm.com>
9078
9079         * rtl.h (vec_duplicate_p): New function.
9080         * selftest-rtl.c (assert_rtx_eq_at): New function.
9081         * selftest-rtl.h (ASSERT_RTX_EQ): New macro.
9082         (assert_rtx_eq_at): Declare.
9083         * selftest.h (selftest::simplify_rtx_c_tests): Declare.
9084         * selftest-run-tests.c (selftest::run_tests): Call it.
9085         * simplify-rtx.c: Include selftest.h and selftest-rtl.h.
9086         (simplify_unary_operation_1): Recursively handle vector duplicates.
9087         (simplify_binary_operation_1): Likewise.  Handle VEC_SELECTs of
9088         vector duplicates.
9089         (simplify_subreg): Handle subregs of vector duplicates.
9090         (make_test_reg, test_vector_ops_duplicate, test_vector_ops)
9091         (selftest::simplify_rtx_c_tests): New functions.
9092
9093 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9094             Alan Hayward  <alan.hayward@arm.com>
9095             David Sherwood  <david.sherwood@arm.com>
9096
9097         * emit-rtl.h (gen_const_vec_duplicate): Declare.
9098         (gen_vec_duplicate): Likewise.
9099         * emit-rtl.c (gen_const_vec_duplicate_1): New function, split
9100         out from...
9101         (gen_const_vector): ...here.
9102         (gen_const_vec_duplicate, gen_vec_duplicate): New functions.
9103         (gen_rtx_CONST_VECTOR): Use gen_const_vec_duplicate for constants
9104         whose elements are all equal.
9105         * optabs.c (expand_vector_broadcast): Use gen_const_vec_duplicate.
9106         * simplify-rtx.c (simplify_const_unary_operation): Likewise.
9107         (simplify_relational_operation): Likewise.
9108         * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
9109         Likewise.
9110         (aarch64_simd_dup_constant): Use gen_vec_duplicate.
9111         (aarch64_expand_vector_init): Likewise.
9112         * config/arm/arm.c (neon_vdup_constant): Likewise.
9113         (neon_expand_vector_init): Likewise.
9114         (arm_expand_vec_perm): Use gen_const_vec_duplicate.
9115         (arm_block_set_unaligned_vect): Likewise.
9116         (arm_block_set_aligned_vect): Likewise.
9117         * config/arm/neon.md (neon_copysignf<mode>): Likewise.
9118         * config/i386/i386.c (ix86_expand_vec_perm): Likewise.
9119         (expand_vec_perm_even_odd_pack): Likewise.
9120         (ix86_vector_duplicate_value): Use gen_vec_duplicate.
9121         * config/i386/sse.md (one_cmpl<mode>2): Use CONSTM1_RTX.
9122         * config/ia64/ia64.c (ia64_expand_vecint_compare): Use
9123         gen_const_vec_duplicate.
9124         * config/ia64/vect.md (addv2sf3, subv2sf3): Use CONST1_RTX.
9125         * config/mips/mips.c (mips_gen_const_int_vector): Use
9126         gen_const_vec_duplicate.
9127         (mips_expand_vector_init): Use CONST0_RTX.
9128         * config/powerpcspe/altivec.md (abs<mode>2, nabs<mode>2): Likewise.
9129         (define_split): Use gen_const_vec_duplicate.
9130         * config/rs6000/altivec.md (abs<mode>2, nabs<mode>2): Use CONST0_RTX.
9131         (define_split): Use gen_const_vec_duplicate.
9132         * config/s390/vx-builtins.md (vec_genmask<mode>): Likewise.
9133         (vec_ctd_s64, vec_ctd_u64, vec_ctsl, vec_ctul): Likewise.
9134         * config/spu/spu.c (spu_const): Likewise.
9135
9136 2017-11-01  Richard Sandiford  <richard.sandiford@linaro.org>
9137             Alan Hayward  <alan.hayward@arm.com>
9138             David Sherwood  <david.sherwood@arm.com>
9139
9140         * combine.c (can_change_dest_mode): Reject changes in
9141         REGMODE_NATURAL_SIZE.
9142
9143 2017-10-31  Sandra Loosemore  <sandra@codesourcery.com>
9144
9145         * configure.ac (--enable-libssp): New.
9146         (gcc_cv_libc_provides_ssp): Check for explicit setting before
9147         trying to determine target-specific default.  Adjust indentation.
9148         * configure: Regenerated.
9149         * doc/install.texi (Configuration): Expand --disable-libssp
9150         documentation.
9151
9152 2017-10-31  Daniel Santos  <daniel.santos@pobox.com>
9153
9154         config/i386/i386.c (ix86_expand_epilogue): Correct stack
9155         calculation.
9156
9157 2017-10-31  Martin Jambor  <mjambor@suse.cz>
9158
9159         PR c++/81702
9160         * gimple-fold.c (gimple_get_virt_method_for_vtable): Remove assert.
9161
9162 2017-10-31  David Malcolm  <dmalcolm@redhat.com>
9163
9164         * auto-profile.c (autofdo_source_profile::read): Use
9165         UNKNOWN_LOCATION rather than 0.
9166         * diagnostic-core.h (warning_at_rich_loc): Rename to...
9167         (warning_at): ...this overload.
9168         (warning_at_rich_loc_n): Rename to...
9169         (warning_n): ...this overload.
9170         (error_at_rich_loc): Rename to...
9171         (error_at): ...this overload.
9172         (pedwarn_at_rich_loc): Rename to...
9173         (pedwarn): ...this overload.
9174         (permerror_at_rich_loc): Rename to...
9175         (permerror): ...this overload.
9176         (inform_at_rich_loc): Rename to...
9177         (inform): ...this overload.
9178         * diagnostic.c: (diagnostic_n_impl): Delete location_t-based decl.
9179         (diagnostic_n_impl_richloc): Rename to...
9180         (diagnostic_n_impl): ...this rich_location *-based decl.
9181         (inform_at_rich_loc): Rename to...
9182         (inform): ...this, and add an assertion.
9183         (inform_n): Update for removal of location_t-based diagnostic_n_impl.
9184         (warning_at_rich_loc): Rename to...
9185         (warning_at): ...this, and add an assertion.
9186         (warning_at_rich_loc_n): Rename to...
9187         (warning_n): ...this, and add an assertion.
9188         (warning_n): Update location_t-based implementation for removal of
9189         location_t-based diagnostic_n_impl.
9190         (pedwarn_at_rich_loc): Rename to...
9191         (pedwarn): ...this, and add an assertion.
9192         (permerror_at_rich_loc): Rename to...
9193         (permerror): ...this, and add an assertion.
9194         (error_n): Update for removal of location_t-based diagnostic_n_impl.
9195         (error_at_rich_loc): Rename to...
9196         (error_at): ...this, and add an assertion.
9197         * gcc.c (do_spec_1): Use UNKNOWN_LOCATION rather than 0.
9198         (driver::do_spec_on_infiles): Likewise.
9199         * substring-locations.c (format_warning_va): Update for renaming
9200         of inform_at_rich_loc.
9201
9202 2017-10-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
9203
9204         * builtins.def (DEF_FLOATN_BUILTIN): Change most _Float<N> and
9205         _Float<N>X built-in functions so that the variant without the
9206         "__builtin_" prefix is only enabled for the GNU C and Objective C
9207         languages when they are in non-strict ANSI/ISO mode.
9208         (DEF_EXT_LIB_FLOATN_NX_BUILTINS): Likewise.
9209         * target.def (floatn_builtin_p): Add a target hook to control
9210         whether _Float<N> and _Float<N>X built-in functions without the
9211         "__builtin_" prefix are enabled, and return true for C and
9212         Objective C in the default hook.  Include langhooks.h in
9213         targhooks.c.
9214         * targhooks.h (default_floatn_builtin_p): Likewise.
9215         * targhooks.c (default_floatn_builtin_p): Likewise.
9216         * doc/tm.texi.in (TARGET_FLOATN_BUILTIN_P): Document the
9217         floatn_builtin_p target hook.
9218         * doc/tm.texi (TARGET_FLOATN_BUILTIN_P): Likewise.
9219
9220 2017-10-31  Matthew Fortune  <matthew.fortune@imgtec.com>
9221             Eric Botcazou  <ebotcazou@adacore.com>
9222
9223         PR rtl-optimization/81803
9224         * lra-constraints.c (curr_insn_transform): Also reload the whole
9225         register for a strict subreg no wider than a word if this is for
9226         a WORD_REGISTER_OPERATIONS target.
9227
9228 2017-10-31  Jason Merrill  <jason@redhat.com>
9229
9230         * gdbinit.in: Skip over inlines from timevar.h.
9231
9232 2017-10-31  Martin Liska  <mliska@suse.cz>
9233
9234         * doc/gcov.texi: Document new option.
9235         * gcov.c (print_usage): Likewise print it.
9236         (process_args): Support the argument.
9237         (format_count): New function.
9238         (format_gcov): Use the function.
9239
9240 2017-10-31  Martin Liska  <mliska@suse.cz>
9241
9242         * gcov.c (struct name_map): do not use typedef.
9243         Define operator== and operator<.
9244         (name_search): Remove.
9245         (name_sort): Remove.
9246         (main): Do not allocate names.
9247         (process_file): Add vertical space.
9248         (generate_results): Use std::find.
9249         (release_structures): Do not release memory.
9250         (find_source): Use std::find.
9251
9252 2017-10-31  Martin Liska  <mliska@suse.cz>
9253
9254         * gcov.c (struct line_info): Remove it's typedef.
9255         (line_info::line_info): Add proper ctor.
9256         (line_info::has_block): Do not use a typedef.
9257         (struct source_info): Do not use typedef.
9258         (circuit): Likewise.
9259         (get_cycles_count): Likewise.
9260         (output_intermediate_file): Iterate via vector iterator.
9261         (add_line_counts): Use std::vector methods.
9262         (accumulate_line_counts): Likewise.
9263         (output_lines): Likewise.
9264
9265 2017-10-31  Martin Liska  <mliska@suse.cz>
9266
9267         * gcov.c (struct source_info): Remove typedef.
9268         (source_info::source_info): Add proper ctor.
9269         (accumulate_line_counts): Use struct, not it's typedef.
9270         (output_gcov_file): Likewise.
9271         (output_lines): Likewise.
9272         (main): Do not allocate an array.
9273         (output_intermediate_file): Use size of vector container.
9274         (process_file): Resize the vector.
9275         (generate_results): Do not preallocate, use newly added vector
9276         lines.
9277         (release_structures): Do not release sources.
9278         (find_source): Use vector methods.
9279         (add_line_counts): Do not use typedef.
9280
9281 2017-10-31  Martin Liska  <mliska@suse.cz>
9282
9283         * doc/gcov.texi: Document that.
9284         * gcov.c (add_line_counts): Mark lines with a non-executed
9285         statement.
9286         (output_line_beginning): Handle such lines.
9287         (output_lines): Pass new argument.
9288         (output_intermediate_file): Print it in intermediate format.
9289
9290 2017-10-31  Martin Liska  <mliska@suse.cz>
9291
9292         * color-macros.h: New file.
9293         * diagnostic-color.c: Factor out color related to macros to
9294         color-macros.h.
9295         * doc/gcov.texi: Document -k option.
9296         * gcov.c (INCLUDE_STRING): Include string.h.
9297         (print_usage): Add -k option.
9298         (process_args): Parse it.
9299         (pad_count_string): New function.
9300         (output_line_beginning): Likewise.
9301         (DEFAULT_LINE_START): New macro.
9302         (output_lines): Support color output.
9303
9304 2017-10-31  Martin Liska  <mliska@suse.cz>
9305
9306         PR gcov-profile/82633
9307         * doc/gcov.texi: Document -fkeep-{static,inline}-functions and
9308         their interaction with GCOV infrastructure.
9309         * configure.ac: Add -fkeep-{inline,static}-functions to
9310         coverage_flags.
9311         * configure: Regenerate.
9312
9313 2017-10-31  Uros Bizjak  <ubizjak@gmail.com>
9314
9315         PR target/82772
9316         * config/alpha/sync.md (fetchop_constr) <and>: Change to "rINM".
9317
9318 2017-10-31  Segher Boessenkool  <segher@kernel.crashing.org>
9319
9320         PR target/82674
9321         * config/rs6000/rs6000.md (allocate_stack): Force update interval
9322         into a register if it does not fit into an immediate offset field.
9323
9324 2017-10-31  Olivier Hainque  <hainque@adacore.com>
9325
9326         * gcc/Makefile.in (FLAGS_TO_PASS): Pass libsubdir as well.
9327
9328 2017-10-31  Julia Koval  <julia.koval@intel.com>
9329
9330         * config.gcc: Add gfniintrin.h.
9331         * config/i386/gfniintrin.h: New.
9332         * config/i386/i386-builtin-types.def
9333         (__builtin_ia32_vgf2p8affineinvqb_v64qi,
9334         __builtin_ia32_vgf2p8affineinvqb_v64qi_mask,
9335         __builtin_ia32_vgf2p8affineinvqb_v32qi,
9336         __builtin_ia32_vgf2p8affineinvqb_v32qi_mask,
9337         __builtin_ia32_vgf2p8affineinvqb_v16qi,
9338         __builtin_ia32_vgf2p8affineinvqb_v16qi_mask): New builtins.
9339         * config/i386/i386-builtin.def (V64QI_FTYPE_V64QI_V64QI_INT_V64QI_UDI,
9340         V32QI_FTYPE_V32QI_V32QI_INT_V32QI_USI,
9341         V16QI_FTYPE_V16QI_V16QI_INT_V16QI_UHI,
9342         V64QI_FTYPE_V64QI_V64QI_INT): New types.
9343         * config/i386/i386.c (ix86_expand_args_builtin): Handle new types.
9344         * config/i386/immintrin.h: Include gfniintrin.h.
9345         * config/i386/sse.md (vgf2p8affineinvqb_*) New pattern.
9346
9347 2017-10-30  Eric Botcazou  <ebotcazou@adacore.com>
9348
9349         * gcc.c (HAVE_TARGET_EXECUTABLE_SUFFIX): Remove old kludge.
9350
9351 2017-10-30  Wilco Dijkstra  <wdijkstr@arm.com>
9352
9353         * config/arm/arm.md (ashldi3): Remove shift by 1 expansion.
9354         (arm_ashldi3_1bit): Remove pattern.
9355         (ashrdi3): Remove shift by 1 expansion.
9356         (arm_ashrdi3_1bit): Remove pattern.
9357         (lshrdi3): Remove shift by 1 expansion.
9358         (arm_lshrdi3_1bit): Remove pattern.
9359         * config/arm/arm.c (arm_rtx_costs_internal): Slightly increase
9360         cost of ashldi3 by 1.
9361         * config/arm/neon.md (ashldi3_neon): Remove shift by 1 expansion.
9362         (<shift>di3_neon): Likewise.
9363
9364 2017-10-30  Dominik Infuehr  <dominik.infuehr@theobroma-systems.com>
9365
9366         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov): Rename
9367         both identically named patterns to (*aarch64_simd_mov<VD:mode>)
9368         and (*aarch64_simd_mov<VQ:mode>).
9369         (*aarch64_simd_mov<VD:mode>): Change type attribute to match
9370         pattern alternative.
9371         (*aarch64_simd_mov<VQ:mode>): Re-order and change type
9372         attributes to match pattern alternative.
9373
9374 2017-10-30  Steven Munroe  <munroesj@gcc.gnu.org>
9375
9376         * config.gcc (powerpc*-*-*): Add emmintrin.h.
9377         * config/rs6000/emmintrin.h: New file.
9378         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include emmintrin.h.
9379
9380 2017-10-30  Wilco Dijkstra  <wdijkstr@arm.com>
9381
9382         * config/arm/vfp.md (movdi_vfp): Merge changes from movdi_vfp_cortexa8.
9383         * (movdi_vfp_cortexa8): Remove pattern.
9384
9385 2017-10-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9386
9387         * doc/install.texi (Specific, alpha*-*-*): Remove DEC OSF/1
9388         etc. reference.
9389         (Specific, alpha*-dec-osf5.1): Remove.
9390         (Specific, mips-sgi-irix5): Remove.
9391         (Specific, mips-sgi-irix6): Remove.
9392
9393 2017-10-30  Jakub Jelinek  <jakub@redhat.com>
9394
9395         PR middle-end/22141
9396         * gimple-ssa-store-merging.c (merged_store_group::apply_stores): Fix
9397         arguments to clear_bit_region_be.
9398
9399 2017-10-30  Jim Wilson  <wilson@tuliptree.org>
9400
9401         * gimplify.c: Include memmodel.h.
9402
9403 2017-10-30  Martin Jambor  <mjambor@suse.cz>
9404
9405         * omp-grid.c (grid_attempt_target_gridification): Also insert a
9406         condition whether loop should be executed at all.
9407
9408 2017-10-30  Will Schmidt  <will_schmidt@vnet.ibm.com>
9409
9410         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
9411         gimple folding of vec_madd() intrinsics.
9412         * config/rs6000/altivec.md (mulv8hi3): Rename altivec_vmladduhm to
9413         fmav8hi4.  (altivec_vmladduhm): Rename to fmav8hi4.
9414         * config/rs6000/rs6000-builtin.def: Rename vmladduhm to fmav8hi4
9415
9416 2017-10-30  Richard Biener  <rguenther@suse.de>
9417
9418         PR tree-optimization/82762
9419         Revert
9420         2017-10-23  Richard Biener  <rguenther@suse.de>
9421
9422         PR tree-optimization/82129
9423         Revert
9424         2017-08-01  Richard Biener  <rguenther@suse.de>
9425
9426         PR tree-optimization/81181
9427         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
9428         (compute_antic): ... end of iteration here.
9429
9430 2017-10-30  Joseph Myers  <joseph@codesourcery.com>
9431
9432         * doc/invoke.texi (C Dialect Options): Document -std=c17,
9433         -std=iso9899:2017 and -std=gnu17.
9434         * doc/standards.texi (C Language): Document C17 support.
9435         * doc/cpp.texi (Overview): Mention -std=c17.
9436         (Standard Predefined Macros): Document C11 and C17 values of
9437         __STDC_VERSION__.  Do not refer to C99 support as incomplete.
9438         * doc/extend.texi (Inline): Do not list individual options for
9439         standards newer than C99.
9440         * dwarf2out.c (highest_c_language, gen_compile_unit_die): Handle
9441         "GNU C17".
9442         * config/rl78/rl78.c (rl78_option_override): Handle "GNU C17"
9443         language name.
9444
9445 2017-10-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
9446
9447         * asan.c (asan_finish_file): Align asan globals array by shadow
9448         granularity.
9449
9450 2017-10-30  Jakub Jelinek  <jakub@redhat.com>
9451
9452         PR middle-end/22141
9453         * gimple-ssa-store-merging.c: Include rtl.h and expr.h.
9454         (struct store_immediate_info): Add bitregion_start and bitregion_end
9455         fields.
9456         (store_immediate_info::store_immediate_info): Add brs and bre
9457         arguments and initialize bitregion_{start,end} from those.
9458         (struct merged_store_group): Add bitregion_start, bitregion_end,
9459         align_base and mask fields.  Drop unnecessary struct keyword from
9460         struct store_immediate_info.  Add do_merge method.
9461         (clear_bit_region_be): Use memset instead of loop storing zeros.
9462         (merged_store_group::do_merge): New method.
9463         (merged_store_group::merge_into): Use do_merge.  Allow gaps in between
9464         stores as long as the surrounding bitregions have no gaps.
9465         (merged_store_group::merge_overlapping): Use do_merge.
9466         (merged_store_group::apply_stores): Test that bitregion_{start,end}
9467         is byte aligned, rather than requiring that start and width are
9468         byte aligned.  Drop unnecessary struct keyword from
9469         struct store_immediate_info.  Allocate and populate also mask array.
9470         Make start of the arrays relative to bitregion_start rather than
9471         start and size them according to bitregion_{end,start} difference.
9472         (struct imm_store_chain_info): Drop unnecessary struct keyword from
9473         struct store_immediate_info.
9474         (pass_store_merging::gate): Punt if BITS_PER_UNIT or CHAR_BIT is not 8.
9475         (pass_store_merging::terminate_all_aliasing_chains): Drop unnecessary
9476         struct keyword from struct store_immediate_info.
9477         (imm_store_chain_info::coalesce_immediate_stores): Allow gaps in
9478         between stores as long as the surrounding bitregions have no gaps.
9479         Formatting fixes.
9480         (struct split_store): Add orig non-static data member.
9481         (split_store::split_store): Initialize orig to false.
9482         (find_constituent_stmts): Return store_immediate_info *, non-NULL
9483         if there is exactly a single original stmt.  Change stmts argument
9484         to pointer from reference, if NULL, don't push anything to it.  Add
9485         first argument, use it to optimize skipping over orig stmts that
9486         are known to be before bitpos already.  Simplify.
9487         (split_group): Return unsigned int count how many stores are or
9488         would be needed rather than a bool.  Add allow_unaligned argument.
9489         Change split_stores argument from reference to pointer, if NULL,
9490         only do a dry run computing how many stores would be produced.
9491         Rewritten algorithm to use both alignment and misalign if
9492         !allow_unaligned and handle bitfield stores with gaps.
9493         (imm_store_chain_info::output_merged_store): Set start_byte_pos
9494         from bitregion_start instead of start.  Compute allow_unaligned
9495         here, if true, do 2 split_group dry runs to compute which one
9496         produces fewer stores and prefer aligned if equal.  Punt if
9497         new count is bigger or equal than original before emitting any
9498         statements, rather than during that.  Remove no longer needed
9499         new_ssa_names tracking.  Replace num_stmts with
9500         split_stores.length ().  Use 32-bit stack allocated entries
9501         in split_stores auto_vec.  Try to reuse original store lhs/rhs1
9502         if possible.  Handle bitfields with gaps.
9503         (pass_store_merging::execute): Ignore bitsize == 0 stores.
9504         Compute bitregion_{start,end} for the stores and construct
9505         store_immediate_info with that.  Formatting fixes.
9506
9507 2017-10-30  Uros Bizjak  <ubizjak@gmail.com>
9508
9509         PR target/82725
9510         * config/i386/i386.c (legitimate_pic_address_disp_p): Allow
9511         UNSPEC_DTPOFF and UNSPEC_NTPOFF with SImode immediate offset.
9512
9513 2017-10-29  Jim Wilson  <wilson@tuliptree.org>
9514
9515         * gimplify.c: Include tm_p.h.
9516
9517         * common.opt (gcoff): Re-add as ignored option.
9518         (gcoff1, gcoff2, gcoff3): Likewise.
9519
9520         * Makefile.in (OBJS): Delete sdbout.o.
9521         (GTFILES): Delete $(srcdir)/sdbout.c.
9522         * debug.h: Delete sdb_debug_hooks.
9523         * final.c: Delete sdbout.h include.
9524         (final_scan_insn): Delete SDB_DEBUG check.
9525         (rest_of_clean_state): Likewise.
9526         * output.h: Delete sdb_begin_function_line.
9527         * sdbout.c: Delete.
9528         * sdbout.h: Delete.
9529         * toplev.c: Delete sdbout.h include.
9530         (process_options): Delete SDB_DEBUG check.
9531         * tree-core.h (tree_type_common): Delete pointer field of
9532         tree_type_symtab.
9533         * tree.c (copy_node): Clear TYPE_SYMTAB_DIE instead of
9534         TYPE_SYMTAB_POINTER.
9535         * tree.h (TYPE_SYMTAB_POINTER): Delete.
9536         (TYPE_SYMTAB_IS_POINTER): Delete.
9537         (TYPE_SYMTAB_IS_DIE): Renumber.
9538         * xcoffout.c: Refer to former sdbout.c file.
9539         (xcoffout_begin_prologue): Use past tense for sdbout.c reference.
9540
9541         * doc/install.texi (--with-stabs): Delete COFF and ECOFF info.
9542         * doc/invoke.texi (SEEALSO): Delete adb and sdb references.
9543         (Debugging Options): Delete -gcoff.
9544         (-gstabs): Delete SDB reference.
9545         (-gcoff): Delete.
9546         (-gcoff@var{level}): Delete.
9547         * doc/passes.texi (Debugging information output): Delete SDB and
9548         sdbout.c references.
9549         * doc/tm.texi: Regenerate.
9550         * doc/tm.texi.in (DWARF_CIE_DATA_ALIGNMENT): Delete SDB from xref.
9551         (SDB and DWARF): Change node name to DWARF and delete SDB and COFF
9552         references.
9553         (DEBUGGER_AUTO_OFFSET): Delete COFF and SDB references.
9554         (PREFERRED_DEBUGGING_TYPE): Delete SDB_DEBUG and -gcoff references.
9555         (SDB_DEBUGGING_INFO): Delete.
9556         (PUT_SDB_@dots{}, SDB_DELIM, SDB_ALLOW_UNKNOWN_REFERENCES)
9557         SDB_ALLOW_FORWARD_REFERENCES, SDB_OUTPUT_SOURCE_LINE): Delete.
9558         * target.def (output_source_filename): Delete COFF reference.
9559
9560         * common.opt (gcoff): Delete.
9561         (gxcoff+): Update Negative chain.
9562         * defaults.h: Delete all references to SDB_DEBUGGING_INFO and
9563         SDB_DEBUG.
9564         * dwarf2out.c (gen_array_type_die): Change SDB to debuggers.
9565         * flag-types.h (enum debug_info_type): Delete SDB_DEBUG.
9566         * function.c (number_blocks): Delete SDB_DEBUGGING_INFO, SDB_DEBUG,
9567         and SDB references.
9568         (expand_function_start): Change sdb reference to past tense.
9569         (expand_function_end): Change sdb reference to past tense.
9570         * gcc.c (cpp_unique_options): Delete gcoff3 reference.
9571         * opts.c (debug_type_names): Delete coff entry.
9572         (common_handle_option): Delete OPT_gcoff case.
9573         * system.h (SDB_DEBUG, SDB_DEBUGGING_INFO): Poison.
9574
9575         * config/dbxcoff.h (PREFERRED_DEBUGGING_TYPE): Set to DBX_DEBUG.
9576         * config/cris/cris.h: Delete SDB reference in comment.
9577         * config/i386/cygming.h: Don't define SDB_DEBUGGING_INFO.
9578         (ASM_DECLARE_FUNCTION_NAME): Delete SDB reference from comment.
9579         * config/i386/gas.h: Don't define SDB_DEBUGGING_INFO.
9580         * config/i386/i386.c (svr4_dbx_register_map): Change SDB references
9581         to past tense.
9582         (ix86_expand_prologue): Likewise.
9583         * config/i386/winnt.c (i386_pe_start_function): Don't check SDB_DEBUG.
9584         * config/ia64/ia64.h: Likewise.
9585         * config/m68k/m68kelf.h (DBX_REGISTER_NUMBER): Delete SDB reference.
9586         * config/mips/mips.h (SUBTARGET_ASM_DEBUGGING_SPEC): Delete gcoff*
9587         support.
9588         * config/mmix/mmix.h: Likewise.
9589         * config/nds32/nds32.c: Likewise.
9590         * config/stormy/storym16.h: Likewise.
9591         * config/visium/visium.h: Likewise.
9592         * config/vx-common.h (SDB_DEBUGGING_INFO): Delete undef.
9593
9594 2017-10-28  Sandra Loosemore  <sandra@codesourcery.com>
9595
9596         * config/nios2/nios2.h (FRAME_GROWS_DOWNWARD): Define to 1.
9597         * config/nios2/nios2.c (nios2_initial_elimination_offset):  Make
9598         FRAME_POINTER_REGNUM point at high end of local var area.
9599
9600 2017-10-27  Eric Botcazou  <ebotcazou@adacore.com>
9601
9602         * bb-reorder.c (find_traces_1_round): Fix off-by-one index.
9603         Move comment around.  Do not reset best_edge for a copiable
9604         destination if the copy would cause a partition change.
9605         (better_edge_p): Remove redundant check.
9606
9607 2017-10-27  Uros Bizjak  <ubizjak@gmail.com>
9608
9609         * config/i386/i386-protos.h (ix86_fp_compare_mode): Remove prototype.
9610
9611 2017-10-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
9612
9613         * builtins.c (CASE_MATHFN_FLOATN): New helper macro to add cases
9614         for math functions that have _Float<N> and _Float<N>X variants.
9615         (mathfn_built_in_2): Add support for math functions that have
9616         _Float<N> and _Float<N>X variants.
9617         (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro.
9618         (expand_builtin_mathfn_ternary): Add support for fma with
9619         _Float<N> and _Float<N>X variants.
9620         (expand_builtin): Likewise.
9621         (fold_builtin_3): Likewise.
9622         * builtins.def (DEF_EXT_LIB_FLOATN_NX_BUILTINS): New macro to
9623         create math function _Float<N> and _Float<N>X variants as external
9624         library builtins.
9625         (BUILT_IN_COPYSIGN _Float<N> and _Float<N>X variants) Use
9626         DEF_EXT_LIB_FLOATN_NX_BUILTINS to make built-in functions using
9627         the __builtin_ prefix and if not strict ansi, without the prefix.
9628         (BUILT_IN_FABS _Float<N> and _Float<N>X variants): Likewise.
9629         (BUILT_IN_FMA _Float<N> and _Float<N>X variants): Likewise.
9630         (BUILT_IN_FMAX _Float<N> and _Float<N>X variants): Likewise.
9631         (BUILT_IN_FMIN _Float<N> and _Float<N>X variants): Likewise.
9632         (BUILT_IN_NAN _Float<N> and _Float<N>X variants): Likewise.
9633         (BUILT_IN_SQRT _Float<N> and _Float<N>X variants): Likewise.
9634         * builtin-types.def (BT_FN_FLOAT16_FLOAT16_FLOAT16_FLOAT16): New
9635         function signatures for fma _Float<N> and _Float<N>X variants.
9636         (BT_FN_FLOAT32_FLOAT32_FLOAT32_FLOAT32): Likewise.
9637         (BT_FN_FLOAT64_FLOAT64_FLOAT64_FLOAT64): Likewise.
9638         (BT_FN_FLOAT128_FLOAT128_FLOAT128_FLOAT128): Likewise.
9639         (BT_FN_FLOAT32X_FLOAT32X_FLOAT32X_FLOAT32X): Likewise.
9640         (BT_FN_FLOAT64X_FLOAT64X_FLOAT64X_FLOAT64X): Likewise.
9641         (BT_FN_FLOAT128X_FLOAT128X_FLOAT128X_FLOAT128X): Likewise.
9642         * gencfn-macros.c (print_case_cfn): Add support for math functions
9643         that have _Float<N> and _Float<N>X variants.
9644         (print_define_operator_list): Likewise.
9645         (fltfn_suffixes): Likewise.
9646         (main): Likewise.
9647         * internal-fn.def (DEF_INTERNAL_FLT_FLOATN_FN): New helper macro
9648         for math functions that have _Float<N> and _Float<N>X variants.
9649         (SQRT): Add support for sqrt, copysign, fmin and fmax _Float<N>
9650         and _Float<N>X variants.
9651         (COPYSIGN): Likewise.
9652         (FMIN): Likewise.
9653         (FMAX): Likewise.
9654         * fold-const.c (tree_call_nonnegative_warnv_p): Add support for
9655         copysign, fma, fmax, fmin, and sqrt _Float<N> and _Float<N>X
9656         variants.
9657         (integer_valued_read_call_p): Likewise.
9658         * fold-const-call.c (fold_const_call_ss): Likewise.
9659         (fold_const_call_sss): Add support for copysign, fmin, and fmax
9660         _Float<N> and _Float<N>X variants.
9661         (fold_const_call_ssss): Add support for fma _Float<N> and
9662         _Float<N>X variants.
9663         * gimple-ssa-backprop.c (backprop::process_builtin_call_use): Add
9664         support for copysign and fma _Float<N> and _Float<N>X variants.
9665         (backprop::process_builtin_call_use): Likewise.
9666         * tree-call-cdce.c (can_test_argument_range); Add support for
9667         sqrt _Float<N> and _Float<N>X variants.
9668         (edom_only_function): Likewise.
9669         (get_no_error_domain): Likewise.
9670         * tree-ssa-math-opts.c (internal_fn_reciprocal): Likewise.
9671         * tree-ssa-reassoc.c (attempt_builtin_copysign): Add support for
9672         copysign _Float<N> and _Float<N>X variants.
9673         * config/rs6000/rs6000-builtin.def (SQRTF128): Delete, this is now
9674         handled by machine independent code.
9675         (FMAF128): Likewise.
9676         * doc/cpp.texi (Common Predefined Macros): Document defining
9677         __FP_FAST_FMAF<N> and __FP_FAST_FMAF<N>X if the backend supports
9678         fma _Float<N> and _Float<N>X variants.
9679
9680 2017-10-27  Uros Bizjak  <ubizjak@gmail.com>
9681
9682         PR target/82692
9683         * config/i386/i386-modes.def (CCFPU): Remove definition.
9684         * config/i386/i386.c (put_condition_mode): Remove CCFPU mode handling.
9685         (ix86_cc_modes_compatible): Ditto.
9686         (ix86_expand_carry_flag_compare): Ditto.
9687         (ix86_expand_int_movcc): Ditto.
9688         (ix86_expand_int_addcc): Ditto.
9689         (ix86_reverse_condition): Ditto.
9690         (ix86_unordered_fp_compare): Rename from ix86_fp_compare_mode.
9691         Return true/false for unordered/ordered fp comparisons.
9692         (ix86_cc_mode): Always return CCFPmode for float mode comparisons.
9693         (ix86_prepare_fp_compare_args): Update for rename.
9694         (ix86_expand_fp_compare): Update for rename.  Generate unordered
9695         compare RTXes wrapped with UNSPEC_NOTRAP unspec.
9696         (ix86_expand_sse_compare_and_jump): Ditto.
9697         * config/i386/predicates.md (fcmov_comparison_operator):
9698         Remove CCFPU mode handling.
9699         (ix86_comparison_operator): Ditto.
9700         (ix86_carry_flag_operator): Ditto.
9701         * config/i386/i386.md (UNSPEC_NOTRAP): New unspec.
9702         (*cmpu<mode>_i387): Wrap compare RTX with UNSPEC_NOTRAP unspec.
9703         (*cmpu<mode>_cc_i387): Ditto.
9704         (FPCMP): Remove mode iterator.
9705         (unord): Remove mode attribute.
9706         (unord_subst): New define_subst transformation
9707         (unord): New define_subst attribute.
9708         (unordered): Ditto.
9709         (*cmpi<unord><MODEF:mode>): Rewrite using unord_subst transformation.
9710         (*cmpi<unord>xf_i387): Ditto.
9711         * config/i386/sse.md (<sse>_<unord>comi<round_saeonly_name>): Merge
9712         from <sse>_comi<round_saeonly_name> and <sse>_ucomi<round_saeonly_name>
9713         using unord_subst transformation.
9714         * config/i386/subst.md (SUBST_A): Remove CCFP and CCFPU modes.
9715         (round_saeonly): Also handle CCFP mode.
9716         * reg-stack.c (subst_stack_regs_pat): Handle UNSPEC_NOTRAP unspec.
9717         Remove UNSPEC_SAHF unspec handling.
9718
9719 2017-10-27  Jan Hubicka  <hubicka@ucw.cz>
9720
9721         * x86-tune.def (X86_TUNE_INTER_UNIT_MOVES_TO_VEC): Disable for Zen.
9722
9723 2017-10-27  Jeff Law  <law@redhat.com>
9724
9725         * gimple-ssa-sprintf.c: Include domwalk.h.
9726         (class sprintf_dom_walker): New class, derived from dom_walker.
9727         (sprintf_dom_walker::before_dom_children): New function.
9728         (struct call_info): Moved into sprintf_dom_walker class
9729         (compute_formath_length, handle_gimple_call): Likewise.
9730         (sprintf_length::execute): Call the dominator walker rather
9731         than walking the statements.
9732
9733         * tree-vrp.c (check_all_array_refs): Do not use wi->info to smuggle
9734         gimple statement locations.
9735         (check_array_bounds): Corresponding changes.  Get the statement's
9736         location directly from wi->stmt.
9737
9738 2017-10-27  Palmer Dabbelt  <palmer@dabbelt.com>
9739
9740         PR target/82717
9741         * doc/invoke.texi (RISC-V) <-mabi>: Correct and improve.
9742
9743 2017-10-27  Jan Hubicka  <hubicka@ucw.cz>
9744
9745         * config/i386/x86-tune.def (X86_TUNE_PARTIAL_REG_DEPENDENCY,
9746         X86_TUNE_MOVX): Disable for Haswell and newer CPUs.
9747
9748 2017-10-27  Jakub Jelinek  <jakub@redhat.com>
9749
9750         PR target/82703
9751         * config/i386/i386-protos.h (maybe_get_pool_constant): Removed.
9752         * config/i386/i386.c (maybe_get_pool_constant): Removed.
9753         (ix86_split_to_parts): Use avoid_constant_pool_reference instead of
9754         maybe_get_pool_constant.
9755         * config/i386/predicates.md (zero_extended_scalar_load_operand):
9756         Likewise.
9757
9758 2017-10-27  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9759
9760         * doc/install.texi (Specific, i?86-*-solaris2.10): Simplify gas
9761         2.26 caveat.  Update gas and gld versions.
9762         (Specific, *-*-solaris2*): Update binutils version.  Remove caveat
9763         reference.
9764
9765 2017-10-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
9766
9767         * cgraph.h (set_malloc_flag): Declare.
9768         * cgraph.c (set_malloc_flag_1): New function.
9769         (set_malloc_flag): Likewise.
9770         * ipa-fnsummary.h (ipa_call_summary): Add new field is_return_callee.
9771         * ipa-fnsummary.c (ipa_call_summary::reset): Set is_return_callee to
9772         false.
9773         (read_ipa_call_summary): Add support for reading is_return_callee.
9774         (write_ipa_call_summary): Stream is_return_callee.
9775         * ipa-inline.c (ipa_inline): Remove call to ipa_free_fn_summary.
9776         * ipa-pure-const.c: Add headers ssa.h, alloc-pool.h, symbol-summary.h,
9777         ipa-prop.h, ipa-fnsummary.h.
9778         (pure_const_names): Change to static.
9779         (malloc_state_e): Define.
9780         (malloc_state_names): Define.
9781         (funct_state_d): Add field malloc_state.
9782         (varying_state): Set malloc_state to STATE_MALLOC_BOTTOM.
9783         (check_retval_uses): New function.
9784         (malloc_candidate_p): Likewise.
9785         (analyze_function): Add support for malloc attribute.
9786         (pure_const_write_summary): Stream malloc_state.
9787         (pure_const_read_summary): Add support for reading malloc_state.
9788         (dump_malloc_lattice): New function.
9789         (propagate_malloc): New function.
9790         (warn_function_malloc): New function.
9791         (ipa_pure_const::execute): Call propagate_malloc and
9792         ipa_free_fn_summary.
9793         (pass_local_pure_const::execute): Add support for malloc attribute.
9794         * ssa-iterators.h (RETURN_FROM_IMM_USE_STMT): New macro.
9795         * doc/invoke.texi: Document Wsuggest-attribute=malloc.
9796
9797 2017-10-27  Martin Liska  <mliska@suse.cz>
9798
9799         PR gcov-profile/82457
9800         * doc/invoke.texi: Document that one needs a non-strict ISO mode
9801         for fork-like functions to be properly instrumented.
9802
9803 2017-10-27  Richard Biener  <rguenther@suse.de>
9804
9805         PR middle-end/81659
9806         * tree-eh.c (pass_lower_eh_dispatch::execute): Free dominator
9807         info when we redirected EH.
9808
9809 2017-10-26  Michael Collison  <michael.collison@arm.com>
9810
9811         * config/aarch64/aarch64.md(<optab>_trunc><vf><GPI:mode>2):
9812         New pattern.
9813         (<optab>_trunchf<GPI:mode>2: New pattern.
9814         (<optab>_trunc<vgp><GPI:mode>2: New pattern.
9815         * config/aarch64/iterators.md (wv): New mode attribute.
9816         (vf, VF): New mode attributes.
9817         (vgp, VGP): New mode attributes.
9818         (s): Update attribute with SImode and DImode prefixes.
9819
9820 2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>
9821
9822         * config/nios2/constraints.md ("S"): Match r0rel_constant_p too.
9823         * config/nios2/nios2-protos.h (r0rel_constant_p): Declare.
9824         * config/nios2/nios2.c: (nios2_r0rel_sec_regex): New.
9825         (nios2_option_overide): Initialize it.  Don't allow R0-relative
9826         addressing with PIC.
9827         (nios2_rtx_costs): Handle r0rel_constant_p like gprel_constant_p.
9828         (nios2_symbolic_constant_p): Likewise.
9829         (nios2_legitimate_address_p): Likewise.
9830         (nios2_r0rel_section_name_p): New.
9831         (nios2_symbol_ref_in_r0rel_data_p): New.
9832         (nios2_emit_move_sequence): Handle r0rel_constant_p.
9833         (r0rel_constant_p): New.
9834         (nios2_print_operand_address): Handle r0rel_constant_p.
9835         (nios2_cdx_narrow_form_p): Likewise.
9836         * config/nios2/nios2.opt (mr0rel-sec=): New option.
9837         * doc/invoke.texi (Option Summary): Add -mr0rel-sec.
9838         (Nios II Options): Document -mr0rel-sec.
9839
9840 2017-10-26  Sandra Loosemore  <sandra@codesourcery.com>
9841
9842         * config/nios2/nios2.c: Include xregex.h.
9843         (nios2_gprel_sec_regex): New.
9844         (nios2_option_overide): Initialize it.  Don't allow GP-relative
9845         addressing with PIC.
9846         (nios2_small_section_name_p): Check for regex match.
9847         * config/nios2/nios2.opt (mgprel-sec=): New option.
9848         * doc/invoke.texi (Option Summary): Add -mgprel-sec.
9849         (Nios II Options): Document -mgprel-sec.
9850
9851 2017-10-26  Jim Wilson  <wilson@tuliptree.org>
9852
9853         * doc/invoke.texi (-fdebug-prefix-map): Expand documentation.
9854
9855 2017-10-26  Tom de Vries  <tom@codesourcery.com>
9856
9857         PR tree-optimization/82707
9858         * gimple.c (gimple_copy): Fix unsharing of
9859         GIMPLE_OMP_{SINGLE,TARGET,TEAMS}.
9860
9861 2017-10-26  Olga Makhotina  <olga.makhotina@intel.com>
9862
9863         * config/i386/avx512fintrin.h (_mm512_cmpeq_pd_mask,
9864         _mm512_cmple_pd_mask, _mm512_cmplt_pd_mask,
9865         _mm512_cmpneq_pd_mask, _mm512_cmpnle_pd_mask,
9866         _mm512_cmpnlt_pd_mask, _mm512_cmpord_pd_mask,
9867         _mm512_cmpunord_pd_mask, _mm512_mask_cmpeq_pd_mask,
9868         _mm512_mask_cmple_pd_mask, _mm512_mask_cmplt_pd_mask,
9869         _mm512_mask_cmpneq_pd_mask, _mm512_mask_cmpnle_pd_mask,
9870         _mm512_mask_cmpnlt_pd_mask, _mm512_mask_cmpord_pd_mask,
9871         _mm512_mask_cmpunord_pd_mask, _mm512_cmpeq_ps_mask,
9872         _mm512_cmple_ps_mask, _mm512_cmplt_ps_mask,
9873         _mm512_cmpneq_ps_mask, _mm512_cmpnle_ps_mask,
9874         _mm512_cmpnlt_ps_mask, _mm512_cmpord_ps_mask,
9875         _mm512_cmpunord_ps_mask, _mm512_mask_cmpeq_ps_mask,
9876         _mm512_mask_cmple_ps_mask, _mm512_mask_cmplt_ps_mask,
9877         _mm512_mask_cmpneq_ps_mask, _mm512_mask_cmpnle_ps_mask,
9878         _mm512_mask_cmpnlt_ps_mask, _mm512_mask_cmpord_ps_mask,
9879         _mm512_mask_cmpunord_ps_mask): New intrinsics.
9880
9881 2017-10-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
9882
9883         * config/rs6000/aix.h (TARGET_IEEEQUAD_DEFAULT): Set long double
9884         default to IBM.
9885         * config/rs6000/darwin.h (TARGET_IEEEQUAD_DEFAULT): Likewise.
9886         * config/rs6000/rs6000.opt (-mabi=ieeelongdouble): Move the
9887         warning to rs6000.c.  Remove the Undocumented flag, since it has
9888         been documented.
9889         (-mabi=ibmlongdouble): Likewise.
9890         * config/rs6000/rs6000.c (TARGET_IEEEQUAD_DEFAULT): If it is not
9891         already set, set the default format for long double.
9892         (rs6000_debug_reg_global): Print whether long double is IBM or
9893         IEEE.
9894         (rs6000_option_override_internal): Rework setting long double
9895         format.  Only warn if the user is changing the long double default
9896         and they did not use -Wno-psabi.
9897         * doc/invoke.texi (PowerPC options): Update the documentation for
9898         -mabi=ieeelongdouble and -mabi=ibmlongdouble.
9899
9900 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
9901             Alan Hayward  <alan.hayward@arm.com>
9902             David Sherwood  <david.sherwood@arm.com>
9903
9904         * rtl.h (wider_subreg_mode): New function.
9905         * ira.h (ira_sort_regnos_for_alter_reg): Take a machine_mode *
9906         rather than an unsigned int *.
9907         * ira-color.c (regno_max_ref_width): Replace with...
9908         (regno_max_ref_mode): ...this new variable.
9909         (coalesced_pseudo_reg_slot_compare): Update accordingly.
9910         Use wider_subreg_mode.
9911         (ira_sort_regnos_for_alter_reg): Likewise.  Take a machine_mode *
9912         rather than an unsigned int *.
9913         * lra-constraints.c (uses_hard_regs_p): Use wider_subreg_mode.
9914         (process_alt_operands): Likewise.
9915         (invariant_p): Likewise.
9916         * lra-spills.c (assign_mem_slot): Likewise.
9917         (add_pseudo_to_slot): Likewise.
9918         * lra.c (collect_non_operand_hard_regs): Likewise.
9919         (add_regs_to_insn_regno_info): Likewise.
9920         * reload1.c (regno_max_ref_width): Replace with...
9921         (regno_max_ref_mode): ...this new variable.
9922         (reload): Update accordingly.  Update call to
9923         ira_sort_regnos_for_alter_reg.
9924         (alter_reg): Update to use regno_max_ref_mode.  Call wider_subreg_mode.
9925         (init_eliminable_invariants): Update to use regno_max_ref_mode.
9926         (scan_paradoxical_subregs): Likewise.
9927
9928 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
9929
9930         * config/aarch64/aarch64.h (EXIT_IGNORE_STACK): Set if alloca is used.
9931         (aarch64_frame): Add emit_frame_chain boolean.
9932         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
9933         Move eh_return case to aarch64_layout_frame.
9934         (aarch64_layout_frame): Initialize emit_frame_chain.
9935         (aarch64_expand_prologue): Use emit_frame_chain.
9936
9937 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
9938
9939         * config/aarch64/aarch64.c (aarch64_layout_frame):
9940         Ensure LR is always stored at the bottom of the callee-saves.
9941         Remove rarely used frame layout which saves callee-saves at top of
9942         frame, so the store of LR can be used as a valid probe in all cases.
9943
9944 2017-10-26  Wilco Dijkstra  <wdijkstr@arm.com>
9945
9946         * config/aarch64/aarch64.c (aarch64_legitimize_address_displacement):
9947         Improve unaligned TImode/TFmode base/offset split.
9948
9949 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
9950             Alan Hayward  <alan.hayward@arm.com>
9951             David Sherwood  <david.sherwood@arm.com>
9952
9953         * caller-save.c (mark_referenced_regs):  Use read_modify_subreg_p.
9954         * combine.c (find_single_use_1): Likewise.
9955         (expand_field_assignment): Likewise.
9956         (move_deaths): Likewise.
9957         * lra-constraints.c (simplify_operand_subreg): Likewise.
9958         (curr_insn_transform): Likewise.
9959         * lra.c (collect_non_operand_hard_regs): Likewise.
9960         (add_regs_to_insn_regno_info): Likewise.
9961         * rtlanal.c (reg_referenced_p): Likewise.
9962         (covers_regno_no_parallel_p): Likewise.
9963
9964 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
9965
9966         * wide-int-print.cc (print_hex): Loop based on extract_uhwi.
9967         Don't print any bits outside the precision of the value.
9968         * wide-int.cc (test_printing): Add some new tests.
9969
9970 2017-10-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
9971
9972         * configure.ac (gcc_cv_as_ix86_xbrace_comment): Check if assembler
9973         supports -xbrace_comment option.
9974         * configure: Regenerate.
9975         * config.in: Regenerate.
9976         * config/i386/sol2.h (ASM_XBRACE_COMMENT_SPEC): Define.
9977         (ASM_CPU_SPEC): Use it.
9978
9979 2017-10-26  Richard Sandiford  <richard.sandiford@linaro.org>
9980
9981         * target.def (static_rtx_alignment): New hook.
9982         * targhooks.h (default_static_rtx_alignment): Declare.
9983         * targhooks.c (default_static_rtx_alignment): New function.
9984         * doc/tm.texi.in (TARGET_STATIC_RTX_ALIGNMENT): New hook.
9985         * doc/tm.texi: Regenerate.
9986         * varasm.c (force_const_mem): Use targetm.static_rtx_alignment
9987         instead of targetm.constant_alignment.  Remove call to
9988         set_mem_attributes.
9989         * config/cris/cris.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
9990         (cris_preferred_mininum_alignment): New function, split out from...
9991         (cris_constant_alignment): ...here.
9992         (cris_static_rtx_alignment): New function.
9993         * config/i386/i386.c (ix86_static_rtx_alignment): New function,
9994         split out from...
9995         (ix86_constant_alignment): ...here.
9996         (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
9997         * config/mmix/mmix.c (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
9998         (mmix_static_rtx_alignment): New function.
9999         * config/spu/spu.c (spu_static_rtx_alignment): New function.
10000         (TARGET_STATIC_RTX_ALIGNMENT): Redefine.
10001
10002 2017-10-26  Tamar Christina  <tamar.christina@arm.com>
10003
10004         PR target/81800
10005         * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2):
10006         Add flag_trapping_math and flag_fp_int_builtin_inexact.
10007
10008 2017-10-25  Palmer Dabbelt  <palmer@dabbelt.com>
10009
10010         * config/riscv/riscv.md (ZERO_EXTEND_LOAD): Define.
10011         * config/riscv/pic.md (local_pic_load): Rename to local_pic_load_s,
10012         mark as a sign-extending load.
10013         (local_pic_load_u): Define.
10014
10015 2017-10-25  Eric Botcazou  <ebotcazou@adacore.com>
10016
10017         PR middle-end/82062
10018         * fold-const.c (operand_equal_for_comparison_p): Also return true
10019         if ARG0 is a simple variant of ARG1 with narrower precision.
10020         (fold_ternary_loc): Always pass unstripped operands to the predicate.
10021
10022 2017-10-25  Jan Hubicka  <hubicka@ucw.cz>
10023
10024         * i386.c (ix86_builtin_vectorization_cost): Compute scatter/gather
10025         cost correctly.
10026         * i386.h (processor_costs): Add gather_static, gather_per_elt,
10027         scatter_static, scatter_per_elt.
10028         * x86-tune-costs.h: Add new cost entries.
10029
10030 2017-10-25  Richard Biener  <rguenther@suse.de>
10031
10032         * tree-ssa-sccvn.h (vn_eliminate): Declare.
10033         * tree-ssa-pre.c (class eliminate_dom_walker, eliminate,
10034         class pass_fre): Move to ...
10035         * tree-ssa-sccvn.c (class eliminate_dom_walker, vn_eliminate,
10036         class pass_fre): ... here and adjust for statistics.
10037
10038 2017-10-25  Jakub Jelinek  <jakub@redhat.com>
10039
10040         PR libstdc++/81706
10041         * attribs.c (attribute_value_equal): Use omp_declare_simd_clauses_equal
10042         for comparison of OMP_CLAUSEs regardless of flag_openmp{,_simd}.
10043         (duplicate_one_attribute, copy_attributes_to_builtin): New functions.
10044         * attribs.h (duplicate_one_attribute, copy_attributes_to_builtin): New
10045         declarations.
10046
10047 2017-10-25  Richard Biener  <rguenther@suse.de>
10048
10049         * tree-ssa-pre.c (need_eh_cleanup, need_ab_cleanup, el_to_remove,
10050         el_to_fixup, el_todo, el_avail, el_avail_stack, eliminate_avail,
10051         eliminate_push_avail, eliminate_insert): Move inside...
10052         (class eliminate_dom_walker): ... this class in preparation
10053         of move.
10054         (fini_eliminate): Remove by merging with ...
10055         (eliminate): ... this function.  Adjust for class changes.
10056         (pass_pre::execute): Remove fini_eliminate call.
10057         (pass_fre::execute): Likewise.
10058
10059 2017-10-24  Jakub Jelinek  <jakub@redhat.com>
10060
10061         PR target/82460
10062         * config/i386/sse.md (UNSPEC_VPERMI2, UNSPEC_VPERMI2_MASK): Remove.
10063         (VPERMI2, VPERMI2I): New mode iterators.
10064         (<avx512>_vpermi2var<mode>3_maskz): Remove 3 define_expand patterns.
10065         (<avx512>_vpermi2var<mode>3<sd_maskz_name>): Remove 3 define_insn
10066         patterns.
10067         (<avx512>_vpermi2var<mode>3_mask): New define_expand using VPERMI2
10068         mode iterator.  Remove 3 old define_insn patterns.
10069         (*<avx512>_vpermi2var<mode>3_mask): 2 new define_insn patterns.
10070         (<avx512>_vpermt2var<mode>3_maskz): Adjust 1 define_expand to use
10071         VPERMI2 mode iterator, remove the other two expanders.
10072         (<avx512>_vpermt2var<mode>3<sd_maskz_name>): Adjust 1 define_insn
10073         to use VPERMI2 mode iterator, add another alternative for vpermi2*
10074         instructions, remove the other two patterns.
10075         (<avx512>_vpermt2var<mode>3_mask): Adjust 1 define_insn to use VPERMI2
10076         mode iterator, remove the other two patterns.
10077         * config/i386/i386.c (ix86_expand_vec_perm_vpermi2): Renamed to ...
10078         (ix86_expand_vec_perm_vpermt2): ... this.  Swap mask and op0
10079         arguments, use gen_*vpermt2* expanders instead of gen_*vpermi2*
10080         and adjust argument order accordingly.
10081         (ix86_expand_vec_perm): Adjust caller.
10082         (expand_vec_perm_1): Likewise.
10083         (expand_vec_perm_vpermi2_vpshub2): Rename to ...
10084         (expand_vec_perm_vpermt2_vpshub2): ... this.
10085         (ix86_expand_vec_perm_const_1): Adjust caller.
10086         (ix86_vectorize_vec_perm_const_ok): Adjust comments.
10087
10088         PR target/82370
10089         * config/i386/sse.md (VIMAX_AVX2): Remove V4TImode.
10090         (VIMAX_AVX2_AVX512BW, VIMAX_AVX512VL): New mode iterators.
10091         (vec_shl_<mode>): Remove unused expander.
10092         (avx512bw_<shift_insn><mode>3): New define_insn.
10093         (<sse2_avx2>_ashl<mode>3, <sse2_avx2>_lshr<mode>3): Replaced by ...
10094         (<sse2_avx2>_<shift_insn><mode>3): ... this.  New define_insn.
10095
10096 2017-10-24  Paolo Carlini  <paolo.carlini@oracle.com>
10097
10098         PR c++/82466
10099         * doc/invoke.texi ([Wbuiltin-declaration-mismatch]): Extend
10100         description.
10101
10102 2017-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
10103
10104         PR rtl-optimization/82396
10105         * gcc/haifa-sched.c (ready_sort_real): Remove qsort workaround.
10106         (autopref_multipass_init): Simplify initialization.
10107         (autopref_rank_data): Simplify sort order.
10108         * gcc/sched-int.h (autopref_multipass_data_): Remove
10109         multi_mem_insn_p, min_offset and max_offset.
10110
10111 2017-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
10112
10113         PR middle-end/60580
10114         * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
10115         Check special value of flag_omit_frame_pointer.
10116         (aarch64_can_eliminate): Likewise.
10117         (aarch64_override_options_after_change_1): Simplify handling of
10118         -fomit-frame-pointer and -fomit-leaf-frame-pointer.
10119
10120 2017-10-24  Richard Biener  <rguenther@suse.de>
10121
10122         PR tree-optimization/82697
10123         * tree-ssa-phiopt.c (cond_store_replacement): Use alias-set
10124         zero for conditional load and unconditional store.
10125
10126 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
10127
10128         * doc/install.texi: Document bootstrap-cet.
10129
10130 2017-10-24  H.J. Lu  <hongjiu.lu@intel.com>
10131
10132         PR target/82659
10133         * config/i386/i386.c (rest_of_insert_endbranch): Don't insert
10134         ENDBR instruction at function entrance if function is only
10135         called directly.
10136
10137 2017-10-24  Jakub Jelinek  <jakub@redhat.com>
10138
10139         PR target/82628
10140         * config/i386/i386.md (addcarry<mode>, subborrow<mode>): Change
10141         patterns to better describe from which operation the CF is computed.
10142         (addcarry<mode>_0, subborrow<mode>_0): New patterns.
10143         * config/i386/i386.c (ix86_expand_builtin) <case handlecarry>: Pass
10144         one LTU with [DT]Imode and another one with [SD]Imode.  If arg0
10145         is 0, use _0 suffixed expanders instead of emitting a comparison
10146         before it.
10147
10148 2017-10-06  Sergey Shalnov  <Sergey.Shalnov@intel.com>
10149
10150         * config/i386/i386.md(*movsf_internal, *movdf_internal):
10151         Avoid 512-bit AVX modes for TARGET_PREFER_AVX256.
10152
10153 2017-10-24  Eric Botcazou  <ebotcazou@adacore.com>
10154
10155         PR middle-end/82569
10156         * tree-outof-ssa.h (always_initialized_rtx_for_ssa_name_p): Delete.
10157         * expr.c (expand_expr_real_1) <expand_decl_rtl>: Revert latest change.
10158         * loop-iv.c (iv_get_reaching_def): Likewise.
10159         * cfgexpand.c (expand_one_ssa_partition): Initialize the RTX if the
10160         variable is promoted and the partition contains undefined values.
10161
10162 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
10163
10164         * config/nios2/nios2.c (nios2_rtx_costs): Make costs better
10165         reflect reality.
10166         (nios2_address_cost): Define.
10167         (nios2_legitimize_address): Recognize (exp + constant) directly.
10168         (TARGET_ADDRESS_COST): Define.
10169
10170 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
10171
10172         * config/nios2/nios2-protos.h (nios2_large_constant_p): Declare.
10173         (nios2_symbolic_memory_operand_p): Declare.
10174         (nios2_split_large_constant): Declare.
10175         (nios2_split_symbolic_memory_operand): Declare.
10176         * config/nios2/nios2.c: Adjust includes.
10177         (nios2_symbolic_constant_allowed): New.
10178         (nios2_symbolic_constant_p): New.
10179         (nios2_plus_symbolic_constant_p): New.
10180         (nios2_valid_addr_expr_p): Recognize addresses involving
10181         symbolic constants.
10182         (nios2_legitimate_address_p): Likewise, also LO_SUM.
10183         (nios2_symbolic_memory_operand_p): New.
10184         (nios2_large_constant_p): New.
10185         (nios2_split_large_constant): New.
10186         (nios2_split_plus_large_constant): New.
10187         (nios2_split_symbolic_memory_operand): New.
10188         (nios2_legitimize_address): Code refactoring.  Handle addresses
10189         involving symbolic constants.
10190         (nios2_emit_move_sequence): Likewise.
10191         (nios2_print_operand): Improve error output.
10192         (nios2_print_operand_address): Handle LO_SUM.
10193         (nios2_cdx_narrow_form_p): Likewise.
10194         * config/nios2/nios2.md (movqi_internal): Add splitter for memory
10195         operands involving symbolic constants.
10196         (movhi_internal, movsi_internal): Likewise.
10197         (zero_extendhisi2, zero_extendqi<mode>2): Likewise.
10198         (extendhisi2, extendqi<mode>2): Likewise.
10199
10200 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
10201
10202         * tree-pass.h (PROP_rtl_split_insns): Define.
10203         * recog.c (pass_data_split_all_insns): Provide PROP_rtl_split_insns.
10204
10205 2017-10-23  Sandra Loosemore  <sandra@codesourcery.com>
10206
10207         * config/nios2/nios2.c (TARGET_LRA_P): Don't override.
10208
10209 2017-10-23  Jakub Jelinek  <jakub@redhat.com>
10210
10211         PR debug/82630
10212         * target.def (const_not_ok_for_debug_p): Default to
10213         default_const_not_ok_for_debug_p instead of hook_bool_rtx_false.
10214         * targhooks.h (default_const_not_ok_for_debug_p): New declaration.
10215         * targhooks.c (default_const_not_ok_for_debug_p): New function.
10216         * dwarf2out.c (const_ok_for_output_1): Only reject UNSPECs for
10217         which targetm.const_not_ok_for_debug_p returned true.
10218         * config/arm/arm.c (arm_const_not_ok_for_debug_p): Return true
10219         for UNSPECs.
10220         * config/powerpcspe/powerpcspe.c (rs6000_const_not_ok_for_debug_p):
10221         Likewise.
10222         * config/rs6000/rs6000.c (rs6000_const_not_ok_for_debug_p): Likewise.
10223         * config/i386/i386.c (ix86_delegitimize_address_1): Don't delegitimize
10224         UNSPEC_GOTOFF with addend into addend - _GLOBAL_OFFSET_TABLE_ + symbol
10225         if !base_term_p.
10226         (ix86_const_not_ok_for_debug_p): New function.
10227         (i386_asm_output_addr_const_extra): Handle UNSPEC_GOTOFF.
10228         (TARGET_CONST_NOT_OK_FOR_DEBUG_P): Redefine.
10229
10230 2017-10-23  David Malcolm  <dmalcolm@redhat.com>
10231
10232         PR bootstrap/82610
10233         * system.h: Conditionally include "unique-ptr.h" if
10234         INCLUDE_UNIQUE_PTR is defined.
10235         * unique-ptr-tests.cc: Remove include of "unique-ptr.h" in favor
10236         of defining INCLUDE_UNIQUE_PTR before including "system.h".
10237
10238 2017-10-23  Sebastian Perta  <sebastian.perta@renesas.com>
10239
10240         * config/rl78/rl78.md: New define_expand "subdi3".
10241
10242 2017-10-23  H.J. Lu  <hongjiu.lu@intel.com>
10243
10244         PR target/82673
10245         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Skip
10246         DF_REF_INSN if DF_REF_INSN_INFO is false.
10247
10248 2017-10-23  Jan Hubicka  <hubicka@ucw.cz>
10249
10250         * i386.c (dimode_scalar_chain::compute_convert_gain): Use
10251         xmm_move instead of sse_move.
10252         (sse_store_index): New function.
10253         (ix86_register_move_cost): Be more sensible about mismatch stall;
10254         model AVX moves correctly; make difference between sse->integer and
10255         integer->sse.
10256         (ix86_builtin_vectorization_cost): Model correctly aligned and unaligned
10257         moves; make difference between SSE and AVX.
10258         * i386.h (processor_costs): Remove sse_move; add xmm_move, ymm_move
10259         and zmm_move. Increase size of sse load and store tables;
10260         add unaligned load and store tables; add ssemmx_to_integer.
10261         * x86-tune-costs.h: Update all entries according to real
10262         move latencies from Agner Fog's manual and chip documentation.
10263
10264 2017-10-23  Jakub Jelinek  <jakub@redhat.com>
10265
10266         PR target/82628
10267         * config/i386/predicates.md (x86_64_dwzext_immediate_operand): New.
10268         * config/i386/constraints.md (Wf): New constraint.
10269         * config/i386/i386.md (UNSPEC_SBB): New unspec.
10270         (cmp<dwi>_doubleword): Removed.
10271         (sub<mode>3_carry_ccc, *sub<mode>3_carry_ccc_1): New patterns.
10272         (sub<mode>3_carry_ccgz): Use unspec instead of compare.
10273         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>: Don't
10274         expand with cmp<dwi>_doubleword.  For LTU and GEU use
10275         sub<mode>3_carry_ccc instead of sub<mode>3_carry_ccgz and use CCCmode.
10276
10277         * common.opt (gcolumn-info): Enable by default.
10278         * doc/invoke.texi (gcolumn-info): Document new default.
10279
10280 2017-10-23  Richard Biener  <rguenther@suse.de>
10281
10282         PR tree-optimization/82672
10283         * graphite-isl-ast-to-gimple.c (graphite_copy_stmts_from_block):
10284         Fold the stmt if we propagated into it.
10285
10286 2017-10-23  Richard Biener  <rguenther@suse.de>
10287
10288         * tree-ssa-pre.c (bitmap_remove_from_set): Rename to...
10289         (bitmap_remove_expr_from_set): ... this.  All callers call this
10290         for non-constant values.
10291         (bitmap_set_subtract): Rename to...
10292         (bitmap_set_subtract_expressions): ... this.  Adjust and
10293         optimize.
10294         (bitmap_set_contains_value): Remove superfluous check.
10295         (bitmap_set_replace_value): Inline into single caller ...
10296         (bitmap_value_replace_in_set): ... here and simplify.
10297         (dependent_clean): Merge into ...
10298         (clean): ... this using an overload.  Adjust.
10299         (prune_clobbered_mems): Adjust.
10300         (compute_antic_aux): Likewise.
10301         (compute_partial_antic_aux): Likewise.
10302
10303 2017-10-23  Richard Biener  <rguenther@suse.de>
10304
10305         PR tree-optimization/82129
10306         Revert
10307         2017-08-01  Richard Biener  <rguenther@suse.de>
10308
10309         PR tree-optimization/81181
10310         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
10311         (compute_antic): ... end of iteration here.
10312
10313 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10314
10315         * target.def (starting_frame_offset): New hook.
10316         * doc/tm.texi (STARTING_FRAME_OFFSET): Remove in favor of...
10317         (TARGET_STARTING_FRAME_OFFSET): ...this new hook.
10318         * doc/tm.texi.in: Regenerate.
10319         * hooks.h (hook_hwi_void_0): Declare.
10320         * hooks.c (hook_hwi_void_0): New function.
10321         * doc/rtl.texi: Refer to TARGET_STARTING_FRAME_OFFSET instead of
10322         STARTING_FRAME_OFFSET.
10323         * builtins.c (expand_builtin_setjmp_receiver): Likewise.
10324         * reload1.c (reload): Likewise.
10325         * cfgexpand.c (expand_used_vars): Use targetm.starting_frame_offset
10326         instead of STARTING_FRAME_OFFSET.
10327         * function.c (try_fit_stack_local): Likewise.
10328         (assign_stack_local_1): Likewise
10329         (instantiate_virtual_regs): Likewise.
10330         * rtlanal.c (rtx_addr_can_trap_p_1): Likewise.
10331         * config/avr/avr.md (nonlocal_goto_receiver): Likewise.
10332         * config/aarch64/aarch64.h (STARTING_FRAME_OFFSET): Delete.
10333         * config/alpha/alpha.h (STARTING_FRAME_OFFSET): Likewise.
10334         * config/arc/arc.h (STARTING_FRAME_OFFSET): Likewise.
10335         * config/arm/arm.h (STARTING_FRAME_OFFSET): Likewise.
10336         * config/bfin/bfin.h (STARTING_FRAME_OFFSET): Likewise.
10337         * config/c6x/c6x.h (STARTING_FRAME_OFFSET): Likewise.
10338         * config/cr16/cr16.h (STARTING_FRAME_OFFSET): Likewise.
10339         * config/cris/cris.h (STARTING_FRAME_OFFSET): Likewise.
10340         * config/fr30/fr30.h (STARTING_FRAME_OFFSET): Likewise.
10341         * config/frv/frv.h (STARTING_FRAME_OFFSET): Likewise.
10342         * config/ft32/ft32.h (STARTING_FRAME_OFFSET): Likewise.
10343         * config/h8300/h8300.h (STARTING_FRAME_OFFSET): Likewise.
10344         * config/i386/i386.h (STARTING_FRAME_OFFSET): Likewise.
10345         * config/ia64/ia64.h (STARTING_FRAME_OFFSET): Likewise.
10346         * config/m32c/m32c.h (STARTING_FRAME_OFFSET): Likewise.
10347         * config/m68k/m68k.h (STARTING_FRAME_OFFSET): Likewise.
10348         * config/mcore/mcore.h (STARTING_FRAME_OFFSET): Likewise.
10349         * config/mn10300/mn10300.h (STARTING_FRAME_OFFSET): Likewise.
10350         * config/moxie/moxie.h (STARTING_FRAME_OFFSET): Likewise.
10351         * config/msp430/msp430.h (STARTING_FRAME_OFFSET): Likewise.
10352         * config/nds32/nds32.h (STARTING_FRAME_OFFSET): Likewise.
10353         * config/nios2/nios2.h (STARTING_FRAME_OFFSET): Likewise.
10354         * config/nvptx/nvptx.h (STARTING_FRAME_OFFSET): Likewise.
10355         * config/pdp11/pdp11.h (STARTING_FRAME_OFFSET): Likewise.
10356         * config/riscv/riscv.h (STARTING_FRAME_OFFSET): Likewise.
10357         * config/rl78/rl78.h (STARTING_FRAME_OFFSET): Likewise.
10358         * config/rx/rx.h (STARTING_FRAME_OFFSET): Likewise.
10359         * config/s390/s390.h (STARTING_FRAME_OFFSET): Likewise.
10360         * config/sh/sh.h (STARTING_FRAME_OFFSET): Likewise.
10361         * config/sparc/sparc.c (sparc_compute_frame_size): Likewise.
10362         * config/sparc/sparc.h (STARTING_FRAME_OFFSET): Likewise.
10363         * config/spu/spu.h (STARTING_FRAME_OFFSET): Likewise.
10364         * config/stormy16/stormy16.h (STARTING_FRAME_OFFSET): Likewise.
10365         * config/tilegx/tilegx.h (STARTING_FRAME_OFFSET): Likewise.
10366         * config/tilepro/tilepro.h (STARTING_FRAME_OFFSET): Likewise.
10367         * config/v850/v850.h (STARTING_FRAME_OFFSET): Likewise.
10368         * config/visium/visium.h (STARTING_FRAME_OFFSET): Likewise.
10369         * config/avr/avr.h (STARTING_FRAME_OFFSET): Likewise.
10370         * config/avr/avr-protos.h (avr_starting_frame_offset): Likewise.
10371         * config/avr/avr.c (avr_starting_frame_offset): Make static and
10372         return a HOST_WIDE_INT.
10373         (avr_builtin_setjmp_frame_value): Use it instead of
10374         STARTING_FRAME_OFFSET.
10375         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10376         * config/epiphany/epiphany.h (STARTING_FRAME_OFFSET): Delete.
10377         * config/epiphany/epiphany.c (epiphany_starting_frame_offset):
10378         New function.
10379         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10380         * config/iq2000/iq2000.h (STARTING_FRAME_OFFSET): Delete.
10381         * config/iq2000/iq2000.c (iq2000_starting_frame_offset): New function.
10382         (TARGET_CONSTANT_ALIGNMENT): Redefine.
10383         * config/lm32/lm32.h (STARTING_FRAME_OFFSET): Delete.
10384         * config/lm32/lm32.c (lm32_starting_frame_offset): New function.
10385         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10386         * config/m32r/m32r.h (STARTING_FRAME_OFFSET): Delete.
10387         * config/m32r/m32r.c (m32r_starting_frame_offset): New function.
10388         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10389         * config/microblaze/microblaze.h (STARTING_FRAME_OFFSET): Delete.
10390         * config/microblaze/microblaze.c (microblaze_starting_frame_offset):
10391         New function.
10392         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10393         * config/mips/mips.h (STARTING_FRAME_OFFSET): Delete.
10394         * config/mips/mips.c (mips_compute_frame_info): Refer to
10395         TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
10396         (mips_starting_frame_offset): New function.
10397         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10398         * config/mmix/mmix.h (STARTING_FRAME_OFFSET): Delete.
10399         * config/mmix/mmix-protos.h (mmix_starting_frame_offset): Delete.
10400         * config/mmix/mmix.c (mmix_starting_frame_offset): Make static
10401         and return a HOST_WIDE_INT.
10402         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10403         (mmix_initial_elimination_offset): Refer to
10404         TARGET_STARTING_FRAME_OFFSET instead of STARTING_FRAME_OFFSET.
10405         * config/pa/pa.h (STARTING_FRAME_OFFSET): Delete.
10406         * config/pa/pa.c (pa_starting_frame_offset): New function.
10407         (pa_compute_frame_size): Use it instead of STARTING_FRAME_OFFSET.
10408         (pa_expand_prologue): Likewise.
10409         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10410         * config/powerpcspe/aix.h (STARTING_FRAME_OFFSET): Split out
10411         !FRAME_GROWS_DOWNWARD handling to...
10412         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10413         * config/powerpcspe/darwin.h (STARTING_FRAME_OFFSET): Split out
10414         !FRAME_GROWS_DOWNWARD handling to...
10415         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10416         * config/powerpcspe/powerpcspe.h (STARTING_FRAME_OFFSET): Split out
10417         !FRAME_GROWS_DOWNWARD handling to...
10418         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10419         * config/powerpcspe/powerpcspe.c (TARGET_STARTING_FRAME_OFFSET):
10420         Redefine.
10421         (rs6000_starting_frame_offset): New function.
10422         * config/rs6000/aix.h (STARTING_FRAME_OFFSET): Split out
10423         !FRAME_GROWS_DOWNWARD handling to...
10424         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10425         * config/rs6000/darwin.h (STARTING_FRAME_OFFSET): Split out
10426         !FRAME_GROWS_DOWNWARD handling to...
10427         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10428         * config/rs6000/rs6000.h (STARTING_FRAME_OFFSET): Split out
10429         !FRAME_GROWS_DOWNWARD handling to...
10430         (RS6000_STARTING_FRAME_OFFSET): ...this new macro.
10431         * config/rs6000/rs6000.c (TARGET_STARTING_FRAME_OFFSET): Refine.
10432         (rs6000_starting_frame_offset): New function.
10433         * config/vax/elf.h (STARTING_FRAME_OFFSET): Delete.
10434         * config/vax/vax.h (STARTING_FRAME_OFFSET): Delete.
10435         * config/vax/vax.c (vax_starting_frame_offset): New function.
10436         (vax_expand_prologue): Use it instead of STARTING_FRAME_OFFSET.
10437         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10438         * config/xtensa/xtensa.h (STARTING_FRAME_OFFSET): Delete.
10439         * config/xtensa/xtensa.c (xtensa_starting_frame_offset): New function.
10440         (TARGET_STARTING_FRAME_OFFSET): Redefine.
10441         * system.h (STARTING_FRAME_OFFSET): Poison.
10442
10443 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10444
10445         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
10446         SCALAR_TYPE_MODE instead of TYPE_MODE.
10447
10448 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10449             Alan Hayward  <alan.hayward@arm.com>
10450             David Sherwood  <david.sherwood@arm.com>
10451
10452         * dwarf2out.c (loc_list_from_tree_1): Use SCALAR_INT_TYPE_MODE
10453
10454 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10455             Alan Hayward  <alan.hayward@arm.com>
10456             David Sherwood  <david.sherwood@arm.com>
10457
10458         * expmed.c (expand_shift_1): Use scalar_mode for scalar_mode.
10459
10460 2017-10-23  Richard Biener  <rguenther@suse.de>
10461
10462         PR tree-optimization/82129
10463         * tree-ssa-pre.c (bitmap_set_and): Remove.
10464         (compute_antic_aux): Compute ANTIC_OUT intersection in a way
10465         canonicalizing expressions in the set to those with lowest
10466         ID rather than taking that from the first edge.
10467
10468 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
10469
10470         * combine.c (rtx_equal_for_field_assignment_p): Use
10471         byte_lowpart_offset.
10472
10473 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10474             Alan Hayward  <alan.hayward@arm.com>
10475             David Sherwood  <david.sherwood@arm.com>
10476
10477         * internal-fn.c (expand_direct_optab_fn): Don't assign directly
10478         to a SUBREG_PROMOTED_VAR.
10479
10480 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10481             Alan Hayward  <alan.hayward@arm.com>
10482             David Sherwood  <david.sherwood@arm.com>
10483
10484         * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_PRECISION.
10485         (expand_debug_source_expr): Likewise.
10486         * combine.c (combine_simplify_rtx): Likewise.
10487         * cse.c (fold_rtx): Likewise.
10488         * optabs.c (expand_float): Likewise.
10489         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
10490         (simplify_binary_operation_1): Likewise.
10491
10492 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10493             Alan Hayward  <alan.hayward@arm.com>
10494             David Sherwood  <david.sherwood@arm.com>
10495
10496         * combine.c (simplify_comparison): Use HWI_COMPUTABLE_MODE_P.
10497         (record_promoted_value): Likewise.
10498         * expr.c (expand_expr_real_2): Likewise.
10499         * ree.c (update_reg_equal_equiv_notes): Likewise.
10500         (combine_set_extension): Likewise.
10501         * rtlanal.c (low_bitmask_len): Likewise.
10502         * simplify-rtx.c (neg_const_int): Likewise.
10503         (simplify_binary_operation_1): Likewise.
10504
10505 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10506             Alan Hayward  <alan.hayward@arm.com>
10507             David Sherwood  <david.sherwood@arm.com>
10508
10509         * lra-spills.c (assign_mem_slot): Use subreg_size_lowpart_offset.
10510         * regcprop.c (maybe_mode_change): Likewise.
10511         * reload1.c (alter_reg): Likewise.
10512
10513 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10514
10515         * inchash.h (inchash::hash::add_wide_int): New function.
10516         * lto-streamer-out.c (hash_tree): Use it.
10517
10518 2017-10-22  Richard Sandiford  <richard.sandiford@linaro.org>
10519
10520         * inchash.h (inchash::hash::add_wide_int): Rename to...
10521         (inchash::hash::add_hwi): ...this.
10522         * ipa-devirt.c (hash_odr_vtable): Update accordingly.
10523         (polymorphic_call_target_hasher::hash): Likewise.
10524         * ipa-icf.c (sem_function::get_hash, sem_function::init): Likewise.
10525         (sem_item::add_expr, sem_item::add_type, sem_variable::get_hash)
10526         (sem_item_optimizer::update_hash_by_addr_refs): Likewise.
10527         * lto-streamer-out.c (hash_tree): Likewise.
10528         * optc-save-gen.awk: Likewise.
10529         * tree.c (add_expr): Likewise.
10530
10531 2017-10-22  Uros Bizjak  <ubizjak@gmail.com>
10532
10533         PR target/52451
10534         * config/i386/i386.c (ix86_fp_compare_mode): Return CCFPmode
10535         for ordered inequality comparisons even with TARGET_IEEE_FP.
10536
10537 2017-10-22  Uros Bizjak  <ubizjak@gmail.com>
10538
10539         PR target/82628
10540         * config/i386/i386.md (cmp<dwi>_doubleword): New pattern.
10541         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
10542         Expand with cmp<dwi>_doubleword.
10543
10544 2017-10-21  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10545
10546         * extend.texi: Add x86 specific to 'nocf_check' attribute.
10547         List CET intrinsics.
10548         * invoke.texi: Add -mcet, -mibt, -mshstk options.  Add x86
10549         specific to -fcf-protection option.
10550
10551 2017-10-21  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10552
10553         * common/config/i386/i386-common.c (OPTION_MASK_ISA_IBT_SET): New.
10554         (OPTION_MASK_ISA_SHSTK_SET): Likewise.
10555         (OPTION_MASK_ISA_IBT_UNSET): Likewise.
10556         (OPTION_MASK_ISA_SHSTK_UNSET): Likewise.
10557         (ix86_handle_option): Add -mibt, -mshstk, -mcet handling.
10558         * config.gcc (extra_headers): Add cetintrin.h for x86 targets.
10559         (extra_objs): Add cet.o for Linux/x86 targets.
10560         (tmake_file): Add i386/t-cet for Linux/x86 targets.
10561         * config/i386/cet.c: New file.
10562         * config/i386/cetintrin.h: Likewise.
10563         * config/i386/t-cet: Likewise.
10564         * config/i386/cpuid.h (bit_SHSTK): New.
10565         (bit_IBT): Likewise.
10566         * config/i386/driver-i386.c (host_detect_local_cpu): Detect and
10567         pass IBT and SHSTK bits.
10568         * config/i386/i386-builtin-types.def
10569         (VOID_FTYPE_UNSIGNED_PVOID): New.
10570         (VOID_FTYPE_UINT64_PVOID): Likewise.
10571         * config/i386/i386-builtin.def: Add CET intrinsics.
10572         * config/i386/i386-c.c (ix86_target_macros_internal): Add
10573         OPTION_MASK_ISA_IBT, OPTION_MASK_ISA_SHSTK handling.
10574         * config/i386/i386-passes.def: Add pass_insert_endbranch pass.
10575         * config/i386/i386-protos.h (make_pass_insert_endbranch): New
10576         prototype.
10577         * config/i386/i386.c (rest_of_insert_endbranch): New.
10578         (pass_data_insert_endbranch): Likewise.
10579         (pass_insert_endbranch): Likewise.
10580         (make_pass_insert_endbranch): Likewise.
10581         (ix86_notrack_prefixed_insn_p): Likewise.
10582         (ix86_target_string): Add -mibt, -mshstk flags.
10583         (ix86_option_override_internal): Add flag_cf_protection
10584         processing.
10585         (ix86_valid_target_attribute_inner_p): Set OPT_mibt, OPT_mshstk.
10586         (ix86_print_operand): Add 'notrack' prefix output.
10587         (ix86_init_mmx_sse_builtins): Add CET intrinsics.
10588         (ix86_expand_builtin): Expand CET intrinsics.
10589         (x86_output_mi_thunk): Add 'endbranch' instruction.
10590         * config/i386/i386.h (TARGET_IBT): New.
10591         (TARGET_IBT_P): Likewise.
10592         (TARGET_SHSTK): Likewise.
10593         (TARGET_SHSTK_P): Likewise.
10594         * config/i386/i386.md (unspecv): Add UNSPECV_NOP_RDSSP,
10595         UNSPECV_INCSSP, UNSPECV_SAVEPREVSSP, UNSPECV_RSTORSSP,
10596         UNSPECV_WRSS, UNSPECV_WRUSS, UNSPECV_SETSSBSY, UNSPECV_CLRSSBSY.
10597         (builtin_setjmp_setup): New pattern.
10598         (builtin_longjmp): Likewise.
10599         (rdssp<mode>): Likewise.
10600         (incssp<mode>): Likewise.
10601         (saveprevssp): Likewise.
10602         (rstorssp): Likewise.
10603         (wrss<mode>): Likewise.
10604         (wruss<mode>): Likewise.
10605         (setssbsy): Likewise.
10606         (clrssbsy): Likewise.
10607         (nop_endbr): Likewise.
10608         * config/i386/i386.opt: Add -mcet, -mibt, -mshstk and -mcet-switch
10609         options.
10610         * config/i386/immintrin.h: Include <cetintrin.h>.
10611         * config/i386/linux-common.h
10612         (file_end_indicate_exec_stack_and_cet): New prototype.
10613         (TARGET_ASM_FILE_END): New.
10614
10615 2017-10-20  Jan Hubicka  <hubicka@ucw.cz>
10616
10617         * i386.c (ix86_builtin_vectorization_cost): Use existing rtx_cost
10618         latencies instead of having separate table; make difference between
10619         integer and float costs.
10620         * i386.h (processor_costs): Remove scalar_stmt_cost,
10621         scalar_load_cost, scalar_store_cost, vec_stmt_cost, vec_to_scalar_cost,
10622         scalar_to_vec_cost, vec_align_load_cost, vec_unalign_load_cost,
10623         vec_store_cost.
10624         * x86-tune-costs.h: Remove entries which has been removed in
10625         procesor_costs from all tables; make cond_taken_branch_cost
10626         and cond_not_taken_branch_cost COST_N_INSNS based.
10627
10628 2017-10-20  Jan Hubicka  <hubicka@ucw.cz>
10629
10630         * x86-tune-costs.h (intel_cost, generic_cost): Fix move costs.
10631
10632 2017-10-20  Jakub Jelinek  <jakub@redhat.com>
10633
10634         * config/i386/i386.md (isa): Remove fma_avx512f.
10635         * config/i386/sse.md (<avx512>_fmadd_<mode>_mask<round_name>,
10636         <avx512>_fmadd_<mode>_mask3<round_name>,
10637         <avx512>_fmsub_<mode>_mask<round_name>,
10638         <avx512>_fmsub_<mode>_mask3<round_name>,
10639         <avx512>_fnmadd_<mode>_mask<round_name>,
10640         <avx512>_fnmadd_<mode>_mask3<round_name>,
10641         <avx512>_fnmsub_<mode>_mask<round_name>,
10642         <avx512>_fnmsub_<mode>_mask3<round_name>,
10643         <avx512>_fmaddsub_<mode>_mask<round_name>,
10644         <avx512>_fmaddsub_<mode>_mask3<round_name>,
10645         <avx512>_fmsubadd_<mode>_mask<round_name>,
10646         <avx512>_fmsubadd_<mode>_mask3<round_name>): Remove isa attribute.
10647         (*vec_widen_umult_even_v16si<mask_name>,
10648         *vec_widen_smult_even_v16si<mask_name>): Likewise.
10649         (<mask_codefor>avx512bw_dbpsadbw<mode><mask_name>): Likewise.
10650
10651 2017-10-20  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10652
10653         * extend.texi: Add 'nocf_check' documentation.
10654         * gimple.texi: Add second parameter to
10655         gimple_build_call_from_tree.
10656         * invoke.texi: Add -fcf-protection documentation.
10657         * rtl.texi: Add REG_CALL_NOTRACK documenation.
10658
10659 2017-10-20  Richard Biener  <rguenther@suse.de>
10660
10661         PR tree-optimization/82473
10662         * tree-vect-loop.c (vectorizable_reduction): Properly get at
10663         the largest input type.
10664
10665 2017-10-20  Igor Tsimbalist  <igor.v.tsimbalist@intel.com>
10666
10667         * c-attribs.c (handle_nocf_check_attribute): New function.
10668         (c_common_attribute_table): Add 'nocf_check' handling.
10669         * gimple-parser.c: Add second argument NULL to
10670         gimple_build_call_from_tree.
10671         * attrib.c (comp_type_attributes): Check nocf_check attribute.
10672         * cfgexpand.c (expand_call_stmt): Set REG_CALL_NOCF_CHECK for
10673         call insn.
10674         * combine.c (distribute_notes): Add REG_CALL_NOCF_CHECK handling.
10675         * common.opt: Add fcf-protection flag.
10676         * emit-rtl.c (try_split): Add REG_CALL_NOCF_CHECK handling.
10677         * flag-types.h: Add enum cf_protection_level.
10678         * gimple.c (gimple_build_call_from_tree): Add second parameter.
10679         Add 'nocf_check' attribute propagation to gimple call.
10680         * gimple.h (gf_mask): Add GF_CALL_NOCF_CHECK.
10681         (gimple_build_call_from_tree): Update prototype.
10682         (gimple_call_nocf_check_p): New function.
10683         (gimple_call_set_nocf_check): Likewise.
10684         * gimplify.c: Add second argument to gimple_build_call_from_tree.
10685         * ipa-icf.c: Add nocf_check attribute in statement hash.
10686         * recog.c (peep2_attempt): Add REG_CALL_NOCF_CHECK handling.
10687         * reg-notes.def: Add REG_NOTE (CALL_NOCF_CHECK).
10688         * toplev.c (process_options): Add flag_cf_protection handling.
10689
10690 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
10691
10692         * x86-tune-costs.h (core_cost): Fix div, move and sqrt latencies.
10693
10694 2017-10-20  Richard Biener  <rguenther@suse.de>
10695
10696         PR tree-optimization/82603
10697         * tree-if-conv.c (predicate_mem_writes): Make sure to only
10698         remove false predicated stores.
10699
10700 2017-10-20  Richard Biener  <rguenther@suse.de>
10701
10702         * graphite-isl-ast-to-gimple.c
10703         (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block):
10704         Remove return value and simplify, dump copied stmt after lhs
10705         adjustment.
10706         (translate_isl_ast_to_gimple::translate_isl_ast_node_user):
10707         Reduce dump verbosity.
10708         (gsi_insert_earliest): Likewise.
10709         (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Adjust.
10710         * graphite.c (print_global_statistics): Adjust dumping.
10711         (print_graphite_scop_statistics): Likewise.
10712         (print_graphite_statistics): Do not dump loops here.
10713         (graphite_transform_loops): But here.
10714
10715 2017-10-20  Nicolas Roche  <roche@adacore.com>
10716
10717         * configure.ac (ACX_PROG_GNAT): Append "libgnat" to include search dir.
10718         * configure: Regenerate.
10719
10720 2017-10-20  Jakub Jelinek  <jakub@redhat.com>
10721
10722         PR target/82158
10723         * tree-cfg.c (pass_warn_function_return::execute): In noreturn
10724         functions when optimizing replace GIMPLE_RETURN stmts with
10725         calls to __builtin_unreachable ().
10726
10727         PR sanitizer/82595
10728         * config/gnu-user.h (LIBTSAN_EARLY_SPEC): Add libtsan_preinit.o
10729         for -fsanitize=thread link of executables.
10730         (LIBLSAN_EARLY_SPEC): Add liblsan_preinit.o for -fsanitize=leak
10731         link of executables.
10732
10733         PR target/82370
10734         * config/i386/sse.md (VI248_AVX2, VI248_AVX512BW, VI248_AVX512BW_2):
10735         New mode iterators.
10736         (<shift_insn><mode>3<mask_name>): Change the last of the 3
10737         define_insns for logical vector shifts to use VI248_AVX512BW
10738         iterator instead of VI48_AVX512, remove <mask_mode512bit_condition>
10739         condition, useless isa and prefix attributes.  Change the first
10740         2 of these define_insns to ...
10741         (<mask_codefor><shift_insn><mode>3<mask_name>): ... this, new
10742         define_insn for avx512vl.
10743         (<shift_insn><mode>3): ... and this, new define_insn without
10744         masking for non-avx512vl.
10745
10746         PR target/82370
10747         * config/i386/sse.md (*andnot<mode>3,
10748         <mask_codefor><code><mode>3<mask_name>, *<code><mode>3): Split
10749         (=v,v,vm) alternative into (=x,x,xm) and (=v,v,vm), for 128-bit
10750         and 256-bit vectors, the (=x,x,xm) alternative and when mask is
10751         not applied use empty suffix even for TARGET_AVX512VL.
10752         * config/i386/subst.md (mask_prefix3, mask_prefix4): When mask
10753         is applied, supply evex,evex or evex,evex,evex instead of just
10754         evex.
10755
10756 2017-10-20  Julia Koval  <julia.koval@intel.com>
10757
10758         * common/config/i386/i386-common.c (OPTION_MASK_ISA_GFNI_SET,
10759         (OPTION_MASK_ISA_GFNI_UNSET): New.
10760         (ix86_handle_option): Handle OPT_mgfni.
10761         * config/i386/cpuid.h (bit_GFNI): New.
10762         * config/i386/driver-i386.c (host_detect_local_cpu): Detect gfni.
10763         * config/i386/i386-c.c (ix86_target_macros_internal): Define __GFNI__.
10764         * config/i386/i386.c (ix86_target_string): Add -mgfni.
10765         (ix86_valid_target_attribute_inner_p): Add OPT_mgfni.
10766         * config/i386/i386.h (TARGET_GFNI, TARGET_GFNI_P): New.
10767         * config/i386/i386.opt: Add mgfni.
10768
10769 2017-10-20  Orlando Arias  <oarias@knights.ucf.edu>
10770
10771         * config/msp430/msp430.c (msp430_option_override): Disable
10772         -fdelete-null-pointer-checks.
10773         * doc/invoke.text (-fdelete-null-pointer-checks): Document that.
10774
10775 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
10776
10777         * x86-tune-costs.h (generic_cost, core_cost): Correct costs
10778         of x87 and SSE instructions.
10779
10780 2017-10-19  Jan Hubicka  <hubicka@ucw.cz>
10781
10782         * asan.c (create_cond_insert_point): Do not update edge count.
10783         * auto-profile.c (afdo_propagate_edge): Update for edge count removal.
10784         (afdo_propagate_circuit): Likewise.
10785         (afdo_calculate_branch_prob): Likewise.
10786         (afdo_annotate_cfg): Likewise.
10787         * basic-block.h (struct edge_def): Remove count.
10788         (edge_def::count): New accessor.
10789         * bb-reorder.c (rotate_loop): Update.
10790         (find_traces_1_round): Update.
10791         (connect_traces): Update.
10792         (sanitize_hot_paths): Update.
10793         * cfg.c (unchecked_make_edge): Update.
10794         (make_single_succ_edge): Update.
10795         (check_bb_profile): Update.
10796         (dump_edge_info): Update.
10797         (update_bb_profile_for_threading): Update.
10798         (scale_bbs_frequencies_int): Update.
10799         (scale_bbs_frequencies_gcov_type): Update.
10800         (scale_bbs_frequencies_profile_count): Update.
10801         (scale_bbs_frequencies): Update.
10802         * cfganal.c (connect_infinite_loops_to_exit): Update.
10803         * cfgbuild.c (compute_outgoing_frequencies): Update.
10804         (find_many_sub_basic_blocks): Update.
10805         * cfgcleanup.c (try_forward_edges): Update.
10806         (try_crossjump_to_edge): Update
10807         * cfgexpand.c (expand_gimple_cond): Update
10808         (expand_gimple_tailcall): Update
10809         (construct_exit_block): Update
10810         * cfghooks.c (verify_flow_info): Update
10811         (redirect_edge_succ_nodup): Update
10812         (split_edge): Update
10813         (make_forwarder_block): Update
10814         (duplicate_block): Update
10815         (account_profile_record): Update
10816         * cfgloop.c (find_subloop_latch_edge_by_profile): Update.
10817         * cfgloopanal.c (expected_loop_iterations_unbounded): Update.
10818         * cfgloopmanip.c (scale_loop_profile): Update.
10819         (loopify): Update.
10820         (lv_adjust_loop_entry_edge): Update.
10821         * cfgrtl.c (try_redirect_by_replacing_jump): Update.
10822         (force_nonfallthru_and_redirect): Update.
10823         (purge_dead_edges): Update.
10824         (rtl_flow_call_edges_add): Update.
10825         * cgraphunit.c (init_lowered_empty_function): Update.
10826         (cgraph_node::expand_thunk): Update.
10827         * gimple-pretty-print.c (dump_probability): Update.
10828         (dump_edge_probability): Update.
10829         * gimple-ssa-isolate-paths.c (isolate_path): Update.
10830         * haifa-sched.c (sched_create_recovery_edges): Update.
10831         * hsa-gen.c (convert_switch_statements): Update.
10832         * ifcvt.c (dead_or_predicable): Update.
10833         * ipa-inline-transform.c (inline_transform): Update.
10834         * ipa-split.c (split_function): Update.
10835         * ipa-utils.c (ipa_merge_profiles): Update.
10836         * loop-doloop.c (add_test): Update.
10837         * loop-unroll.c (unroll_loop_runtime_iterations): Update.
10838         * lto-streamer-in.c (input_cfg): Update.
10839         (input_function): Update.
10840         * lto-streamer-out.c (output_cfg): Update.
10841         * modulo-sched.c (sms_schedule): Update.
10842         * postreload-gcse.c (eliminate_partially_redundant_load): Update.
10843         * predict.c (maybe_hot_edge_p): Update.
10844         (unlikely_executed_edge_p): Update.
10845         (probably_never_executed_edge_p): Update.
10846         (dump_prediction): Update.
10847         (drop_profile): Update.
10848         (propagate_unlikely_bbs_forward): Update.
10849         (determine_unlikely_bbs): Update.
10850         (force_edge_cold): Update.
10851         * profile.c (compute_branch_probabilities): Update.
10852         * reg-stack.c (better_edge): Update.
10853         * shrink-wrap.c (handle_simple_exit): Update.
10854         * tracer.c (better_p): Update.
10855         * trans-mem.c (expand_transaction): Update.
10856         (split_bb_make_tm_edge): Update.
10857         * tree-call-cdce.c: Update.
10858         * tree-cfg.c (gimple_find_sub_bbs): Update.
10859         (gimple_split_edge): Update.
10860         (gimple_duplicate_sese_region): Update.
10861         (gimple_duplicate_sese_tail): Update.
10862         (gimple_flow_call_edges_add): Update.
10863         (insert_cond_bb): Update.
10864         (execute_fixup_cfg): Update.
10865         * tree-cfgcleanup.c (cleanup_control_expr_graph): Update.
10866         * tree-complex.c (expand_complex_div_wide): Update.
10867         * tree-eh.c (lower_resx): Update.
10868         (unsplit_eh): Update.
10869         (cleanup_empty_eh_move_lp): Update.
10870         * tree-inline.c (copy_edges_for_bb): Update.
10871         (freqs_to_counts): Update.
10872         (copy_cfg_body): Update.
10873         * tree-ssa-dce.c (remove_dead_stmt): Update.
10874         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
10875         * tree-ssa-loop-im.c (execute_sm_if_changed): Update.
10876         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
10877         (unloop_loops): Update.
10878         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
10879         * tree-ssa-loop-split.c (connect_loops): Update.
10880         (split_loop): Update.
10881         * tree-ssa-loop-unswitch.c (hoist_guard): Update.
10882         * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
10883         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
10884         * tree-ssa-reassoc.c (branch_fixup): Update.
10885         * tree-ssa-tail-merge.c (replace_block_by): Update.
10886         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
10887         (compute_path_counts): Update.
10888         (update_profile): Update.
10889         (recompute_probabilities): Update.
10890         (update_joiner_offpath_counts): Update.
10891         (estimated_freqs_path): Update.
10892         (freqs_to_counts_path): Update.
10893         (clear_counts_path): Update.
10894         (ssa_fix_duplicate_block_edges): Update.
10895         (duplicate_thread_path): Update.
10896         * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
10897         (case_bit_test_cmp): Update.
10898         (collect_switch_conv_info): Update.
10899         (gen_inbound_check): Update.
10900         (do_jump_if_equal): Update.
10901         (emit_cmp_and_jump_insns): Update.
10902         * tree-tailcall.c (decrease_profile): Update.
10903         (eliminate_tail_call): Update.
10904         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
10905         (vect_do_peeling): Update.
10906         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
10907         * ubsan.c (ubsan_expand_null_ifn): Update.
10908         (ubsan_expand_ptr_ifn): Update.
10909         * value-prof.c (gimple_divmod_fixed_value): Update.
10910         (gimple_mod_pow2): Update.
10911         (gimple_mod_subtract): Update.
10912         (gimple_ic): Update.
10913         (gimple_stringop_fixed_value): Update.
10914
10915 2017-10-19  Uros Bizjak  <ubizjak@gmail.com>
10916
10917         PR target/82618
10918         * config/i386/i386.md (sub to cmp): New peephole2 pattern.
10919
10920 2017-10-19  Alexander Monakov  <amonakov@ispras.ru>
10921
10922         PR rtl-optimization/82395
10923         * ira-color.c (allocno_priority_compare_func): Fix comparison step
10924         based on non_spilled_static_chain_regno_p.
10925
10926 2017-10-19  Uros Bizjak  <ubizjak@gmail.com>
10927
10928         * config/i386/i386.c (output_387_binary_op): Rewrite SSE part.
10929         (ix86_emit_mode_set): Rewrite insn mnemonic construction.
10930         (ix86_prepare_fp_compare_args): Redefine is_sse as bool.
10931
10932 2017-10-19  Martin Sebor  <msebor@redhat.com>
10933
10934         PR tree-optimization/82596
10935         * tree.c (array_at_struct_end_p): Handle STRING_CST.
10936
10937 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
10938
10939         * asan.c (handle_builtin_alloca): Deal with all alloca variants.
10940         (get_mem_refs_of_builtin_call): Likewise.
10941         * builtins.c (expand_builtin_apply): Adjust call to
10942         allocate_dynamic_stack_space.
10943         (expand_builtin_alloca): For __builtin_alloca_with_align_and_max, pass
10944         the third argument to allocate_dynamic_stack_space, otherwise -1.
10945         (expand_builtin): Deal with all alloca variants.
10946         (is_inexpensive_builtin): Likewise.
10947         * builtins.def (BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX): New.
10948         * calls.c (special_function_p): Deal with all alloca variants.
10949         (initialize_argument_information): Adjust call to
10950         allocate_dynamic_stack_space.
10951         (expand_call): Likewise.
10952         * cfgexpand.c (expand_call_stmt): Deal with all alloca variants.
10953         * doc/extend.texi (Built-ins): Add __builtin_alloca_with_align_and_max
10954         * explow.c (allocate_dynamic_stack_space): Add MAX_SIZE parameter and
10955         use it for the stack usage computation.
10956         * explow.h (allocate_dynamic_stack_space): Adjust prototype.
10957         * function.c (gimplify_parameters): Call build_alloca_call_expr.
10958         * gimple-ssa-warn-alloca.c (alloca_call_type): Simplify control flow.
10959         Take into account 3rd argument of __builtin_alloca_with_align_and_max.
10960         (in_loop_p): Remove first argument and useless check.
10961         (pass_walloca::execute): Remove useless test and adjust call to above.
10962         * gimple.c (gimple_build_call_from_tree): Deal with all alloc variants
10963         * gimplify.c (gimplify_vla_decl): Call build_alloca_call_expr.
10964         (gimplify_call_expr): Deal with all alloca variants.
10965         * hsa-gen.c (gen_hsa_alloca): Likewise.
10966         (gen_hsa_insns_for_call): Likewise.
10967         * ipa-pure-const.c (special_builtin_state): Likewise.
10968         * tree-chkp.c (chkp_build_returned_bound): Likewise.
10969         * tree-object-size.c (alloc_object_size): Likewise.
10970         * tree-ssa-alias.c (ref_maybe_used_by_call_p_1): Likewise.
10971         (call_may_clobber_ref_p_1): Likewise.
10972         * tree-ssa-ccp.c (evaluate_stmt): Likewise.
10973         (ccp_fold_stmt): Likewise.
10974         (optimize_stack_restore): Likewise.
10975         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
10976         (mark_all_reaching_defs_necessary_1): Likewise.
10977         (propagate_necessity): Likewise.
10978         (eliminate_unnecessary_stmts): Likewise.
10979         * tree.c (build_common_builtin_nodes): Build
10980         BUILT_IN_ALLOCA_WITH_ALIGN_AND_MAX.
10981         (build_alloca_call_expr): New function.
10982         * tree.h (ALLOCA_FUNCTION_CODE_P): New macro.
10983         (CASE_BUILT_IN_ALLOCA): Likewise.
10984         (build_alloca_call_expr): Declare.
10985         * varasm.c (incorporeal_function_p): Deal with all alloca variants.
10986
10987 2017-10-19  Eric Botcazou  <ebotcazou@adacore.com>
10988
10989         PR debug/82509
10990         * dwarf2out.c (new_die_raw): New static inline function.
10991         (new_die): Use it to create the DIE.
10992         (add_AT_external_die_ref): Likewise.
10993         (clone_die): Likewise.
10994         (clone_as_declaration): Likewise.
10995         (dwarf2out_vms_debug_main_pointer): Likewise.
10996         (base_type_die): Likewise.  Remove early return for corner cases.
10997         Do not call add_pubtype on the DIE here.
10998         (is_base_type): Remove ERROR_MARK and return 0 for VOID_TYPE.
10999         (modified_type_die): Adjust the lookup for reverse order DIEs.  Skip
11000         typedefs for base types with DW_AT_endianity.  Make sure a DIE with
11001         native order exists for base types, attach the DIE manually and call
11002         add_pubtype on it.  Do not equate a reverse order DIE to the type.
11003
11004 2017-10-19  Richard Earnshaw  <rearnsha@arm.com>
11005
11006         * config/arm/arm.c (align_ok_ldrd_strd): New function.
11007         (mem_ok_for_ldrd_strd): New parameter align.  Extract the alignment of
11008         the mem into it.
11009         (gen_operands_ldrd_strd): Validate the alignment of the accesses.
11010
11011 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
11012
11013         * flag-types.h (enum sanitize_code): Add SANITIZE_BUILTIN.  Or
11014         SANITIZE_BUILTIN into SANITIZE_UNDEFINED.
11015         * sanitizer.def (BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN,
11016         BUILT_IN_UBSAN_HANDLE_INVALID_BUILTIN_ABORT): New builtins.
11017         * opts.c (sanitizer_opts): Add builtin.
11018         * ubsan.c (instrument_builtin): New function.
11019         (pass_ubsan::execute): Call it.
11020         (pass_ubsan::gate): Enable even for SANITIZE_BUILTIN.
11021         * doc/invoke.texi: Document -fsanitize=builtin.
11022
11023         * ubsan.c (ubsan_expand_null_ifn): Use _v1 suffixed type mismatch
11024         builtins, store max (log2 (align), 0) into uchar field instead of
11025         align into uptr field.
11026         (ubsan_expand_objsize_ifn): Use _v1 suffixed type mismatch builtins,
11027         store uchar 0 field instead of uptr 0 field.
11028         (instrument_nonnull_return): Use _v1 suffixed nonnull return builtin,
11029         instead of passing one address of struct with 2 locations pass
11030         two addresses of structs with 1 location each.
11031         * sanitizer.def (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH,
11032         BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT,
11033         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN,
11034         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): Removed.
11035         (BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1,
11036         BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_V1_ABORT,
11037         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1,
11038         BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_V1_ABORT): New builtins.
11039
11040 2017-10-19  Martin Liska  <mliska@suse.cz>
11041
11042         PR driver/81829
11043         * file-find.c (remove_prefix): Remove.
11044         * file-find.h (remove_prefix): Likewise.
11045         * gcc-ar.c: Remove smartness of lookup.
11046
11047 2017-10-19  Segher Boessenkool  <segher@kernel.crashing.org>
11048
11049         * config/rs6000/rs6000.md (*call_indirect_aix<mode>,
11050         *call_value_indirect_aix<mode>, *call_indirect_elfv2<mode>,
11051         *call_value_indirect_elfv2<mode>): Add correct mode to the unspec.
11052
11053 2017-10-19  Jakub Jelinek  <jakub@redhat.com>
11054
11055         PR target/82580
11056         * config/i386/i386.md (setcc + movzbl to xor + setcc): New peephole2.
11057         (setcc + and to xor + setcc): New peephole2.
11058
11059 2017-10-19  Tom de Vries  <tom@codesourcery.com>
11060
11061         * doc/sourcebuild.texi (Test Directives, Variants of
11062         dg-require-support): Add dg-require-stack-size.
11063
11064 2017-10-19  Martin Liska  <mliska@suse.cz>
11065
11066         PR sanitizer/82517
11067         * gimplify.c (gimplify_decl_expr): Do not instrument variables
11068         that have a large alignment.
11069         (gimplify_target_expr): Likewise.
11070
11071 2017-10-18  Segher Boessenkool  <segher@kernel.crashing.org>
11072
11073         PR rtl-optimization/82602
11074         * ira.c (rtx_moveable_p): Return false for volatile asm.
11075
11076 2017-10-18  Uros Bizjak  <ubizjak@gmail.com>
11077
11078         PR target/82580
11079         * config/i386/i386-modes.def (CCGZ): New CC mode.
11080         * config/i386/i386.md (sub<mode>3_carry_ccgz): New insn pattern.
11081         * config/i386/predicates.md (ix86_comparison_operator):
11082         Handle CCGZmode.
11083         * config/i386/i386.c (ix86_expand_branch) <case E_TImode>:
11084         Emulate LE, LEU, GT, GTU, LT, LTU, GE and GEU double-word comparisons
11085         with double-word subtraction.
11086         (put_condition_code): Handle CCGZmode.
11087
11088 2017-10-18  Aldy Hernandez  <aldyh@redhat.com>
11089
11090         * wide-int.cc (debug (const wide_int &)): New.
11091         (debug (const wide_int *)): New.
11092         (debug (const widest_int &)): New.
11093         (debug (const widest_int *)): New.
11094
11095 2017-10-18  Vladimir Makarov  <vmakarov@redhat.com>
11096
11097         PR middle-end/82556
11098         * lra-constraints.c (curr_insn_transform): Use non-input operand
11099         instead of output one for matched reload.
11100
11101 2017-10-18  Bin Cheng  <bin.cheng@arm.com>
11102
11103         * tree-loop-distribution.c (INCLUDE_ALGORITHM): New header file.
11104         (tree-ssa-loop-ivopts.h): New header file.
11105         (struct builtin_info): New fields.
11106         (classify_builtin_1): Compute and record base and offset parts for
11107         memset builtin partition by calling strip_offset.
11108         (offset_cmp, fuse_memset_builtins): New functions.
11109         (finalize_partitions): Fuse adjacent memset partitions by calling
11110         above function.
11111         * tree-ssa-loop-ivopts.c (strip_offset): Delete static declaration.
11112         Expose the interface.
11113         * tree-ssa-loop-ivopts.h (strip_offset): New declaration.
11114
11115 2017-10-18  Bin Cheng  <bin.cheng@arm.com>
11116
11117         PR tree-optimization/82574
11118         * tree-loop-distribution.c (find_single_drs): New parameter.  Check
11119         that data reference must be executed exactly once per iteration
11120         against the outermost loop in nest.
11121         (classify_partition): Update call to above function.
11122
11123 2017-10-18  Richard Biener  <rguenther@suse.de>
11124
11125         PR tree-optimization/82591
11126         * graphite.c (graphite_transform_loops): Move code gen message
11127         printing ...
11128         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
11129         Here.  Handle scop_to_isl_ast failing.
11130         (scop_to_isl_ast): Limit the number of ISL operations.
11131
11132 2017-10-18  Richard Biener  <rguenther@suse.de>
11133
11134         * graphite-isl-ast-to-gimple.c
11135         (translate_isl_ast_to_gimple::set_rename): Simplify.
11136         (translate_isl_ast_to_gimple::set_rename_for_each_def): Inline...
11137         (graphite_copy_stmts_from_block): ... here.
11138         (copy_bb_and_scalar_dependences): Simplify.
11139         (add_parameters_to_ivs_params): Canonicalize.
11140         (generate_entry_out_of_ssa_copies): Simplify.
11141         * graphite-sese-to-poly.c (extract_affine_name): Simplify
11142         by passing in ISL dimension.
11143         (parameter_index_in_region_1): Rename to ...
11144         (parameter_index_in_region): ... this.
11145         (extract_affine): Adjust assert, pass down parameter index.
11146         (add_param_constraints): Use range-info when available.
11147         (build_scop_context): Adjust.
11148         * sese.c (new_sese_info): Adjust.
11149         (free_sese_info): Likewise.
11150         * sese.h (bb_map_t, rename_map_t, phi_rename, init_back_edge_pair_t):
11151         Remove unused typedefs.
11152         (struct sese_info_t): Simplify rename_map, remove incomplete_phis.
11153
11154 2017-10-18  Martin Liska  <mliska@suse.cz>
11155
11156         * combine.c (simplify_compare_const): Add gcc_fallthrough.
11157
11158 2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
11159
11160         * config/s390/s390.c (s390_bb_fallthru_entry_likely): New function.
11161         (s390_sched_init): Do not reset s390_sched_state if we entered the
11162         current basic block via a fallthru edge and all others are unlikely.
11163
11164 2017-10-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
11165
11166         * config/s390/s390.c (NUM_SIDES): New variable.
11167         (LONGRUNNING_THRESHOLD): New variable.
11168         (LATENCY_FACTOR): New variable.
11169         (s390_sched_score): Decrease score for long-running instructions on
11170         wrong side.
11171         (s390_sched_variable_issue): Perform bookkeeping for long-running
11172         instructions.
11173
11174 2017-10-18  Richard Biener  <rguenther@suse.de>
11175
11176         * graphite-isl-ast-to-gimple.c (gcc_expression_from_isl_ast_expr_id):
11177         Simplify with removal of the parameter rename map.
11178         (set_rename): Likewise.
11179         (should_copy_to_new_region): Likewise.
11180         (graphite_copy_stmts_from_block): Likewise.
11181         (copy_bb_and_scalar_dependences): Remove initialization of
11182         unused copied_bb_map.
11183         (copy_def): Remove.
11184         (copy_internal_parameters): Likewise.
11185         (graphite_regenerate_ast_isl): Do not call copy_internal_parameters.
11186         * graphite-scop-detection.c (scop_detection::stmt_simple_for_scop_p):
11187         Use INTEGRAL_TYPE_P.
11188         (parameter_index_in_region_1): Rename to ...
11189         (assign_parameter_index_in_region): ... this.  Assert we have
11190         a parameter we handle.
11191         (scan_tree_for_params): Adjust.
11192         * sese.h (parameter_rename_map_t): Remove.
11193         (struct sese_info_t): Remove unused parameter_rename_map and
11194         copied_bb_map members.
11195         * sese.c (new_sese_info): Adjust.
11196         (free_sese_info): Likewise.
11197
11198 2017-10-18  Martin Liska  <mliska@suse.cz>
11199
11200         PR sanitizer/82545
11201         * asan.c (asan_expand_poison_ifn): Do not put gimple stmt
11202         on an abnormal edge.
11203
11204 2017-10-18  Sebastian Huber  <sebastian.huber@embedded-brains.de>
11205
11206         * doc/invoke.texi (ffunction-sections and fdata-sections):
11207         Update.
11208
11209 2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
11210
11211         * tree-ssa-loop-ivopts.c (add_autoinc_candidates): Bail out only if
11212         the use statement can throw internally.
11213
11214 2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
11215
11216         * config/visium/visium.c (visium_select_cc_mode): Return CCmode for
11217         any RTX present on the RHS of a SET.
11218         * compare-elim.c (try_eliminate_compare): Restore comment.
11219
11220 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
11221
11222         * langhooks.h (struct lang_hooks): Document that tree_size langhook
11223         may be also called on tcc_type nodes.
11224         * langhooks.c (lhd_tree_size): Likewise.
11225
11226 2017-10-17  David Malcolm  <dmalcolm@redhat.com>
11227
11228         * gimple-ssa-sprintf.c (fmtwarn): Update for changed signature of
11229         format_warning_at_substring.
11230         (maybe_warn): Convert source_range * param to a location_t.  Pass
11231         UNKNOWN_LOCATION rather than NULL to fmtwarn.
11232         (format_directive): Remove code to extract source_ranges and
11233         source_range * in favor of just a location_t.
11234         (parse_directive): Pass UNKNOWN_LOCATION rather than NULL to
11235         fmtwarn.
11236         * substring-locations.c (format_warning_va): Convert
11237         source_range * param to a location_t.
11238         (format_warning_at_substring): Likewise.
11239         * substring-locations.h (format_warning_va): Likewise.
11240         (format_warning_at_substring): Likewise.
11241
11242 2017-10-17  Jan Hubicka  <hubicka@ucw.cz>
11243
11244         * target.h (enum vect_cost_for_stmt): Add vec_gather_load and
11245         vec_scatter_store
11246         * tree-vect-stmts.c (record_stmt_cost): Make difference between normal
11247         and scatter/gather ops.
11248
11249         * aarch64/aarch64.c (aarch64_builtin_vectorization_cost): Add
11250         vec_gather_load and vec_scatter_store.
11251         * arm/arm.c (arm_builtin_vectorization_cost): Likewise.
11252         * powerpcspe/powerpcspe.c (rs6000_builtin_vectorization_cost): Likewise.
11253         * rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Likewise.
11254         * s390/s390.c (s390_builtin_vectorization_cost): Likewise.
11255         * spu/spu.c (spu_builtin_vectorization_cost): Likewise.
11256         * i386/i386.c (x86_builtin_vectorization_cost): Likewise.
11257
11258 2017-10-17  Uros Bizjak  <ubizjak@gmail.com>
11259
11260         * reg-stack.c (compare_for_stack_reg): Add bool argument.
11261         Detect FTST instruction and handle its register pops.  Only pop
11262         second operand if can_pop_second_op is true.
11263         (subst_stack_regs_pat) <case COMPARE>: Detect FCOMI instruction to
11264         set can_pop_second_op to false in the compare_for_stack_reg call.
11265
11266         * config/i386/i386.md (*cmpi<FPCMP:unord><MODEF:mode>): Only call
11267         output_fp_compare for stack register operands.
11268         * config/i386/i386.c (output_fp_compare): Do not output SSE compare
11269         instructions here.  Do not emit stack register pops here.  Assert
11270         that FCOMPP pops next to top stack register.  Rewrite function.
11271
11272 2017-10-17  Nathan Sidwell  <nathan@acm.org>
11273
11274         PR middle-end/82577
11275         * alias.c (compare_base_decls): Check HAS_DECL_ASSEMBLER_NAME_P,
11276         use DECL_ASSEMBLER_NAME_RAW.
11277
11278         PR middle-end/82546
11279         * tree.c (tree_code_size): Reformat.  Punt to lang hook for unknown
11280         TYPE nodes.
11281
11282 2017-10-17  Qing Zhao <qing.zhao@oracle.com>
11283             Wilco Dijkstra <wilco.dijkstra@arm.com>
11284
11285         * builtins.c (expand_builtin_update_setjmp_buf): Add a
11286         converstion to Pmode from the buf_addr.
11287
11288 2017-10-17  Richard Biener  <rguenther@suse.de>
11289
11290         * graphite-dependences.c (scop_get_reads_and_writes): Change
11291         output parameters to references.
11292
11293 2017-10-17  Jackson Woodruff  <jackson.woodruff@arm.com>
11294
11295         PR 71026/tree-optimization
11296         * fold-const.c (distribute_real_division): Removed.
11297         (fold_binary_loc): Remove calls to distribute_real_divison.
11298
11299 2017-10-17  Richard Biener  <rguenther@suse.de>
11300
11301         * graphite-scop-detection.c
11302         (scop_detection::stmt_has_simple_data_refs_p): Always use
11303         the full nest as region.
11304         (try_generate_gimple_bb): Likewise.
11305         * sese.c (scalar_evolution_in_region): Simplify now that
11306         SCEV can handle instantiation in regions.
11307         * tree-scalar-evolution.c (instantiate_scev_name): Also instantiate
11308         in the non-loop part of a function if requested.
11309
11310 2017-10-17  Richard Biener  <rguenther@suse.de>
11311
11312         PR tree-optimization/82563
11313         * graphite-isl-ast-to-gimple.c (generate_entry_out_of_ssa_copies):
11314         New function.
11315         (graphite_regenerate_ast_isl): Call it.
11316         * graphite-scop-detection.c (build_scops): Remove entry edge split.
11317
11318 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
11319
11320         PR tree-optimization/82549
11321         * fold-const.c (optimize_bit_field_compare, fold_truth_andor_1):
11322         Formatting fixes.  Instead of calling make_bit_field_ref with negative
11323         bitpos return 0.
11324
11325 2017-10-17  Olga Makhotina  <olga.makhotina@intel.com>
11326
11327         * config/i386/avx512dqintrin.h (_mm_mask_reduce_sd,
11328         _mm_maskz_reduce_sd, _mm_mask_reduce_ss,=20
11329         _mm_maskz_reduce_ss): New.
11330         * config/i386/i386-builtin.def (__builtin_ia32_reducesd_mask,
11331         __builtin_ia32_reducess_mask): Ditto..
11332         (__builtin_ia32_reducesd, __builtin_ia32_reducess): Remove.
11333         * config/i386/sse.md (reduces<mode>): Renamed to ...
11334         (reduces<mode><mask_scalar_name>): ... this.
11335         (vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}):
11336         Changed to ...
11337         (vreduce<ssescalarmodesuffix>\t{%3, %2, %1, %0<mask_scalar_operand4>|
11338         %0<mask_scalar_operand4>, %1, %2, %3}): ... this.
11339
11340 2017-10-16  David Malcolm  <dmalcolm@redhat.com>
11341
11342         * Makefile.in (OBJS): Add unique-ptr-tests.o.
11343         * selftest-run-tests.c (selftest::run_tests): Call
11344         selftest::unique_ptr_tests_cc_tests.
11345         * selftest.h (selftest::unique_ptr_tests_cc_tests): New decl.
11346         * unique-ptr-tests.cc: New file.
11347
11348 2017-10-16  Vladimir Makarov  <vmakarov@redhat.com>
11349
11350         PR sanitizer/82353
11351         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
11352         locations.
11353         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
11354         (make_hard_regno_born, make_hard_regno_dead): Update
11355         bb_killed_pseudos and bb_gen_pseudos for fixed regs.
11356
11357 2017-10-16  Jeff Law  <law@redhat.com>
11358
11359         * tree-ssa-dse.c (live_bytes_read): Fix thinko.
11360
11361 2017-10-16  Jan Hubicka  <hubicka@ucw.cz>
11362
11363         * x86-tune-costs.h (znver1_cost): Fix move cost tables.
11364
11365 2017-10-16  Olivier Hainque  <hainque@adacore.com>
11366
11367         * gcc/config.gcc (powerpc*-*-*spe*): Pick 8548 as the default
11368         with_cpu if we were configured for an e500v2 target cpu name.
11369
11370 2017-10-16  Thomas Preud'homme  <thomas.preudhomme@arm.com>
11371
11372         * config/arm/arm-cpus.in (cortex-m33): Add nodsp option.
11373         * doc/invoke.texi: Document +nodsp as a valid extension for
11374         -mcpu=cortex-m33.
11375
11376 2017-10-16  Martin Liska  <mliska@suse.cz>
11377
11378         * sbitmap.c (bitmap_bit_in_range_p_checking): New function.
11379         (test_set_range): Likewise.
11380         (test_range_functions): Rename to ...
11381         (test_bit_in_range): ... this.
11382         (sbitmap_c_tests): Add new test.
11383
11384 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11385
11386         * config/aarch64/arm_neon.h (vdot_u32, vdotq_u32, vdot_s32, vdotq_s32):
11387         New.
11388         (vdot_lane_u32, vdot_laneq_u32, vdotq_lane_u32, vdotq_laneq_u32): New.
11389         (vdot_lane_s32, vdot_laneq_s32, vdotq_lane_s32, vdotq_laneq_s32): New.
11390
11391 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11392
11393         * config/aarch64/aarch64-builtins.c
11394         (aarch64_types_quadopu_lane_qualifiers): New.
11395         (TYPES_QUADOPU_LANE): New.
11396         * config/aarch64/aarch64-simd.md (aarch64_<sur>dot<vsi2qi>): New.
11397         (<sur>dot_prod<vsi2qi>, aarch64_<sur>dot_lane<vsi2qi>): New.
11398         (aarch64_<sur>dot_laneq<vsi2qi>): New.
11399         * config/aarch64/aarch64-simd-builtins.def (sdot, udot): New.
11400         (sdot_lane, udot_lane, sdot_laneq, udot_laneq): New.
11401         * config/aarch64/iterators.md (sur): Add UNSPEC_SDOT, UNSPEC_UDOT.
11402         (Vdottype, DOTPROD): New.
11403         (sur): Add SDOT and UDOT.
11404
11405 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11406
11407         * config/aarch64/aarch64.h (AARCH64_FL_DOTPROD): New.
11408         (AARCH64_ISA_DOTPROD, TARGET_DOTPROD): New.
11409         * config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins):
11410         Add TARGET_DOTPROD.
11411         * config/aarch64/aarch64-option-extensions.def (dotprod): New.
11412         * config/aarch64/aarch64-cores.def (cortex-a55, cortex-a75):
11413         Enable TARGET_DOTPROD.
11414         (cortex-a75.cortex-a55): Likewise.
11415         * doc/invoke.texi (aarch64-feature-modifiers): Document dotprod.
11416
11417 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11418
11419         * config/arm/arm-builtins.c (arm_unsigned_uternop_qualifiers): New.
11420         (UTERNOP_QUALIFIERS, arm_umac_lane_qualifiers, UMAC_LANE_QUALIFIERS):
11421         New.
11422         * config/arm/arm_neon_builtins.def (sdot, udot, sdot_lane, udot_lane):
11423         New.
11424         * config/arm/iterators.md (DOTPROD, VSI2QI, vsi2qi): New.
11425         (UNSPEC_DOT_S, UNSPEC_DOT_U, opsuffix): New.
11426         * config/arm/neon.md (neon_<sup>dot<vsi2qi>): New.
11427         (neon_<sup>dot_lane<vsi2qi>, <sup>dot_prod<vsi2qi>): New.
11428         * config/arm/types.md (neon_dot, neon_dot_q): New.
11429         * config/arm/unspecs.md (sup): Add UNSPEC_DOT_S, UNSPEC_DOT_U.
11430
11431 2017-10-16  Tamar Christina  <tamar.christina@arm.com>
11432
11433         * config/arm/arm.h (TARGET_DOTPROD): New.
11434         * config/arm/arm.c (arm_arch_dotprod): New.
11435         (arm_option_reconfigure_globals): Add arm_arch_dotprod.
11436         * config/arm/arm-c.c (__ARM_FEATURE_DOTPROD): New.
11437         * config/arm/arm-cpus.in (armv8.2-a): Enabled +dotprod.
11438         (feature dotprod, group dotprod, ALL_SIMD_INTERNAL): New.
11439         (ALL_FPU_INTERNAL): Use ALL_SIMD_INTERNAL.
11440         * config/arm/t-multilib (v8_2_a_simd_variants): Add dotprod.
11441         * doc/invoke.texi (armv8.2-a): Document dotprod
11442
11443 2017-10-14  Jan Hubicka  <hubicka@ucw.cz>
11444
11445         * i386.c (ix86_vec_cost): New function.
11446         (ix86_rtx_costs): Handle vector operations better.
11447         * i386.h (struct processor_costs): Add sse_op, fmasd, fmass.
11448         * x86-tune-costs.h: Add new costs to all tables.
11449
11450 2017-10-14  Jan Hubicka  <hubicka@ucw.cz>
11451
11452         * i386.c (ix86_rtx_costs): Make difference between x87 and SSE
11453         operations.
11454         * i386.h (struct processor_costs): Add addss, mulss, mulsd, divss,
11455         divsd, sqrtss and sqrtsd
11456         * x86-tune-costs.h: Add new entries to all costs.
11457         (znver1_cost): Fix to match real instruction latencies.
11458
11459 2017-10-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
11460             Michael Collison <michael.collison@arm.com>
11461
11462         * compare-elim.c: Include emit-rtl.h.
11463         (can_merge_compare_into_arith): New function.
11464         (try_validate_parallel): Likewise.
11465         (try_merge_compare): Likewise.
11466         (try_eliminate_compare): Call the above when no previous clobber
11467         is available.
11468         (execute_compare_elim_after_reload): Add DF_UD_CHAIN and DF_DU_CHAIN
11469         dataflow problems.
11470
11471 2017-10-14  Jakub Jelinek  <jakub@redhat.com>
11472
11473         PR middle-end/62263
11474         PR middle-end/82498
11475         * tree-ssa-phiopt.c (value_replacement): Comment fix.  Handle
11476         up to 2 preparation statements for ASSIGN in MIDDLE_BB.
11477
11478         PR middle-end/62263
11479         PR middle-end/82498
11480         * tree-ssa-forwprop.c (simplify_rotate): Allow def_arg1[N]
11481         to be any operand_equal_p operands.  For & (B - 1) require
11482         B to be power of 2.  Recognize
11483         (X << (Y & (B - 1))) | (X >> ((-Y) & (B - 1))) and similar patterns.
11484
11485 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
11486
11487         PR bootstrap/82553
11488         * optabs.c (expand_memory_blockage): Fix call of
11489         targetm.have_memory_blockage.
11490
11491 2017-10-14  Jakub Jelinek  <jakub@redhat.com>
11492
11493         PR bootstrap/82548
11494         * config.gcc (*-*-solaris2*, i[34567]86-*-cygwin*,
11495         x86_64-*-cygwin*, i[34567]86-*-mingw* | x86_64-*-mingw*): Append
11496         objects to extra_objs instead of overwriting it.
11497
11498 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
11499
11500         * config/i386/sync.md (FILD_ATOMIC/FIST_ATOMIC FP load peephole2):
11501         Use any_fp_register_operand as operand[3] predicate.  Simplify
11502         equality test for operands[2] and operands[4] memory location.
11503         (LDX_ATOMIC/STX_ATOMIC FP load peephole2): Ditto.
11504         (FILD_ATOMIC/FIST_ATOMIC FP load peephole2 with mem blockage): New.
11505         (LDX_ATOMIC/LDX_ATOMIC FP load peephole2 with mem blockage): Ditto.
11506         (FILD_ATOMIC/FIST_ATOMIC FP store peephole2): Use
11507         any_fp_register_operand as operand[1] predicate.  Simplify
11508         equality test for operands[0] and operands[3] memory location.
11509         (LDX_ATOMIC/STX_ATOMIC FP store peephole2): Ditto.
11510         (FILD_ATOMIC/FIST_ATOMIC FP store peephole2 with mem blockage): New.
11511         (LDX_ATOMIC/LDX_ATOMIC FP storepeephole2 with mem blockage): Ditto.
11512
11513 2017-10-14  Uros Bizjak  <ubizjak@gmail.com>
11514
11515         * target-insns.def: Add memory_blockage.
11516         * optabs.c (expand_memory_blockage): New function.
11517         (expand_asm_memory_barrier): Rename ...
11518         (expand_asm_memory_blockage): ... to this.
11519         (expand_mem_thread_fence): Call expand_memory_blockage
11520         instead of expand_asm_memory_barrier.
11521         (expand_mem_singnal_fence): Ditto.
11522         (expand_atomic_load): Ditto.
11523         (expand_atomic_store): Ditto.
11524         * doc/md.texi (Standard Pattern Names For Generation):
11525         Document memory_blockage instruction pattern.
11526
11527 2017-10-13  Sebastian Perta  <sebastian.perta@renesas.com>
11528
11529         * config/rl78/rl78.c (rl78_emit_libcall): New function.
11530         * config/rl78/rl78-protos.h (rl78_emit_libcall): New function.
11531         * config/rl78/rl78.md: New define_expand "adddi3".
11532
11533 2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
11534
11535         * cfghooks.c (verify_flow_info): Disable check that all probabilities
11536         are set correctly.
11537
11538 2017-10-13  Jeff Law  <law@redhat.com>
11539
11540         * tree-ssa-reassoc.c (reassociate_bb): Clarify code slighly.
11541
11542 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
11543
11544         PR target/82274
11545         * internal-fn.c (expand_mul_overflow): If both operands have
11546         the same highpart of -1 or 0 and the topmost bit of lowpart
11547         is different, overflow is if res <= 0 rather than res < 0.
11548
11549 2017-10-13  Pat Haugen  <pthaugen@us.ibm.com>
11550
11551         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost): Remove
11552         TARGET_P9_VECTOR code for unaligned_load case.
11553
11554 2017-10-13  Jan Hubicka  <hubicka@ucw.cz>
11555
11556         * cfghooks.c (verify_flow_info): Check that edge probabilities are set.
11557
11558 2017-10-13  Nathan Sidwell  <nathan@acm.org>
11559
11560         * tree-core.h (tree_contains_struct): Make bool.
11561         * tree.c (tree_contains_struct): Likewise.
11562         * tree.h (MARK_TS_BASE): Remove do ... while (0) idiom.
11563         (MARK_TS_TYPED, MARK_TS_COMMON, MARK_TS_TYPE_COMMON,
11564         MARK_TS_TYPE_WITH_LANG_SPECIFIC, MARK_TS_DECL_MINIMAL,
11565         MARK_TS_DECL_COMMON, MARK_TS_DECL_WRTL, MARK_TS_DECL_WITH_VIS,
11566         MARK_TS_DECL_NON_COMMON): Likewise, use comma operator.
11567
11568 2017-10-13  Richard Biener  <rguenther@suse.de>
11569
11570         * graphite-isl-ast-to-gimple.c
11571         (translate_isl_ast_to_gimple::get_rename_from_scev): Remove unused
11572         parameters and dominance check.
11573         (translate_isl_ast_to_gimple::graphite_copy_stmts_from_block): Adjust.
11574         (translate_isl_ast_to_gimple::copy_bb_and_scalar_dependences): Likewise.
11575         (translate_isl_ast_to_gimple::graphite_regenerate_ast_isl):
11576         Do not update SSA form here or do intermediate IL verification.
11577         * graphite.c: Include tree-ssa.h and tree-into-ssa.h.
11578         (graphite_initialize): Remove check on the number of loops in
11579         the function and inline into graphite_transform_loops.
11580         (graphite_finalize): Inline into graphite_transform_loops.
11581         (graphite_transform_loops): Perform SSA update and IL verification
11582         here.
11583         * params.def (PARAM_GRAPHITE_MIN_LOOPS_PER_FUNCTION): Remove.
11584
11585 2017-10-13  Richard Biener  <rguenther@suse.de>
11586
11587         * graphite-isl-ast-to-gimple.c (max_mode_int_precision,
11588         graphite_expression_type_precision): Avoid global constructor
11589         by moving ...
11590         (translate_isl_ast_to_gimple::translate_isl_ast_to_gimple): Here.
11591         (translate_isl_ast_to_gimple::graphite_expr_type): Add type member.
11592         (translate_isl_ast_to_gimple::translate_isl_ast_node_for): Use it.
11593         (translate_isl_ast_to_gimple::build_iv_mapping): Likewise.
11594         (translate_isl_ast_to_gimple::graphite_create_new_guard): Likewise.
11595         * graphite-sese-to-poly.c (build_original_schedule): Return nothing.
11596
11597 2017-10-13  H.J. Lu  <hongjiu.lu@intel.com>
11598
11599         PR target/82499
11600         * config/i386/i386.h (ix86_red_zone_size): New.
11601         * config/i386/i386.md (push peephole2s): Replace
11602         "!ix86_using_red_zone ()" with "ix86_red_zone_size == 0".
11603
11604 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11605             Alan Hayward  <alan.hayward@arm.com>
11606             David Sherwood  <david.sherwood@arm.com>
11607
11608         * combine.c (can_change_dest_mode): Reject changes in
11609         REGMODE_NATURAL_SIZE.
11610
11611 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11612             Alan Hayward  <alan.hayward@arm.com>
11613             David Sherwood  <david.sherwood@arm.com>
11614
11615         * cfgexpand.c (expand_debug_expr): Use GET_MODE_UNIT_BITSIZE.
11616         (expand_debug_source_expr): Likewise.
11617         * combine.c (combine_simplify_rtx): Likewise.
11618         * cse.c (fold_rtx): Likewise.
11619         * fwprop.c (canonicalize_address): Likewise.
11620         * targhooks.c (default_shift_truncation_mask): Likewise.
11621
11622 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11623             Alan Hayward  <alan.hayward@arm.com>
11624             David Sherwood  <david.sherwood@arm.com>
11625
11626         * optabs.c (add_equal_note): Use GET_MODE_UNIT_SIZE.
11627         (widened_mode): Likewise.
11628         (expand_unop): Likewise.
11629         * ree.c (transform_ifelse): Likewise.
11630         (merge_def_and_ext): Likewise.
11631         (combine_reaching_defs): Likewise.
11632         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
11633
11634 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11635             Alan Hayward  <alan.hayward@arm.com>
11636             David Sherwood  <david.sherwood@arm.com>
11637
11638         * caller-save.c (replace_reg_with_saved_mem): Use byte_lowpart_offset.
11639         * combine.c (gen_lowpart_for_combine): Likewise.
11640         * dwarf2out.c (rtl_for_decl_location): Likewise.
11641         * final.c (alter_subreg): Likewise.
11642         * rtlhooks.c (gen_lowpart_general): Likewise.
11643         (gen_lowpart_if_possible): Likewise.
11644
11645 2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
11646             Alan Hayward  <alan.hayward@arm.com>
11647             David Sherwood  <david.sherwood@arm.com>
11648
11649         * calls.c (expand_call): Use subreg_lowpart_offset.
11650         * cse.c (cse_insn): Likewise.
11651         * regcprop.c (copy_value): Likewise.
11652         (copyprop_hardreg_forward_1): Likewise.
11653
11654 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
11655
11656         PR target/82524
11657         * config/i386/i386.md (addqi_ext_1, andqi_ext_1,
11658         *andqi_ext_1_cc, *<code>qi_ext_1, *xorqi_ext_1_cc): Change
11659         =Q constraints to +Q and into insn condition add check
11660         that operands[0] and operands[1] are equal.
11661         (*addqi_ext_2, *andqi_ext_2, *<code>qi_ext_2): Change
11662         =Q constraints to +Q and into insn condition add check
11663         that operands[0] is equal to either operands[1] or operands[2].
11664
11665         PR target/82498
11666         * fold-const.c (fold_binary_loc) <bit_rotate>: Code cleanups,
11667         instead of handling MINUS_EXPR twice (once for each argument),
11668         canonicalize operand order and handle just once, use rtype where
11669         possible.  Handle (A << B) | (A >> (-B & (Z - 1))).
11670
11671         PR target/82498
11672         * config/i386/ia32intrin.h (__rold, __rord, __rolq, __rorq): Allow
11673         any values of __C while still being pattern recognizable as a simple
11674         rotate instruction.
11675
11676 2017-10-13  Richard Biener  <rguenther@suse.de>
11677
11678         PR tree-optimization/82451
11679         Revert
11680         2017-10-02  Richard Biener  <rguenther@suse.de>
11681
11682         PR tree-optimization/82355
11683         * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
11684         a mapping for the enclosing loop but avoid generating one for
11685         the loop tree root.
11686         (copy_bb_and_scalar_dependences): Remove premature codegen
11687         error on PHIs in blocks duplicated into multiple places.
11688         * graphite-scop-detection.c
11689         (scop_detection::stmt_has_simple_data_refs_p): For a loop not
11690         in the region use it as loop and nest to analyze the DR in.
11691         (try_generate_gimple_bb): Likewise.
11692         * graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
11693         (add_loop_constraints): For blocks in a loop not in the region
11694         create a dimension with a single iteration.
11695         * sese.h (gbb_loop_at_index): Remove assert.
11696
11697         * cfgloop.c (loop_preheader_edge): For the loop tree root
11698         return the single successor of the entry block.
11699         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
11700         Reset the SCEV hashtable and niters.
11701         * graphite-scop-detection.c
11702         (scop_detection::graphite_can_represent_scev): Add SCOP parameter,
11703         assert that we only have POLYNOMIAL_CHREC that vary in loops
11704         contained in the region.
11705         (scop_detection::graphite_can_represent_expr): Adjust.
11706         (scop_detection::stmt_has_simple_data_refs_p): For loops
11707         not in the region set loop to NULL.  The nest is now the
11708         entry edge to the region.
11709         (try_generate_gimple_bb): Likewise.
11710         * sese.c (scalar_evolution_in_region): Adjust for
11711         instantiate_scev change.
11712         * tree-data-ref.h (graphite_find_data_references_in_stmt):
11713         Make nest parameter the edge into the region.
11714         (create_data_ref): Likewise.
11715         * tree-data-ref.c (dr_analyze_indices): Make nest parameter an
11716         entry edge into a region and adjust instantiate_scev calls.
11717         (create_data_ref): Likewise.
11718         (graphite_find_data_references_in_stmt): Likewise.
11719         (find_data_references_in_stmt): Pass the loop preheader edge
11720         from the nest argument.
11721         * tree-scalar-evolution.h (instantiate_scev): Make instantiate_below
11722         parameter the edge into the region.
11723         (instantiate_parameters): Use the loop preheader edge as entry.
11724         * tree-scalar-evolution.c (analyze_scalar_evolution): Handle
11725         NULL loop.
11726         (get_instantiated_value_entry): Make instantiate_below parameter
11727         the edge into the region.
11728         (instantiate_scev_name): Likewise.  Adjust dominance checks,
11729         when we cannot use loop-based instantiation instantiate by
11730         walking use-def chains.
11731         (instantiate_scev_poly): Adjust.
11732         (instantiate_scev_binary): Likewise.
11733         (instantiate_scev_convert): Likewise.
11734         (instantiate_scev_not): Likewise.
11735         (instantiate_array_ref): Remove.
11736         (instantiate_scev_3): Likewise.
11737         (instantiate_scev_2): Likewise.
11738         (instantiate_scev_1): Likewise.
11739         (instantiate_scev_r): Do not blindly handle N-operand trees.
11740         Do not instantiate array-refs.  Handle all constants and invariants.
11741         (instantiate_scev): Make instantiate_below parameter
11742         the edge into the region.
11743         (resolve_mixers): Use the loop preheader edge for the region
11744         parameter to instantiate_scev_r.
11745         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Adjust.
11746
11747 2017-10-13  Richard Biener  <rguenther@suse.de>
11748
11749         PR tree-optimization/82525
11750         * graphite-isl-ast-to-gimple.c
11751         (translate_isl_ast_to_gimple::widest_int_from_isl_expr_int): Split
11752         out from ...
11753         (translate_isl_ast_to_gimple::gcc_expression_from_isl_expr_int): Here.
11754         Fail code generation when we cannot represent the isl integer.
11755         (binary_op_to_tree): Elide modulo operations that are no-ops
11756         in the type we code generate.  Remove now superfluous code
11757         generation errors.
11758
11759 2017-10-13  Richard Biener  <rguenther@suse.de>
11760
11761         * graphite-scop-detection.c (loop_ivs_can_be_represented): Remove.
11762         (scop_detection::harmful_loop_in_region): Remove premature
11763         IV type restriction.
11764         (scop_detection::graphite_can_represent_scev): We can handle
11765         pointer IVs just fine.
11766
11767 2017-10-13  Alan Modra  <amodra@gmail.com>
11768
11769         * doc/extend.texi (Extended Asm <Clobbers>): Rename to
11770         "Clobbers and Scratch Registers".  Add paragraph on
11771         alternative to clobbers for scratch registers and OpenBLAS
11772         example.
11773
11774 2017-10-13  Alan Modra  <amodra@gmail.com>
11775
11776         * doc/extend.texi (Clobbers): Correct vax example.  Delete old
11777         example of a memory input for a string of known length.  Move
11778         commentary out of table.  Add a number of new examples
11779         covering array memory inputs.
11780
11781 2017-10-12  Martin Liska  <mliska@suse.cz>
11782
11783         PR tree-optimization/82493
11784         * sbitmap.c (bitmap_bit_in_range_p): Fix the implementation.
11785         (test_range_functions): New function.
11786         (sbitmap_c_tests): Likewise.
11787         * selftest-run-tests.c (selftest::run_tests): Run new tests.
11788         * selftest.h (sbitmap_c_tests): New function.
11789
11790         * tree-ssa-dse.c (live_bytes_read): Fix thinko.
11791
11792 2017-10-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
11793
11794         * config/rs6000/amo.h: Fix spacing issue.
11795
11796 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
11797
11798         PR target/82498
11799         * config/i386/i386.md (*ashl<mode>3_mask_1,
11800         *<shift_insn><mode>3_mask_1, *<rotate_insn><mode>3_mask_1,
11801         *<btsc><mode>_mask_1, *btr<mode>_mask_1): New define_insn_and_split
11802         patterns.
11803
11804 2017-10-12  Jan Hubicka  <hubicka@ucw.cz>
11805
11806         * profile-count.h (safe_scale_64bit): Fix GCC4.x path.
11807         (profile_probability): Set max_probability
11808         to (uint32_t) 1 << (n_bits - 2) and update accessors to avoid overlfows
11809         in temporaries.
11810         * profile-count.c (profile_probability::differs_from_p): Do not
11811         rely on max_probaiblity == 10000
11812
11813 2017-10-12  Jeff Law  <law@redhat.com>
11814
11815         * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with
11816         negative offsets.
11817
11818 2017-10-12  Martin Sebor  <msebor@redhat.com>
11819
11820         PR other/82301
11821         PR c/82435
11822         * cgraphunit.c (maybe_diag_incompatible_alias): New function.
11823         (handle_alias_pairs): Call it.
11824         * common.opt (-Wattribute-alias): New option.
11825         * doc/extend.texi (ifunc attribute): Discuss C++ specifics.
11826         * doc/invoke.texi (-Wattribute-alias): Document.
11827
11828 2017-10-12  Vladimir Makarov  <vmakarov@redhat.com>
11829
11830         Revert
11831         2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
11832         PR sanitizer/82353
11833         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
11834         locations.
11835         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
11836         (make_hard_regno_born, make_hard_regno_dead): Update
11837         bb_killed_pseudos and bb_gen_pseudos.
11838
11839 2017-10-12  Jan Hubicka  <hubicka@ucw.cz>
11840
11841         * config/i386/x86-tune-sched.c (ix86_adjust_cost): Fix Zen support.
11842
11843 2017-10-12  Uros Bizjak  <ubizjak@gmail.com>
11844
11845         * config/alpha/alpha.c (alpha_split_conditional_move):
11846         Use std::swap instead of manually swapping.
11847         (alpha_stdarg_optimize_hook): Ditto.
11848         (alpha_canonicalize_comparison): Ditto.
11849
11850 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
11851
11852         * tree-loop-distribution.c (struct builtin_info): New struct.
11853         (struct partition): Refactor fields into struct builtin_info.
11854         (partition_free): Free struct builtin_info.
11855         (build_size_arg_loc, build_addr_arg_loc): Delete.
11856         (generate_memset_builtin, generate_memcpy_builtin): Get memory range
11857         information from struct builtin_info.
11858         (find_single_drs): New function refactored from classify_partition.
11859         Also moved builtin validity checks to this function.
11860         (compute_access_range, alloc_builtin): New functions.
11861         (classify_builtin_st, classify_builtin_ldst): New functions.
11862         (classify_partition): Refactor code into functions find_single_drs,
11863         classify_builtin_st and classify_builtin_ldst.
11864         (distribute_loop): Don't do runtime alias check when distributing
11865         loop nest.
11866         (find_seed_stmts_for_distribution): New function.
11867         (pass_loop_distribution::execute): Refactor code finding seed
11868         stmts into above function.  Support distribution for the innermost
11869         two-level loop nest.  Adjust dump information.
11870
11871 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
11872
11873         * tree-loop-distribution.c: Adjust the general comment.
11874         (NUM_PARTITION_THRESHOLD): New macro.
11875         (ssa_name_has_uses_outside_loop_p): Support loop nest distribution.
11876         (classify_partition): Skip builtin pattern of loop nest's inner loop.
11877         (merge_dep_scc_partitions): New parameter ignore_alias_p and use it
11878         in call to build_partition_graph.
11879         (finalize_partitions): New parameter.  Make loop distribution more
11880         conservative by fusing more partitions.
11881         (distribute_loop): Don't do runtime alias check in case of loop nest
11882         distribution.
11883         (find_seed_stmts_for_distribution): New function.
11884         (prepare_perfect_loop_nest): New function.
11885         (pass_loop_distribution::execute): Refactor code finding seed stmts
11886         and loop nest into above functions.  Support loop nest distribution.
11887         Adjust dump information accordingly.
11888
11889 2017-10-12  Bin Cheng  <bin.cheng@arm.com>
11890
11891         * tree-loop-distribution.c (break_alias_scc_partitions): Add comment
11892         and set PTYPE_SEQUENTIAL for merged partition.
11893
11894 2017-10-12  Richard Biener  <rguenther@suse.de>
11895
11896         PR tree-optimization/69728
11897         Revert
11898         2017-09-19  Richard Biener  <rguenther@suse.de>
11899
11900         PR tree-optimization/69728
11901         * graphite-sese-to-poly.c (schedule_error): New global.
11902         (add_loop_schedule): Handle empty domain by failing the
11903         schedule.
11904         (build_original_schedule): Handle schedule_error.
11905
11906         * graphite-sese-to-poly.c (add_loop_schedule): Handle empty
11907         domain by returning an unchanged schedule.
11908
11909 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
11910
11911         * genrecog.c (validate_pattern): For VEC_SELECT verify that
11912         CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1.
11913
11914 2017-10-12  Aldy Hernandez  <aldyh@redhat.com>
11915
11916         * Makefile.in (TAGS): Merge all the *.def files into one pattern.
11917         Handle params.def.
11918
11919 2017-10-12  Jakub Jelinek  <jakub@redhat.com>
11920
11921         PR c++/82159
11922         * expr.c (store_field): Don't optimize away bitsize == 0 store
11923         from CALL_EXPR with addressable return type.
11924
11925 2017-10-11  Segher Boessenkool  <segher@kernel.crashing.org>
11926
11927         * config/rs6000/rs6000.h (TARGET_ISEL64): Delete.
11928         * config/rs6000/rs6000.md (sel): Delete mode attribute.
11929         (mov<mode>cc, isel_signed_<mode>, isel_unsigned_<mode>,
11930         *isel_reversed_signed_<mode>, *isel_reversed_unsigned_<mode>): Use
11931         TARGET_ISEL instead of TARGET_ISEL<sel>.
11932
11933 2017-10-11  David Edelsohn  <dje.gcc@gmail.com>
11934
11935         * config/rs6000/rs6000.c
11936         (rs6000_xcoff_asm_output_aligned_decl_common): Test for NULL decl.
11937
11938 2017-10-11  Segher Boessenkool  <segher@kernel.crashing.org>
11939
11940         * config/rs6000/predicates.md (zero_constant, all_ones_constant):
11941         Move up in file.
11942         (reg_or_cint_operand): Fix comment.
11943         (reg_or_zero_operand): New predicate.
11944         * config/rs6000/rs6000-protos.h (output_isel): Delete.
11945         * config/rs6000/rs6000.c (output_isel): Delete.
11946         * config/rs6000/rs6000.md (isel_signed_<mode>): Use reg_or_zero_operand
11947         instead of reg_or_cint_operand.  Output instruction directly (not via
11948         output_isel).
11949         (isel_unsigned_<mode>): Ditto.
11950         (*isel_reversed_signed_<mode>): Use reg_or_zero_operand instead of
11951         gpc_reg_operand.  Add an instruction alternative for this.  Output
11952         instruction directly.
11953         (*isel_reversed_unsigned_<mode>): Ditto.
11954
11955 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
11956
11957         * config/i386/i386.c (ix86_canonicalize_comparison): New function.
11958         (TARGET_CANONICALIZE_COMPARISON): Define.
11959
11960 2017-10-11  Qing Zhao  <qing.zhao@oracle.com>
11961
11962         PR target/81422
11963         * config/aarch64/aarch64.c (aarch64_load_symref_appropriately):
11964         Check whether the dest is REG before adding REG_EQUIV note.
11965
11966 2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
11967
11968         PR sanitizer/82353
11969         * lra.c (collect_non_operand_hard_regs): Don't ignore operator
11970         locations.
11971         * lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
11972         (make_hard_regno_born, make_hard_regno_dead): Update
11973         bb_killed_pseudos and bb_gen_pseudos.
11974
11975 2017-10-11  Nathan Sidwell  <nathan@acm.org>
11976
11977         * incpath.h (enum incpath_kind): Name enum, prefix values.
11978         (add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_kind.
11979         * incpath.c (heads, tails): Use INC_MAX.
11980         (add_env_var_paths, add_standard_paths): Use incpath_kind.
11981         (merge_include_chains, split_quote_chain,
11982         register_include_chains): Update incpath_kind names.
11983         (add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_kind.
11984         * config/darwin-c.c (add_system_framework_path): Update incpath_kind
11985         names.
11986         (add_framework_path, darwin_register_objc_includes): Likewise.
11987         * config/vms/vms-c.c (vms_c_register_includes): Likewise.
11988
11989 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
11990
11991         * config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
11992         Do not use float_operator operator predicate.
11993         (*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
11994         * config/i386/predicates.md (float_operator): Remove predicate.
11995
11996 2017-10-11  Uros Bizjak  <ubizjak@gmail.com>
11997
11998         * config/i386/i386.md (*jcc<mode>_0_i387): Remove insn pattern.
11999         (*jccxf_i387): Ditto.
12000         (*jcc<mode>_i387): Ditto.
12001         (*jccu<mode>_i387): Ditto.
12002         (*jcc<X87MODEF:mode>_<SWI24:mode>_i387): Ditto.
12003         (*jcc_*_i387 splitters): Remove.
12004         * config/i386/i386-protos.h (ix86_split_fp_branch): Remove prototype.
12005         * config/i386/i386.c (ix86_split_fp_branch): Remove.
12006         * config/i386/predicates.md (ix86_swapped_fp_comparison_operator):
12007         Remove predicate.
12008
12009 2017-10-11  Jan Hubicka  <hubicka@ucw.cz>
12010
12011         * profile-count.h (slow_safe_scale_64bit): New function.
12012         (safe_scale_64bit): New inline.
12013         (profile_count::max_safe_multiplier): Remove; use safe_scale_64bit.
12014         * profile-count.c: Include wide-int.h
12015         (slow_safe_scale_64bit): New.
12016
12017 2017-10-11  Nathan Sidwell  <nathan@acm.org>
12018
12019         * tree.h (DECL_ASSEMBLER_NAME_SET_P): Don't check
12020         HAS_DECL_ASSEMBLER_NAME_P.
12021         * gimple-expr.c (gimple_decl_printable_name: Check
12022         HAS_DECL_ASSEMBLER_NAME_P too.
12023         * ipa-utils.h (type_in_anonymous_namespace_p): Check
12024         DECL_ASSEMBLER_NAME_SET_P of TYPE_NAME.
12025         (odr_type_p): No need to assert TYPE_NAME is a TYPE_DECL.
12026         * passes.c (rest_of_decl_compilation): Check
12027         HAS_DECL_ASSEMBLER_NAME_P too.
12028         * recog.c (verify_changes): Likewise.
12029         * tree-pretty-print.c (dump_decl_name): Likewise.
12030         * tree-ssa-structalias.c (alias_get_name): Likewise.  Reimplement.
12031
12032         * tree.h (DECL_ASSEMBLER_NAME_RAW): New.
12033         (SET_DECL_ASSEMBLER_NAME): Use it.
12034         (DECL_ASSEMBLER_NAME_SET_P): Likewise.
12035         (COPY_DECL_ASSEMBLER_NAME): Likewise.
12036         * tree.c (decl_assembler_name): Use DECL_ASSEMBLER_NAME_RAW.
12037
12038 2017-10-11  Jan Hubicka  <hubicka@ucw.cz>
12039
12040         * config.gcc (i386, x86_64): Add extra objects.
12041         * config/i386/i386-protos.h (ix86_rip_relative_addr_p): Declare.
12042         (ix86_min_insn_size): Declare.
12043         (ix86_issue_rate): Declare.
12044         (ix86_adjust_cost): Declare.
12045         (ia32_multipass_dfa_lookahead): Declare.
12046         (ix86_macro_fusion_p): Declare.
12047         (ix86_macro_fusion_pair_p): Declare.
12048         (ix86_bd_has_dispatch): Declare.
12049         (ix86_bd_do_dispatch): Declare.
12050         (ix86_core2i7_init_hooks): Declare.
12051         (ix86_atom_sched_reorder): Declare.
12052         * config/i386/i386.c Move all CPU cost tables to x86-tune-costs.h.
12053         (COSTS_N_BYTES): Move to x86-tune-costs.h.
12054         (DUMMY_STRINGOP_ALGS):Move to x86-tune-costs.h.
12055         (rip_relative_addr_p): Rename to ...
12056         (ix86_rip_relative_addr_p): ... this one; export.
12057         (memory_address_length): Update.
12058         (ix86_issue_rate): Move to x86-tune-sched.c.
12059         (ix86_flags_dependent): Move to x86-tune-sched.c.
12060         (ix86_agi_dependent): Move to x86-tune-sched.c.
12061         (exact_dependency_1): Move to x86-tune-sched.c.
12062         (exact_store_load_dependency): Move to x86-tune-sched.c.
12063         (ix86_adjust_cost): Move to x86-tune-sched.c.
12064         (ia32_multipass_dfa_lookahead): Move to x86-tune-sched.c.
12065         (ix86_macro_fusion_p): Move to x86-tune-sched.c.
12066         (ix86_macro_fusion_pair_p): Move to x86-tune-sched.c.
12067         (do_reorder_for_imul): Move to x86-tune-sched-atom.c.
12068         (swap_top_of_ready_list): Move to x86-tune-sched-atom.c.
12069         (ix86_sched_reorder): Move to x86-tune-sched-atom.c.
12070         (core2i7_first_cycle_multipass_init): Move to x86-tune-sched-core.c.
12071         (core2i7_dfa_post_advance_cycle): Move to x86-tune-sched-core.c.
12072         (min_insn_size): Rename to ...
12073         (ix86_min_insn_size): ... this one; export.
12074         (core2i7_first_cycle_multipass_begin): Move to x86-tune-sched-core.c.
12075         (core2i7_first_cycle_multipass_issue): Move to x86-tune-sched-core.c.
12076         (core2i7_first_cycle_multipass_backtrack): Move to
12077         x86-tune-sched-core.c.
12078         (core2i7_first_cycle_multipass_end): Move to x86-tune-sched-core.c.
12079         (core2i7_first_cycle_multipass_fini): Move to x86-tune-sched-core.c.
12080         (ix86_sched_init_global): Break up logic to ix86_core2i7_init_hooks.
12081         (ix86_avoid_jump_mispredicts): Update.
12082         (TARGET_SCHED_DISPATCH): Move to ix86-tune-sched-bd.c.
12083         (TARGET_SCHED_DISPATCH_DO): Move to ix86-tune-sched-bd.c.
12084         (TARGET_SCHED_REORDER): Move to ix86-tune-sched-bd.c.
12085         (DISPATCH_WINDOW_SIZE): Move to ix86-tune-sched-bd.c.
12086         (MAX_DISPATCH_WINDOWS): Move to ix86-tune-sched-bd.c.
12087         (MAX_INSN): Move to ix86-tune-sched-bd.c.
12088         (MAX_IMM): Move to ix86-tune-sched-bd.c.
12089         (MAX_IMM_SIZE): Move to ix86-tune-sched-bd.c.
12090         (MAX_IMM_32): Move to ix86-tune-sched-bd.c.
12091         (MAX_IMM_64): Move to ix86-tune-sched-bd.c.
12092         (MAX_LOAD): Move to ix86-tune-sched-bd.c.
12093         (MAX_STORE): Move to ix86-tune-sched-bd.c.
12094         (BIG): Move to ix86-tune-sched-bd.c.
12095         (enum dispatch_group): Move to ix86-tune-sched-bd.c.
12096         (enum insn_path): Move to ix86-tune-sched-bd.c.
12097         (get_mem_group): Move to ix86-tune-sched-bd.c.
12098         (is_cmp): Move to ix86-tune-sched-bd.c.
12099         (dispatch_violation): Move to ix86-tune-sched-bd.c.
12100         (is_branch): Move to ix86-tune-sched-bd.c.
12101         (is_prefetch): Move to ix86-tune-sched-bd.c.
12102         (init_window): Move to ix86-tune-sched-bd.c.
12103         (allocate_window): Move to ix86-tune-sched-bd.c.
12104         (init_dispatch_sched): Move to ix86-tune-sched-bd.c.
12105         (is_end_basic_block): Move to ix86-tune-sched-bd.c.
12106         (process_end_window): Move to ix86-tune-sched-bd.c.
12107         (allocate_next_window): Move to ix86-tune-sched-bd.c.
12108         (find_constant): Move to ix86-tune-sched-bd.c.
12109         (get_num_immediates): Move to ix86-tune-sched-bd.c.
12110         (has_immediate): Move to ix86-tune-sched-bd.c.
12111         (get_insn_path): Move to ix86-tune-sched-bd.c.
12112         (get_insn_group): Move to ix86-tune-sched-bd.c.
12113         (count_num_restricted): Move to ix86-tune-sched-bd.c.
12114         (fits_dispatch_window): Move to ix86-tune-sched-bd.c.
12115         (add_insn_window): Move to ix86-tune-sched-bd.c.
12116         (add_to_dispatch_window): Move to ix86-tune-sched-bd.c.
12117         (debug_dispatch_window_file): Move to ix86-tune-sched-bd.c.
12118         (debug_dispatch_window): Move to ix86-tune-sched-bd.c.
12119         (debug_insn_dispatch_info_file): Move to ix86-tune-sched-bd.c.
12120         (debug_ready_dispatch): Move to ix86-tune-sched-bd.c.
12121         (do_dispatch): Move to ix86-tune-sched-bd.c.
12122         (has_dispatch): Move to ix86-tune-sched-bd.c.
12123         * config/i386/t-i386: Add new object files.
12124         * config/i386/x86-tune-costs.h: New file.
12125         * config/i386/x86-tune-sched-atom.c: New file.
12126         * config/i386/x86-tune-sched-bd.c: New file.
12127         * config/i386/x86-tune-sched-core.c: New file.
12128         * config/i386/x86-tune-sched.c: New file.
12129
12130 2017-10-11  Liu Hao  <lh_mouse@126.com>
12131
12132         * pretty-print.c [_WIN32] (colorize_init): Remove.  Use
12133         the generic version below instead.
12134         (should_colorize): Recognize Windows consoles as terminals
12135         for MinGW targets.
12136         * pretty-print.c [__MINGW32__] (write_all): New function.
12137         [__MINGW32__] (find_esc_head): Likewise.
12138         [__MINGW32__] (find_esc_terminator): Likewise.
12139         [__MINGW32__] (eat_esc_sequence): Likewise.
12140         [__MINGW32__] (mingw_ansi_fputs): New function that handles
12141         ANSI escape codes.
12142         (pp_write_text_to_stream): Use mingw_ansi_fputs instead of fputs
12143         for MinGW targets.
12144
12145 2017-10-11  Richard Biener  <rguenther@suse.de>
12146
12147         * tree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith):
12148         Properly call analyze_scalar_evolution with the loop of the stmt.
12149
12150 2017-10-11  Richard Biener  <rguenther@suse.de>
12151
12152         * tree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand.
12153         * tree-core.h (tree_base): Add chrec_var union member.
12154         * tree.h (CHREC_VAR): Remove.
12155         (CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE): Adjust.
12156         * tree-chrec.h (build_polynomial_chrec): Adjust.
12157         * tree-chrec.c (reset_evolution_in_loop): Use build_polynomial_chrec.
12158         * tree-pretty-print.c (dump_generic_node): Use CHREC_VARIABLE.
12159
12160 2017-10-11  Marc Glisse  <marc.glisse@inria.fr>
12161
12162         * fold-const.c (fold_binary_loc) [X +- Y CMP X]: Move ...
12163         * match.pd: ... here.
12164         ((T) X == (T) Y): Relax condition.
12165
12166 2017-10-11  Bin Cheng  <bin.cheng@arm.com>
12167
12168         PR tree-optimization/82472
12169         * tree-loop-distribution.c (sort_partitions_by_post_order): Refine
12170         comment.
12171         (break_alias_scc_partitions): Update postorder number.
12172
12173 2017-10-11  Martin Liska  <mliska@suse.cz>
12174
12175         PR sanitizer/82490
12176         * opts.c (parse_no_sanitize_attribute): Do not use error_value
12177         variable.
12178         * opts.h (parse_no_sanitize_attribute): Remove last argument.
12179
12180 2017-10-11  Martin Liska  <mliska@suse.cz>
12181
12182         * print-rtl.c (print_insn): Move declaration of idbuf
12183         to same scope as name.
12184
12185 2017-10-11  Martin Liska  <mliska@suse.cz>
12186
12187         Revert r253637:
12188
12189         PR sanitizer/82484
12190         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
12191         volatile arguments.
12192
12193 2017-10-11  Martin Liska  <mliska@suse.cz>
12194
12195         PR sanitizer/82484
12196         * sanopt.c (sanitize_rewrite_addressable_params): Do not handle
12197         volatile arguments.
12198
12199 2017-10-11  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
12200
12201         * config.gcc (default_gnu_indirect_function): Default to yes for
12202         arm*-*-linux* with glibc.
12203
12204 2017-10-11  Richard Biener  <rguenther@suse.de>
12205
12206         * tree-scalar-evolution.c (get_scalar_evolution): Handle
12207         default-defs and types we do not want to analyze.
12208         (interpret_loop_phi): Replace unreachable code with an assert.
12209         (compute_scalar_evolution_in_loop): Remove and inline ...
12210         (analyze_scalar_evolution_1): ... here, replacing condition with
12211         what makes the intent clearer.  Remove handling of cases
12212         get_scalar_evolution now handles.
12213
12214 2017-10-10  Jim Wilson  <wilson@tuliptree.org>
12215
12216         PR rtl-optimization/81434
12217         * haifa-sched.c (prune_ready_list): Init min_cost_group to 0.  Update
12218         comment for main loop.  In sched_group_found if, also add checks for
12219         pass and min_cost_group.
12220
12221 2017-10-10  Segher Boessenkool  <segher@kernel.crashing.org>
12222
12223         * config/rs6000/rs6000.c (TARGET_INSN_COST): New.
12224         (rs6000_insn_cost): New function.
12225         * config/rs6000/rs6000.md (cost): New attribute.
12226
12227 2017-10-10  Jakub Jelinek  <jakub@redhat.com>
12228             H.J. Lu  <hongjiu.lu@intel.com>
12229
12230         PR target/79565
12231         PR target/82483
12232         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Add
12233         OPTION_MASK_ISA_MMX for __builtin_ia32_maskmovq,
12234         __builtin_ia32_vec_ext_v4hi and __builtin_ia32_vec_set_v4hi.
12235         (ix86_expand_builtin): Treat OPTION_MASK_ISA_MMX similarly
12236         to OPTION_MASK_ISA_AVX512VL - builtins that have both
12237         OPTION_MASK_ISA_MMX and some other bit set require both
12238         mmx and the ISAs without the mmx bit.
12239         * config/i386/i386-builtin.def (__builtin_ia32_cvtps2pi,
12240         __builtin_ia32_cvttps2pi, __builtin_ia32_cvtpi2ps,
12241         __builtin_ia32_pavgb, __builtin_ia32_pavgw, __builtin_ia32_pmulhuw,
12242         __builtin_ia32_pmaxub, __builtin_ia32_pmaxsw, __builtin_ia32_pminub,
12243         __builtin_ia32_pminsw, __builtin_ia32_psadbw, __builtin_ia32_pmovmskb,
12244         __builtin_ia32_pshufw, __builtin_ia32_cvtpd2pi,
12245         __builtin_ia32_cvttpd2pi, __builtin_ia32_cvtpi2pd,
12246         __builtin_ia32_pmuludq, __builtin_ia32_pabsb, __builtin_ia32_pabsw,
12247         __builtin_ia32_pabsd, __builtin_ia32_phaddw, __builtin_ia32_phaddd,
12248         __builtin_ia32_phaddsw, __builtin_ia32_phsubw, __builtin_ia32_phsubd,
12249         __builtin_ia32_phsubsw, __builtin_ia32_pmaddubsw,
12250         __builtin_ia32_pmulhrsw, __builtin_ia32_pshufb, __builtin_ia32_psignb,
12251         __builtin_ia32_psignw, __builtin_ia32_psignd, __builtin_ia32_movntq,
12252         __builtin_ia32_paddq, __builtin_ia32_psubq, __builtin_ia32_palignr):
12253         Add OPTION_MASK_ISA_MMX.
12254
12255 2017-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
12256
12257         * config.gcc (armv7*-*-freebsd*): New target.
12258         (armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define.
12259
12260 2017-10-10  Jan Hubicka  <hubicka@ucw.cz>
12261
12262         * x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI,
12263         X86_TUNE_ADJUST_UNROLL, X86_TUNE_ONE_IF_CONV_INSN): Move to right
12264         spot in the file.
12265
12266 2017-10-10  Richard Sandiford  <richard.sandiford@linaro.org>
12267
12268         * wide-int.h (wide_int_ref_storage): Make host_dependent_precision
12269         a template parameter.
12270         (WIDE_INT_REF_FOR): Update accordingly.
12271         * tree.h (wi::int_traits <const_tree>): Delete.
12272         (wi::tree_to_widest_ref, wi::tree_to_offset_ref): New typedefs.
12273         (wi::to_widest, wi::to_offset): Use them.  Expand commentary.
12274         (wi::tree_to_wide_ref): New typedef.
12275         (wi::to_wide): New function.
12276         * calls.c (get_size_range): Use wi::to_wide when operating on
12277         trees as wide_ints.
12278         * cgraph.c (cgraph_node::create_thunk): Likewise.
12279         * config/i386/i386.c (ix86_data_alignment): Likewise.
12280         (ix86_local_alignment): Likewise.
12281         * dbxout.c (stabstr_O): Likewise.
12282         * dwarf2out.c (add_scalar_info, gen_enumeration_type_die): Likewise.
12283         * expr.c (const_vector_from_tree): Likewise.
12284         * fold-const-call.c (host_size_t_cst_p, fold_const_call_1): Likewise.
12285         * fold-const.c (may_negate_without_overflow_p, negate_expr_p)
12286         (fold_negate_expr_1, int_const_binop_1, const_binop)
12287         (fold_convert_const_int_from_real, optimize_bit_field_compare)
12288         (all_ones_mask_p, sign_bit_p, unextend, extract_muldiv_1)
12289         (fold_div_compare, fold_single_bit_test, fold_plusminus_mult_expr)
12290         (pointer_may_wrap_p, expr_not_equal_to, fold_binary_loc)
12291         (fold_ternary_loc, multiple_of_p, fold_negate_const, fold_abs_const)
12292         (fold_not_const, round_up_loc): Likewise.
12293         * gimple-fold.c (gimple_fold_indirect_ref): Likewise.
12294         * gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Likewise.
12295         (alloca_call_type): Likewise.
12296         * gimple.c (preprocess_case_label_vec_for_gimple): Likewise.
12297         * godump.c (go_output_typedef): Likewise.
12298         * graphite-sese-to-poly.c (tree_int_to_gmp): Likewise.
12299         * internal-fn.c (get_min_precision): Likewise.
12300         * ipa-cp.c (ipcp_store_vr_results): Likewise.
12301         * ipa-polymorphic-call.c
12302         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
12303         * ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise.
12304         (ipa_modify_call_arguments): Likewise.
12305         * match.pd: Likewise.
12306         * omp-low.c (scan_omp_1_op, lower_omp_ordered_clauses): Likewise.
12307         * print-tree.c (print_node_brief, print_node): Likewise.
12308         * stmt.c (expand_case): Likewise.
12309         * stor-layout.c (layout_type): Likewise.
12310         * tree-affine.c (tree_to_aff_combination): Likewise.
12311         * tree-cfg.c (group_case_labels_stmt): Likewise.
12312         * tree-data-ref.c (dr_analyze_indices): Likewise.
12313         (prune_runtime_alias_test_list): Likewise.
12314         * tree-dump.c (dequeue_and_dump): Likewise.
12315         * tree-inline.c (remap_gimple_op_r, copy_tree_body_r): Likewise.
12316         * tree-predcom.c (is_inv_store_elimination_chain): Likewise.
12317         * tree-pretty-print.c (dump_generic_node): Likewise.
12318         * tree-scalar-evolution.c (iv_can_overflow_p): Likewise.
12319         (simple_iv_with_niters): Likewise.
12320         * tree-ssa-address.c (addr_for_mem_ref): Likewise.
12321         * tree-ssa-ccp.c (ccp_finalize, evaluate_stmt): Likewise.
12322         * tree-ssa-loop-ivopts.c (constant_multiple_of): Likewise.
12323         * tree-ssa-loop-niter.c (split_to_var_and_offset)
12324         (refine_value_range_using_guard, number_of_iterations_ne_max)
12325         (number_of_iterations_lt_to_ne, number_of_iterations_lt)
12326         (get_cst_init_from_scev, record_nonwrapping_iv)
12327         (scev_var_range_cant_overflow): Likewise.
12328         * tree-ssa-phiopt.c (minmax_replacement): Likewise.
12329         * tree-ssa-pre.c (compute_avail): Likewise.
12330         * tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
12331         (vn_reference_maybe_forwprop_address, valueized_wider_op): Likewise.
12332         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
12333         * tree-ssa-uninit.c (is_pred_expr_subset_of): Likewise.
12334         * tree-ssanames.c (set_nonzero_bits, get_nonzero_bits): Likewise.
12335         * tree-switch-conversion.c (collect_switch_conv_info, array_value_type)
12336         (dump_case_nodes, try_switch_expansion): Likewise.
12337         * tree-vect-loop-manip.c (vect_gen_vector_loop_niters): Likewise.
12338         (vect_do_peeling): Likewise.
12339         * tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
12340         * tree-vect-stmts.c (vectorizable_load): Likewise.
12341         * tree-vrp.c (compare_values_warnv, vrp_int_const_binop): Likewise.
12342         (zero_nonzero_bits_from_vr, ranges_from_anti_range): Likewise.
12343         (extract_range_from_binary_expr_1, adjust_range_with_scev): Likewise.
12344         (overflow_comparison_p_1, register_edge_assert_for_2): Likewise.
12345         (is_masked_range_test, find_switch_asserts, maybe_set_nonzero_bits)
12346         (vrp_evaluate_conditional_warnv_with_ops, intersect_ranges): Likewise.
12347         (range_fits_type_p, two_valued_val_range_p, vrp_finalize): Likewise.
12348         (evrp_dom_walker::before_dom_children): Likewise.
12349         * tree.c (cache_integer_cst, real_value_from_int_cst, integer_zerop)
12350         (integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2)
12351         (tree_floor_log2, tree_ctz, mem_ref_offset, tree_int_cst_sign_bit)
12352         (tree_int_cst_sgn, get_unwidened, int_fits_type_p): Likewise.
12353         (get_type_static_bounds, num_ending_zeros, drop_tree_overflow)
12354         (get_range_pos_neg): Likewise.
12355         * ubsan.c (ubsan_expand_ptr_ifn): Likewise.
12356         * config/darwin.c (darwin_mergeable_constant_section): Likewise.
12357         * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
12358         * config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
12359         * config/avr/avr.c (avr_fold_builtin): Likewise.
12360         * config/bfin/bfin.c (bfin_local_alignment): Likewise.
12361         * config/msp430/msp430.c (msp430_attr): Likewise.
12362         * config/nds32/nds32.c (nds32_insert_attributes): Likewise.
12363         * config/powerpcspe/powerpcspe-c.c
12364         (altivec_resolve_overloaded_builtin): Likewise.
12365         * config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate)
12366         (rs6000_expand_ternop_builtin): Likewise.
12367         * config/rs6000/rs6000-c.c
12368         (altivec_resolve_overloaded_builtin): Likewise.
12369         * config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
12370         (rs6000_expand_ternop_builtin): Likewise.
12371         * config/s390/s390.c (s390_handle_hotpatch_attribute): Likewise.
12372
12373 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
12374
12375         * tree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes
12376         when copying loop nest with only one inner loop.
12377
12378 2017-10-10  Richard Biener  <rguenther@suse.de>
12379
12380         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting
12381         blocks if SCEV is active.
12382         * tree-scalar-evolution.c (analyze_scalar_evolution_1): Remove
12383         dead code.
12384         (analyze_scalar_evolution): Handle cached evolutions the obvious way.
12385         (scev_initialize): Assert we are not yet initialized.
12386
12387 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
12388
12389         * tree-loop-distribution.c (generate_loops_for_partition): Remove
12390         inner loop's exit stmt by making it always exit the loop, otherwise
12391         we would generate an infinite empty loop.
12392
12393 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
12394
12395         * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip
12396         renaming variables in new preheader if it's deleted.
12397
12398 2017-10-10  Bin Cheng  <bin.cheng@arm.com>
12399
12400         * tree-loop-distribution.c (struct partition): Remove unused field
12401         loops of the structure.
12402         (partition_alloc, partition_free): Ditto.
12403         (build_rdg_partition_for_vertex): Ditto.
12404
12405 2017-10-09  Jeff Law  <law@redhat.com>
12406
12407         * targhooks.c (default_stack_clash_protection_final_dynamic_probe): Fix
12408         return type to match prototype and documentation.
12409
12410 2010-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
12411
12412         * config/rs6000/rs6000.c (processor_costs): Move to ...
12413         * config/rs6000/rs6000.h: ... here.
12414         (rs6000_cost): Declare.
12415
12416 2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>
12417
12418         * except.c (setjmp_fn): New global variable.
12419         (init_eh): Initialize it if DONT_USE_BUILTIN_SETJMP is defined.
12420         (sjlj_emit_function_enter): Call it instead of BUILTIN_SETJMP
12421         if DONT_USE_BUILTIN_SETJMP is defined.
12422
12423 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
12424
12425         * target.def (insn_cost): New hook.
12426         * doc/tm.texi.in (TARGET_INSN_COST): New hook.
12427         * doc/tm.texi: Regenerate.
12428         * rtlanal.c (insn_cost): Use the new hook.
12429
12430 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
12431
12432         * combine.c (combine_validate_cost): Compute the new insn_cost,
12433         not just pattern_cost.
12434         (try_combine): Adjust comment.
12435
12436 2017-10-09  Segher Boessenkool  <segher@kernel.crashing.org>
12437
12438         * cfgrtl.c (rtl_account_profile_record): Replace insn_rtx_cost with
12439         insn_cost.
12440         * combine.c (uid_insn_cost): Adjust comment.
12441         (combine_validate_cost): Adjust comment.  Use pattern_cost instead
12442         of insn_rtx_cost
12443         (combine_instructions): Use insn_cost instead of insn_rtx_cost.
12444         * dse.c (find_shift_sequence): Ditto.
12445         * ifcvt.c (cheap_bb_rtx_cost_p): Ditto.
12446         (bb_valid_for_noce_process_p): Use pattern_cost.
12447         * rtl.h (insn_rtx_cost): Delete.
12448         (pattern_cost): New prototype.
12449         (insn_cost): New prototype.
12450         * rtlanal.c (insn_rtx_cost): Rename to...
12451         (pattern_cost): ... this.
12452         (insn_cost): New.
12453
12454 2017-10-09  Uros Bizjak  <ubizjak@gmail.com>
12455
12456         * config/i386/i386.md (*jcc_2): Remove insn pattern.
12457         (*jcc<mode>_0_r_i387): Ditto.
12458         (*jccxf_r_i387): Ditto.
12459         (*jcc<mode>_r_i387): Ditto.
12460         (*jccu<mode>_r_i387): Ditto.
12461         (*jcc<X87MODEF:mode>_<SWI24:mode>_r_i387): Ditto.
12462         (*jcc): Rename from *jcc_1.
12463
12464 2017-10-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
12465
12466         * config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Process
12467         deferred rescans after the lvx/stvx recombination pre-pass.
12468
12469 2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
12470
12471         * config/rs6000/amo.h: New include file to provide ISA 3.0 atomic
12472         memory operation instruction support.
12473         * config.gcc (powerpc*-*-*): Include amo.h as an extra header.
12474         (rs6000-ibm-aix[789]*): Likewise.
12475         * doc/extend.texi (PowerPC Atomic Memory Operation Functions):
12476         Document new functions.
12477
12478 2017-10-09  Richard Biener  <rguenther@suse.de>
12479
12480         PR tree-optimization/82397
12481         * tree-data-ref.c (data_ref_compare_tree): Make sure to return
12482         equality only for semantically equal trees.
12483
12484 2017-10-09  Richard Biener  <rguenther@suse.de>
12485
12486         PR tree-optimization/82449
12487         * sese.c (scev_analyzable_p): Check whether the SCEV is linear.
12488         * tree-chrec.h (evolution_function_is_constant_p): Adjust to
12489         allow constant addresses.
12490         * tree-chrec.c (scev_is_linear_expression): Constant evolutions
12491         are linear.
12492
12493 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12494
12495         * config/s390/s390-builtins.def (vec_nabs, vec_vfi): Fix builtin
12496         flags.
12497
12498 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12499
12500         PR target/82463
12501         * config/s390/vecintrin.h (vec_madd, vec_msub): Fix macro
12502         definitions.
12503
12504 2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12505
12506         PR target/82465
12507         * config/s390/s390-builtins.def (vec_sqrt): Fix builtin flags.
12508
12509 2017-10-09  Jakub Jelinek  <jakub@redhat.com>
12510
12511         PR target/82464
12512         * config/s390/s390-builtins.def (s390_vec_xor_flt_a,
12513         s390_vec_xor_flt_b, s390_vec_xor_flt_c): New.
12514
12515 2017-10-09  Richard Sandiford  <richard.sandiford@linaro.org>
12516
12517         * wide-int.h (WI_BINARY_OPERATOR_RESULT): New macro.
12518         (WI_BINARY_PREDICATE_RESULT): Likewise.
12519         (wi::binary_traits::operator_result): New type.
12520         (wi::binary_traits::predicate_result): Likewise.
12521         (generic_wide_int::operator~, unary generic_wide_int::operator-)
12522         (generic_wide_int::operator==, generic_wide_int::operator!=)
12523         (generic_wide_int::operator&, generic_wide_int::and_not)
12524         (generic_wide_int::operator|, generic_wide_int::or_not)
12525         (generic_wide_int::operator^, generic_wide_int::operator+
12526         (binary generic_wide_int::operator-, generic_wide_int::operator*):
12527         Delete.
12528         (operator~, unary operator-, operator==, operator!=, operator&)
12529         (operator|, operator^, operator+, binary operator-, operator*): New
12530         functions.
12531         * expr.c (get_inner_reference): Use wi::bit_and_not.
12532         * fold-const.c (fold_binary_loc): Likewise.
12533         * ipa-prop.c (ipa_compute_jump_functions_for_edge): Likewise.
12534         * tree-ssa-ccp.c (get_value_from_alignment): Likewise.
12535         (bit_value_binop): Likewise.
12536         * tree-ssa-math-opts.c (find_bswap_or_nop_load): Likewise.
12537         * tree-vrp.c (zero_nonzero_bits_from_vr): Likewise.
12538         (extract_range_from_binary_expr_1): Likewise.
12539         (masked_increment): Likewise.
12540         (simplify_bit_ops_using_ranges): Likewise.
12541
12542 2017-10-09  Martin Jambor  <mjambor@suse.cz>
12543
12544         PR hsa/82416
12545         * hsa-common.h (hsa_op_with_type): New method extend_int_to_32bit.
12546         * hsa-gen.c (hsa_extend_inttype_to_32bit): New function.
12547         (hsa_type_for_scalar_tree_type): Use it.  Always force min32int for
12548         COMPLEX types.
12549         (hsa_fixup_mov_insn_type): New function.
12550         (hsa_op_with_type::get_in_type): Use it.
12551         (hsa_build_append_simple_mov): Likewise.  Allow sub-32bit
12552         immediates in an assert.
12553         (hsa_op_with_type::extend_int_to_32bit): New method.
12554         (gen_hsa_insns_for_bitfield): Fixup instruction and intermediary
12555         types.  Convert to dest type if necessary.
12556         (gen_hsa_insns_for_bitfield_load): Fixup load type if necessary.
12557         (reg_for_gimple_ssa): Pass false as min32int to
12558         hsa_type_for_scalar_tree_type.
12559         (gen_hsa_addr): Fixup type when creating addresable temporary.
12560         (gen_hsa_cmp_insn_from_gimple): Extend operands if necessary.
12561         (gen_hsa_unary_operation): Extend operands and convert to dest type if
12562         necessary.  Call hsa_fixup_mov_insn_type.
12563         (gen_hsa_binary_operation): Changed operand types to hsa_op_with_type,
12564         extend operands and convert to dest type if necessary.
12565         (gen_hsa_insns_for_operation_assignment): Extend operands and convert
12566         to dest type if necessary.
12567         (set_output_in_type): Call hsa_fixup_mov_insn_type.  Just ude dest
12568         if conversion nt necessary and size matches.
12569         (gen_hsa_insns_for_load): Call hsa_fixup_mov_insn_type, convert
12570         to dest type if necessary.
12571         (gen_hsa_insns_for_store): Call hsa_fixup_mov_insn_type.
12572         (gen_hsa_insns_for_switch_stmt): Likewise. Also extend operands if
12573         necessary.
12574         (gen_hsa_clrsb): Likewise.
12575         (gen_hsa_ffs): Likewise.
12576         (gen_hsa_divmod): Extend operands and convert to dest type if
12577         necessary.
12578         (gen_hsa_atomic_for_builtin): Change type of op to hsa_op_with_type.
12579
12580 2017-10-08  Segher Boessenkool  <segher@kernel.crashing.org>
12581
12582         * config/rs6000/rs6000.md (conditional branch): Clean up formatting.
12583         Remove empty default arguments.  Use a brace block as output
12584         statement.
12585         (conditional return): Ditto.
12586         (jump): Ditto.
12587         (indirect_jump): Ditto.  Use b%T0 instead of bctr/blr.
12588         (tablejump, tablejumpsi, tablejumpdi, *tablejump<mode>_internal1):
12589         Ditto.
12590         (group_ending_nop): Ditto.
12591         (doloop_end): Ditto.
12592         (ctr<mode>, ctr<mode>_internal1, ctr<mode>_internal2): Ditto.
12593         (splitters for those): Ditto.
12594
12595 2017-10-08  Segher Boessenkool  <segher@kernel.crashing.org>
12596
12597         * config/rs6000/rs6000-string.c (expand_strncmp_align_check): Invert
12598         a conditional jump (and the compare for it) so that pc_rtx is the
12599         last operand.
12600         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Adjust
12601         for the deleted and renamed ctr<mode>_internal[234] patterns.
12602         * config/rs6000/rs6000.md: Delete second conditional branch pattern.
12603         Delete second conditional return pattern.
12604         (ctr<mode>_internal2): Delete this second bdnz pattern.
12605         (ctr<mode>_internal3): Rename to ctr<mode>_internal2.
12606         (ctr<mode>_internal4): Delete this second bdz pattern.
12607
12608 2017-10-08  Eric Botcazou  <ebotcazou@adacore.com>
12609
12610         * tree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values.
12611         (always_initialized_rtx_for_ssa_name_p): New predicate.
12612         * tree-outof-ssa.c (remove_ssa_form): Initialize new field of SA.
12613         (finish_out_of_ssa): Free new field of SA.
12614         * tree-ssa-coalesce.h (get_undefined_value_partitions): Declare.
12615         * tree-ssa-coalesce.c: Include tree-ssa.h.
12616         (get_parm_default_def_partitions): Remove extern keyword.
12617         (get_undefined_value_partitions): New function.
12618         * expr.c (expand_expr_real_1) <expand_decl_rtl>: For a SSA_NAME, do
12619         not set SUBREG_PROMOTED_VAR_P on the sub-register if it may contain
12620         uninitialized bits.
12621         * loop-iv.c (iv_get_reaching_def): Disqualify all subregs.
12622
12623 2017-10-08  Eric Botcazou  <ebotcazou@adacore.com>
12624
12625         * builtins.def (BUILT_IN_SETJMP): Revert latest change.
12626
12627 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
12628
12629         * config/i386/i386.c (ix86_expand_set_or_movmem): Disable 512bit loops
12630         for targets that preffer 128bit.
12631
12632 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
12633
12634         * config/i386/i386.c (has_dispatch): Disable for Ryzen.
12635
12636 2017-10-08  Olivier Hainque  <hainque@adacore.com>
12637
12638         * config/arm/arm.c (arm_set_return_address): Use MEM_VOLATILE_P
12639         on the target mem instead of RTX_FRAME_RELATED_P on the insn to
12640         prevent DSE.
12641         (thumb_set_return_address): Likewise.
12642
12643 2017-10-08  Olivier Hainque  <hainque@adacore.com>
12644
12645         * common/config/arm/arm-common.c (arm_except_unwind_info):
12646         Handle DWARF2_UNWIND_INFO.
12647
12648 2017-10-07  Michael Collison <michael.collison@arm.com>
12649
12650         * config/aarch64/aarch64.md (*aarch64_reg_<optab>_minus<mode>3):
12651         New pattern.
12652
12653 2017-10-07  Eric Botcazou  <ebotcazou@adacore.com>
12654
12655         * builtins.def (BUILT_IN_SETJMP): Declare as library builtin instead
12656         of GCC builtin if DONT_USE_BUILTIN_SETJMP is defined.
12657         * except.c (sjlj_emit_function_enter): If DONT_USE_BUILTIN_SETJMP is
12658         defined, force the creation of a new block for a dispatch label.
12659
12660 2017-10-07  Jan Hubicka  <hubicka@ucw.cz>
12661
12662         * invoke.texi (Wsuggest-attribute=cold): Document.
12663         * common.opt (Wsuggest-attribute=cold): New
12664         * ipa-pure-const.c (warn_function_cold): New function.
12665         * predict.c (compute_function_frequency): Use it.
12666         * predict.h (warn_function_cold): Declare.
12667
12668 2017-10-06  Jan Hubicka  <hubicka@ucw.cz>
12669
12670         * tree-switch-conversion.c (do_jump_if_equal, emit_cmp_and_jump_insns):
12671         Update profile.
12672
12673 2017-10-06  Martin Liska  <mliska@suse.cz>
12674
12675         * sanopt.c (struct sanopt_tree_triplet_hash): Remove inline
12676         keyword for member functions.
12677         (struct sanopt_tree_couple): New struct.
12678         (struct sanopt_tree_couple_hash): New function.
12679         (struct sanopt_ctx): Add new hash_map.
12680         (has_dominating_ubsan_ptr_check): New function.
12681         (record_ubsan_ptr_check_stmt): Likewise.
12682         (maybe_optimize_ubsan_ptr_ifn): Likewise.
12683         (sanopt_optimize_walker): Handle IFN_UBSAN_PTR.
12684         (pass_sanopt::execute): Handle also SANITIZE_POINTER_OVERFLOW.
12685
12686 2017-10-06  Sudakshina Das  <sudi.das@arm.com>
12687
12688         PR target/82440
12689         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): Only call
12690         aarch64_simd_valid_immediate on CONST_VECTORs.
12691         (aarch64_reg_or_bic_imm): Likewise.
12692
12693 2017-10-06  Wilco Dijkstra  <wdijkstr@arm.com>
12694
12695         PR rtl-optimization/82396
12696         * haifa-sched.c (ready_sort_real): Disable qsort checking.
12697
12698 2017-10-06  Sebastian Pop  <sebpop@gmail.com>
12699
12700         * graphite-dependences.c (scop_get_reads): Move code to...
12701         (scop_get_must_writes): Move code to...
12702         (scop_get_may_writes): Move code to...
12703         (scop_get_reads_and_writes): ... here.
12704         (scop_get_dependences): Call scop_get_reads_and_writes.
12705
12706 2017-10-06  Jakub Jelinek  <jakub@redhat.com>
12707
12708         PR tree-optimization/82434
12709         * fold-const.h (can_native_encode_type_p,
12710         can_native_encode_string_p): Remove.
12711         * fold-const.c (native_encode_int): Formatting fixes.  If ptr is NULL,
12712         don't encode anything, just return what would be otherwise returned.
12713         (native_encode_fixed, native_encode_complex, native_encode_vector):
12714         Likewise.
12715         (native_encode_string): Likewise.  Inline by hand
12716         can_native_encode_string_p.
12717         (can_native_encode_type_p): Remove.
12718         (can_native_encode_string_p): Remove.
12719         * tree-vect-stmts.c (vectorizable_store): Instead of testing just
12720         STRING_CSTs using can_native_encode_string_p, test all
12721         CONSTANT_CLASS_P values using native_encode_expr with NULL ptr.
12722         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Remove last
12723         argument from native_encode_expr.
12724         (rhs_valid_for_store_merging_p): Use native_encode_expr with NULL ptr.
12725         (pass_store_merging::execute): Don't unnecessarily look for 3 stmts,
12726         but just 2.
12727
12728 2017-10-06  Richard Biener  <rguenther@suse.de>
12729
12730         PR tree-optimization/82397
12731         * tree-vect-data-refs.c (dr_group_sort_cmp): Do not use
12732         operand_equal_p but rely on data_ref_compare_tree for detecting
12733         equalities.
12734         (vect_analyze_data_ref_accesses): Use data_ref_compare_tree
12735         to match up with dr_group_sort_cmp.
12736
12737 2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12738
12739         PR target/82322
12740         * config/s390/s390-builtins.def (s390_vfi): Define new overloaded
12741         builtin.
12742         * config/s390/s390-builtin-types.def: Regenerate.
12743
12744 2017-10-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12745
12746         PR target/82317
12747         * config/s390/s390-builtin-types.def: Regenerate.
12748         * config/s390/s390-builtins.def (s390_vfmaxdb_4, s390_vfmindb_4):
12749         Change flag from B_VXE to B_VX.
12750         (s390_vec_min_dbl): Remove B_VXE flag.
12751
12752 2017-10-06  Richard Biener  <rguenther@suse.de>
12753
12754         * graphite-isl-ast-to-gimple.c: Include ssa.h and tree-ssa.h.
12755         (translate_isl_ast_to_gimple::translate_pending_phi_nodes,
12756         translate_isl_ast_to_gimple::is_valid_rename,
12757         translate_isl_ast_to_gimple::get_rename,
12758         translate_isl_ast_to_gimple::get_def_bb_for_const,
12759         translate_isl_ast_to_gimple::get_new_name,
12760         translate_isl_ast_to_gimple::collect_all_ssa_names,
12761         translate_isl_ast_to_gimple::copy_loop_phi_args,
12762         translate_isl_ast_to_gimple::collect_all_ssa_names,
12763         translate_isl_ast_to_gimple::copy_loop_phi_args,
12764         translate_isl_ast_to_gimple::copy_loop_phi_nodes,
12765         translate_isl_ast_to_gimple::add_close_phis_to_merge_points,
12766         translate_isl_ast_to_gimple::add_close_phis_to_outer_loops,
12767         translate_isl_ast_to_gimple::copy_loop_close_phi_args,
12768         translate_isl_ast_to_gimple::copy_loop_close_phi_nodes,
12769         translate_isl_ast_to_gimple::copy_cond_phi_args,
12770         translate_isl_ast_to_gimple::copy_cond_phi_nodes,
12771         translate_isl_ast_to_gimple::edge_for_new_close_phis,
12772         translate_isl_ast_to_gimple::add_phi_arg_for_new_expr,
12773         translate_isl_ast_to_gimple::rename_uses,
12774         translate_isl_ast_to_gimple::rename_all_uses): Remove.
12775         (translate_isl_ast_to_gimple::get_rename_from_scev): Simplify.
12776         (set_rename_for_each_def): Likewise.
12777         (graphite_copy_stmts_from_block): Handle debug stmt resetting
12778         here.  Handle rewriting SCEV analyzable uses here.
12779         (copy_bb_and_scalar_dependences): Generate code for PHI
12780         copy-in/outs.
12781         (graphite_regenerate_ast_isl): Adjust.
12782         * graphite-scop-detection.c (trivially_empty_bb_p): Move to sese.[ch].
12783         (add_write, add_read): New functions.
12784         (build_cross_bb_scalars_def): Use it and simplify.
12785         (build_cross_bb_scalars_use): Likewise.
12786         (graphite_find_cross_bb_scalar_vars): Inline into...
12787         (try_generate_gimple_bb): ...here.  Add dependences for PHIs,
12788         simulating out-of-SSA.  Compute liveout and add dependencies.
12789         (build_scops): Force an empty entry block.
12790         * sese.h (sese_info_t::liveout, sese_info_t::debug_liveout): New
12791         members.
12792         (sese_build_liveouts): Declare.
12793         (sese_trivially_empty_bb_p): Likewise.
12794         * sese.c (sese_build_liveouts_bb): Properly handle PHIs,
12795         compute liveout and debug_liveout.
12796         (sese_bad_liveouts_use): Remove.
12797         (sese_reset_debug_liveouts_bb): Likewise.
12798         (sese_reset_debug_liveouts): Rewrite in terms of debug_liveout.
12799         (sese_build_liveouts): Build liveout and debug_liveout and store
12800         it in region.
12801         (new_sese_info): Adjust.
12802         (free_sese_info): Likewise.
12803         (sese_insert_phis_for_liveouts): Reset debug stmts from here,
12804         do not build liveout here.
12805         (move_sese_in_condition): Adjust region entry.
12806         (scev_analyzable_p): Match up with chrec_apply requirements.
12807         (sese_trivially_empty_bb_p): New.
12808         * tree-into-ssa.c (get_reaching_def): Properly support generating
12809         default-defs for incremental rewrite of anonymous names.
12810
12811 2017-10-06  Richard Biener  <rguenther@suse.de>
12812
12813         * graphite-sese-to-poly.c (extract_affine): For casts increasing
12814         precision do not perform modulo reduction.
12815
12816 2017-10-06  Richard Biener  <rguenther@suse.de>
12817
12818         PR tree-optimization/82436
12819         * tree-vect-slp.c (vect_supported_load_permutation_p): More
12820         conservatively choose the vectorization factor when checking
12821         whether we can perform the required load permutation.
12822         (vect_transform_slp_perm_load): Assert when we may not fail.
12823
12824 2017-10-05  Segher Boessenkool  <segher@kernel.crashing.org>
12825
12826         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Correct error
12827         message for incompatible -msdata=* and -mcall-* options.
12828
12829 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
12830
12831         * config/i386/i386.c (ia32_multipass_dfa_lookahead): Default to issue
12832         rate for post-reload scheduling.
12833
12834 2017-10-05  Tamar Christina  <tamar.christina@arm.com>
12835
12836         * doc/sourcebuild.texi (vect_sizes_16B_8B, vect_sizes_32B_16B): New.
12837
12838 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
12839
12840         * config/i386/i386.c (znver1_cost): Set branch_cost to 3 (instead of 2)
12841         to improve monte carlo in scimark.
12842
12843 2017-10-05  Jan Hubicka <hubicka@ucw.cz>
12844
12845         * config/i386/i386.c (ix86_size_cost, i386_cost, i486_cost,
12846         pentium_cost, lakemont_cost, pentiumpro_cost, geode_cost, k6_cost,
12847         athlon_cost, k8_cost, amdfam10_cost, btver1_cost, btver2_cost,
12848         pentium4_cost, nocona_cost): Set reassociation width to 1.
12849         (bdver1_cost, bdver2_cost, bdver3_cost, bdver4_cost): Set reassociation
12850         width to 2 for fp operations and 1 otherwise.
12851         (znver1_cost): Set scalar reassoc width to 4 and vector to 3 and 6
12852         for int and fp.
12853         (atom_cost): Set reassociation width to 2.
12854         (slm_cost, generic_cost): Set fp reassociation width
12855         to 2 and 1 otherwise.
12856         (intel_cost): Set fp reassociation width to 4 and 1 otherwise.
12857         (core_cost): Set fp reassociation width to 4 and vector to 2.
12858         (ix86_reassociation_width): Rewrite using cost table; special case
12859         plus/minus on Zen; honor X86_TUNE_SSE_SPLIT_REGS
12860         and TARGET_AVX128_OPTIMAL.
12861         * config/i386/i386.h (processor_costs): Add
12862         reassoc_int, reassoc_fp, reassoc_vec_int, reassoc_vec_fp.
12863         (TARGET_VECTOR_PARALLEL_EXECUTION, TARGET_REASSOC_INT_TO_PARALLEL,
12864         TARGET_REASSOC_FP_TO_PARALLEL): Remove.
12865         * x86-tune.def (X86_TUNE_REASSOC_INT_TO_PARALLEL): Remove.
12866         (X86_TUNE_REASSOC_FP_TO_PARALLEL): Remove.
12867         (X86_TUNE_VECTOR_PARALLEL_EXECUTION):  Remove.
12868
12869 2017-10-05  Nathan Sidwell  <nathan@acm.org>
12870
12871         * doc/invoke.texi (Wparentheses): Document C++ MVP behaviour.
12872
12873 2017-10-05  Tamar Christina  <tamar.christina@arm.com>
12874
12875         * config/arm/arm.c (arm_test_fpu_data): New.
12876         (arm_run_selftests): Call arm_test_fpu_data.
12877
12878 2017-10-04  Nathan Sidwell  <nathan@acm.org>
12879
12880         * toplev.c (toplev::main): Remove excess parens on pretty_printer
12881         decl.
12882         * caller-save.c (insert_save): Remove excess parens on TO_SAVE parm.
12883
12884 2017-10-04  Sudakshina Das  <sudi.das@arm.com>
12885
12886         * config/aarch64/aarch64-protos.h (enum simd_immediate_check): New
12887         check type for aarch64_simd_valid_immediate.
12888         (aarch64_output_simd_mov_immediate): Update prototype.
12889         (aarch64_simd_valid_immediate): Update prototype.
12890         * config/aarch64/aarch64-simd.md (orr<mode>3): modified pattern to add
12891         support for ORR-immediate.
12892         (and<mode>3): modified pattern to add support for BIC-immediate.
12893         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Function
12894         now checks for valid immediate for BIC and ORR based on new enum
12895         argument.
12896         (aarch64_output_simd_mov_immediate): Function now used to output
12897         BIC/ORR imm as well based on new enum argument.
12898         * config/aarch64/constraints.md (Do): New vector immediate constraint.
12899         (Db) : Likewise.
12900         * config/aarch64/predicates.md (aarch64_reg_or_orr_imm): New predicate.
12901         (aarch64_reg_or_bic_imm): Likewise.
12902
12903 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12904
12905         * config/s390/vx-builtins.md ("vec_mergeh<mode>")
12906         ("vec_mergel<mode>"): Change mode iterator to V_128_NOSINGLE.
12907
12908 2017-10-04  Wilco Dijkstra  <wdijkstr@arm.com>
12909
12910         Revert r253399:
12911
12912         PR rtl-optimization/82396
12913         * haifa-sched.c (autopref_multipass_init): Simplify
12914         initialization.
12915         (autopref_rank_data): Simplify sort order.
12916         * sched-int.h (autopref_multipass_data_): Remove
12917         multi_mem_insn_p, min_offset and max_offset.
12918
12919 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12920
12921         * doc/sourcebuild.texi: Document vect_peeling_profitable.
12922
12923 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12924
12925         * doc/sourcebuild.texi: Document vect_intdouble_cvt and
12926         vect_doubleint_cvt.
12927
12928 2017-10-04  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
12929
12930         * doc/sourcebuild.texi: Document vect_long_mult.
12931
12932 2017-10-04  Richard Sandiford  <richard.sandiford@linaro.org>
12933
12934         PR tree-optimization/82413
12935         * fold-const.c (build_range_check): Use widest_int when comparing
12936         the maximum ETYPE value with HIGH.
12937
12938 2017-10-04  Wilco Dijkstra  <wdijkstr@arm.com>
12939
12940         PR rtl-optimization/82396
12941         * haifa-sched.c (autopref_multipass_init): Simplify
12942         initialization.
12943         (autopref_rank_data): Simplify sort order.
12944         * sched-int.h (autopref_multipass_data_): Remove
12945         multi_mem_insn_p, min_offset and max_offset.
12946
12947 2017-10-04  Jakub Jelinek  <jakub@redhat.com>
12948
12949         PR tree-optimization/82381
12950         * tree-ssa-reassoc.c (sort_by_operand_rank): Check for different
12951         oeN->rank first.  Return 1 or -1 if one op is SSA_NAME and the other
12952         is not.
12953
12954         PR tree-optimization/82374
12955         * omp-low.c (create_omp_child_function): Copy DECL_ATTRIBUTES,
12956         DECL_FUNCTION_SPECIFIC_OPTIMIZATION,
12957         DECL_FUNCTION_SPECIFIC_TARGET and DECL_FUNCTION_VERSIONED from
12958         current_function_decl to the new decl.
12959
12960 2017-10-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
12961
12962         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_2_HW): Define new
12963         helper macro for IEEE float128 hardware built-in functions.
12964         (SQRTF128_ODD): Add built-in functions with the round-to-odd
12965         semantics.
12966         (TRUNCF128_ODD): Likewise.
12967         (ADDF128_ODD): Likewise.
12968         (SUBF128_ODD): Likewise.
12969         (MULF128_ODD): Likewise.
12970         (DIVF128_ODD): Likewise.
12971         (FMAF128_ODD): Likewise.
12972         * config/rs6000/rs6000.md (UNSPEC_ROUND_TO_ODD): Rename to
12973         UNSPEC_TRUNC_ROUND_TO_ODD.
12974         (UNSPEC_TRUNC_ROUND_TO_ODD): Likewise.
12975         (UNSPEC_ADD_ROUND_TO_ODD): New unspec codes for the IEEE 128-bit
12976         floating point round to odd instructions.
12977         (UNSPEC_SUB_ROUND_TO_ODD): Likewise.
12978         (UNSPEC_MUL_ROUND_TO_ODD): Likewise.
12979         (UNSPEC_DIV_ROUND_TO_ODD): Likewise.
12980         (UNSPEC_FMA_ROUND_TO_ODD): Likewise.
12981         (UNSPEC_SQRT_ROUND_TO_ODD): Likewise.
12982         (trunc<mode>sf2_hw): Change the truncate with round to odd
12983         expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.
12984         (add<mode>3_odd): Add insns for IEEE 128-bit floating point round
12985         to odd hardware instructions.
12986         (sub<mode>3_odd): Likewise.
12987         (mul<mode>3_odd): Likewise.
12988         (div<mode>3_odd): Likewise.
12989         (sqrt<mode>2_odd): Likewise.
12990         (fma<mode>4_odd): Likewise.
12991         (fms<mode>4_odd): Likewise.
12992         (nfma<mode>4_odd): Likewise.
12993         (nfms<mode>4_odd): Likewise.
12994         (trunc<mode>df2_odd): Change the truncate with round to odd
12995         expansion to use UNSPEC_TRUNC_ROUND_TO_ODD.  Add a generator
12996         function.
12997         * doc/extend.texi (PowerPC built-in functions): Update documentation
12998         for existing IEEE float128-bit built-in functions.  Add built-in
12999         functions that generate the IEEE 128-bit floating point round to
13000         odd instructions.
13001
13002 2017-10-03  Segher Boessenkool  <segher@kernel.crashing.org>
13003
13004         PR rtl-optimization/77729
13005         * simplify-rtx.c (simplify_binary_operation_1): Delete the (X&C1)|C2
13006         to (X&(C1&~C2))|C2 transformations.
13007
13008 2017-10-03  Martin Jambor  <mjambor@suse.cz>
13009
13010         PR tree-optimization/82363
13011         * tree-sra.c (propagate_subaccesses_across_link): In unrecoverable
13012         mismatch, mark lacc written regardless of racc.
13013
13014 2017-10-03  Jakub Jelinek  <jakub@redhat.com>
13015
13016         PR tree-optimization/82381
13017         * tree-ssa-reassoc.c (sort_by_operand_rank): Don't check
13018         stmt_to_insert nor wheather SSA_NAMEs are default defs.
13019         Return 1 or -1 if one of bba and bbb is NULL. If bb_rank is equal,
13020         fallthrough into reassoc_stmt_dominates_stmt_p.
13021
13022         PR target/82386
13023         * combine.c (combine_instructions): Don't combine in unreachable
13024         basic blocks.
13025
13026 2017-10-02  Peter Bergner  <bergner@vnet.ibm.com>
13027
13028         PR target/80210
13029         * config/rs6000/rs6000.c (rs6000_option_override_internal): Rewrite
13030         function to not use the have_cpu variable.  Do not set cpu_index,
13031         rs6000_cpu_index or rs6000_tune_index if we end up using TARGET_DEFAULT
13032         or the default cpu.
13033         (rs6000_valid_attribute_p): Remove duplicate initializations of
13034         old_optimize and func_optimize.
13035         (rs6000_pragma_target_parse): Call rs6000_activate_target_options ().
13036         (rs6000_activate_target_options): Make global.
13037         * config/rs6000/rs6000-protos.h (rs6000_activate_target_options): Add
13038         prototype.
13039
13040 2017-10-02  Jakub Jelinek  <jakub@redhat.com>
13041
13042         * tree-dfa.c (get_ref_base_and_extent): Set *pmax_size to -1
13043         if *poffset + *pmax_size overflows in HOST_WIDE_INT.
13044         Set *poffset to 0 and *psize and *pmax_size to -1 if
13045         *poffset + *psize overflows in HOST_WIDE_INT.
13046
13047         PR tree-optimization/82387
13048         PR tree-optimization/82388
13049         PR tree-optimization/82389
13050         * tree-ssa-dse.c (dse_classify_store): Test byte_tracking_enabled
13051         instead of live_bytes non-NULL.
13052
13053 2017-10-02  Georg-Johann Lay  <avr@gjlay.de>
13054
13055         PR target/41076
13056         * confg/avr/avr.md (*iorhi3.ashift8-ext.zerox): Add "r,r,0"
13057         alternative.
13058
13059 2017-10-02  Richard Biener  <rguenther@suse.de>
13060
13061         * graphite-isl-ast-to-gimple.c (set_codegen_error): With
13062         -fchecking and --param graphite-allow-codegen-errors=0 ICE.
13063         * params.def (PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): New param.
13064
13065 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
13066
13067         * tree.h (wi::int_traits <const_tree>::decompose): Assert that the
13068         requested precision matches the type's.
13069         * calls.c (alloc_max_size): Calculate the new candidate size as
13070         a widest_int and use wi::to_widest when comparing it with the
13071         current candidate size.
13072         * gimple-ssa-warn-alloca.c (pass_walloca::execute): Compare with
13073         zero rather than integer_zero_node.
13074         * match.pd: Check for a no-op conversion before using wi::add
13075         rather than after.  Use tree_to_uhwi when summing small shift
13076         counts into an unsigned int.
13077
13078 2017-10-02  Richard Sandiford  <richard.sandiford@linaro.org>
13079             Alan Hayward  <alan.hayward@arm.com>
13080             David Sherwood  <david.sherwood@arm.com>
13081
13082         PR target/71307
13083         * config/aarch64/aarch64.h (POINTER_AND_FP_REGS): New reg class.
13084         (REG_CLASS_NAMES, REG_CLASS_CONTENTS): Update accordingly.
13085         * config/aarch64/aarch64.c (aarch64_class_max_nregs): Handle
13086         POINTER_AND_FP_REGS.
13087
13088 2017-10-02  Richard Biener  <rguenther@suse.de>
13089
13090         PR tree-optimization/82355
13091         * graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
13092         a mapping for the enclosing loop but avoid generating one for
13093         the loop tree root.
13094         (copy_bb_and_scalar_dependences): Remove premature codegen
13095         error on PHIs in blocks duplicated into multiple places.
13096         * graphite-scop-detection.c
13097         (scop_detection::stmt_has_simple_data_refs_p): For a loop not
13098         in the region use it as loop and nest to analyze the DR in.
13099         (try_generate_gimple_bb): Likewise.
13100         * graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
13101         (add_loop_constraints): For blocks in a loop not in the region
13102         create a dimension with a single iteration.
13103         * sese.h (gbb_loop_at_index): Remove assert.
13104
13105 2017-10-01  Kevin Buettner  <kevinb@redhat.com>
13106
13107         * omp-expand.c (adjust_context_scope): New function.
13108         (expand_parallel_call): Call adjust_context_scope.
13109
13110 2017-10-01  Jeff Law  <law@redhat.com>
13111
13112         * tree-ssa-dom.c (optimize_stmt): Make this a method within the
13113         dom_opt_dom_walker class with direct access to private members.
13114         Add comments.  Call test_for_singularity.
13115         (dom_opt_dom_walker::before_dom_children): Corresponding changes.
13116         (dom_opt_dom_walker::after_dom_children): Do not lazily initialize
13117         m_dummy_cond anymore.
13118         (class dom_opt_dom_walker): Initialize m_dummy_cond member in the
13119         class ctor.
13120         (pass_dominator:execute): Build the dummy_cond here and pass it
13121         to the dom_opt_dom_walker ctor.
13122         (test_for_singularity): New function.
13123
13124 2017-09-30  Krister Walfridsson  <krister.walfridsson@gmail.com>
13125             Maya Rashish  <coypu@sdf.org>
13126
13127         * config.gcc (*-*-netbsd*): New variable nbsd_tm_file containing
13128         netbsd.h, netbsd-stdint.h, and netbsd-elf.h.
13129         (alpha*-*-netbsd*) Use nbsd_tm_file.
13130         (arm*-*-netbsdelf*) Likewise.
13131         (i[34567]86-*-netbsdelf*) Likewise.
13132         (x86_64-*-netbsd*) Likewise.
13133         (mips*-*-netbsd*) Likewise.
13134         (powerpc-*-netbsd*) Likewise.
13135         (sh*-*-netbsd*) Likewise.
13136         (sparc-*-netbsdelf*) Likewise.
13137         (sparc64-*-netbsd*) Likewise.
13138         (m68k*-*-netbsdelf*) Use nbsd_tm_file and add CHAR_FAST8/SHORT_FAST16
13139         to tm_defines.
13140         (vax-*-netbsdelf*) Likewise.
13141         * config/netbsd-stdint.h (INT_FAST8_TYPE): Check CHAR_FAST8.
13142         (UINT_FAST8_TYPE) Likewise.
13143         (INT_FAST16_TYPE) Check CHAR_FAST16.
13144         (UINT_FAST16_TYPE) Likewise.
13145
13146 2017-09-30  Jakub Jelinek  <jakub@redhat.com>
13147
13148         PR target/82361
13149         * config/i386/i386.md
13150         (TARGET_USE_8BIT_IDIV zext divmodsi4 splitter): New define_split.
13151         (divmodsi4_zext_1, divmodsi4_zext_2, *divmodsi4_zext_1,
13152         *divmodsi4_zext_2): New define_insn_and_split.
13153         (*divmodsi4_noext_zext_1, *divmodsi4_noext_zext_2): New define_insn.
13154         (TARGET_USE_8BIT_IDIV zext udivmodsi4 splitter): New define_split.
13155         (udivmodsi4_zext_1, udivmodsi4_zext_2, *udivmodsi4_zext_1,
13156         *udivmodsi4_zext_2, *udivmodsi4_pow2_zext_1, *udivmodsi4_pow2_zext_2):
13157         New define_insn_and_split.
13158         (*udivmodsi4_noext_zext_1, *udivmodsi4_noext_zext_2): New define_insn.
13159         * config/i386/i386.c (ix86_split_idivmod): Handle operands[0] or
13160         operands[1] having DImode when mode is SImode.
13161
13162         * config/i386/i386.c (ix86_split_idivmod): Use mode instead of
13163         always SImode for DIV and MOD in REG_EQUAL notes.
13164
13165 2017-09-29  Yury Gribov  <tetra2005@gmail.com>
13166
13167         PR middle-end/82319
13168         * match.pd: Fix handling of NaNs in pattern.
13169
13170 2017-09-29  Jeff Law  <law@redhat.com>
13171
13172         * sbitmap.c (bitmap_bit_in_range_p): New function.
13173         * sbitmap.h (bitmap_bit_in_range_p): Prototype.
13174         * tree-ssa-dse.c (live_bytes_read): New function.
13175         (dse_classify_store): Ignore reads of dead bytes.
13176
13177         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): Fix
13178         typos and whitespace errors.
13179         * config/i386/predicates.md (address_no_seg_operand): Likewise.
13180         * config/s390/s390.c (s390_emit_prologue): Likewise.
13181
13182 2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
13183
13184         PR target/81481
13185         * ira-costs.c (scan_one_insn): Don't take into account PIC equiv
13186         with a symbol for LRA.
13187
13188 2017-09-29  Vladimir Makarov  <vmakarov@redhat.com>
13189
13190         PR rtl-optimization/82338
13191         * lra-constraints.c (inherit_in_ebb): Check usage_insns check.
13192
13193 2017-09-29  Alexander Monakov  <amonakov@ispras.ru>
13194
13195         * genmodes.c (calc_wider_mode): Suppress qsort macro.
13196         * system.h [CHECKING_P] (qsort): Redirect to qsort_chk.
13197         (qsort_chk): Declare.
13198         * vec.c [CHECKING_P] (qsort_chk_error): New static function.
13199         (qsort_chk): New function.
13200
13201 2017-09-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
13202
13203         PR tree-optimization/82337
13204         * gimple-ssa-strength-reduction.c (find_phi_def): Don't record a
13205         phi definition if the PHI result appears in an abnormal PHI.
13206         (find_basis_for_base_expr): Don't record a basis if the LHS of the
13207         basis appears in an abnormal PHI.
13208
13209 2017-09-29  Richard Biener  <rguenther@suse.de>
13210
13211         * graphite-isl-ast-to-gimple.c
13212         (translate_isl_ast_to_gimple::set_codegen_error): New function.
13213         (binary_op_to_tree): Use it.
13214         (get_rename_from_scev): Likewise.
13215         (copy_loop_phi_nodes): Likewise.
13216         (copy_bb_and_scalar_dependences): Likewise.
13217         (translate_pending_phi_nodes): Likewise.
13218
13219 2017-09-29  Jakub Jelinek  <jakub@redhat.com>
13220
13221         PR target/82339
13222         * config/i386/i386.md (*movdi_internal peephole2): New -Os peephole
13223         for movabsq $(i32 << shift), r64.
13224
13225 2017-09-28  Uros Bizjak  <ubizjak@gmail.com>
13226
13227         * config/i386/i386.c (ix86_print_operand_address_as): Do not check
13228         index when encoding %esp as %rsp to avoid 0x67 prefix.
13229
13230 2017-09-28  Sergey Shalnov  <Sergey.Shalnov@intel.com>
13231
13232         * config/i386/i386.md (*movsf_internal, *movdf_internal):
13233         Return 256-bit AVX modes for TARGET_PREFER_AVX256.
13234
13235 2017-09-28  Thomas Preud'homme  <thomas.preudhomme@arm.com>
13236
13237         * config/arm/arm.c (arm_option_override): Forbid ARMv8-M Security
13238         Extensions with more than 16 double VFP registers.
13239         (cmse_nonsecure_entry_clear_before_return): Remove second entry of
13240         to_clear_mask and all code related to it.  Replace the remaining
13241         entry by a sbitmap and adapt code accordingly.
13242
13243 2017-09-28  Henry Linjamäki  <henry.linjamaki@parmance.com>
13244
13245         * brig-builtins.def: Change pure attributes to const.
13246
13247 2017-09-28  Joseph Myers  <joseph@codesourcery.com>
13248
13249         * config.gcc (default_gnu_indirect_function): Default to yes for
13250         sparc*-*-linux* with glibc.
13251
13252 2017-09-28  Joseph Myers  <joseph@codesourcery.com>
13253
13254         * config/aarch64/aarch64.c (aarch64_elf_asm_constructor)
13255         (aarch64_elf_asm_destructor): Pass SECTION_NOTYPE to get_section
13256         when creating .init_array and .fini_array sections with priority
13257         specified.
13258
13259 2017-09-27  Christophe Lyon  <christophe.lyon@linaro.org>
13260
13261         PR target/71727
13262         * config/aarch64/aarch64.c
13263         (aarch64_builtin_support_vector_misalignment): Always return false
13264         when misalignment is unknown.
13265
13266 2017-09-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
13267
13268         * config/rs6000/rs6000-p8swap.c (const_load_sequence_p): Revise
13269         this function to return false if the definition used by the swap
13270         instruction is artificial, or if the memory address from which the
13271         constant value is loaded is not represented by a base address held
13272         in a register or if the base address register is a frame or stack
13273         pointer.  Additionally, return false if the base address of the
13274         loaded constant is a SYMBOL_REF but is not considered to be a
13275         constant.
13276         (replace_swapped_load_constant): New function.
13277         (rs6000_analyze_swaps): Add a new pass to replace a swap of a
13278         loaded constant vector with a load of a swapped constant vector.
13279
13280 2017-09-27  Carl Love  <cel@us.ibm.com>
13281
13282         * config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
13283         (FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
13284         * config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
13285         fctiw instruction.
13286
13287 2017-09-27  Alexander Monakov  <amonakov@ispras.ru>
13288
13289         * haifa-sched.c (autopref_rank_for_schedule): Order 'irrelevant' insns
13290         first, always call autopref_rank_data otherwise.
13291
13292 2017-09-27  Richard Biener  <rguenther@suse.de>
13293
13294         * graphite-scop-detection.c (find_scop_parameters): Move
13295         loop bound handling ...
13296         (gather_bbs::before_dom_children): ... here, avoiding the need
13297         to build scop_info->loop_nest.
13298         (record_loop_in_sese): Remove.
13299         * sese.h (sese_info_t::loop_nest): Remove.
13300         * sese.c (new_sese_info): Do not allocate loop_nest.
13301         (free_sese_info): Do not free loop_nest.
13302
13303 2017-09-27  Jakub Jelinek  <jakub@redhat.com>
13304
13305         PR c++/82159
13306         * gimplify.c (gimplify_modify_expr): Don't optimize away zero sized
13307         lhs from calls if the lhs has addressable type.
13308
13309 2017-09-27  Richard Biener  <rguenther@suse.de>
13310
13311         * graphite.h (scop::max_alias_set): New member.
13312         * graphite-scop-detection.c: Remove references to non-existing
13313         --param in comments.
13314         (build_alias_sets): Record the maximum alias set used for drs.
13315         (build_scops): Support zero as unlimited for
13316         --param graphite-max-arrays-per-scop.
13317         * graphite-sese-to-poly.c (add_scalar_version_numbers): Remove
13318         and inline into ...
13319         (build_poly_sr_1): ... here.  Compute alias set based on the
13320         maximum alias set used for drs rather than
13321         PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP
13322
13323 2017-09-27  Richard Biener  <rguenther@suse.de>
13324
13325         * graphite-optimize-isl.c (get_schedule_for_node_st): Allow
13326         --param loop-block-tile-size=0 to disable tiling.
13327
13328 2017-09-27  Richard Biener  <rguenther@suse.de>
13329
13330         * doc/invoke.texi (graphite-max-bbs-per-function): Remove.
13331         (graphite-max-nb-scop-params): Document special value zero.
13332         * domwalk.h (dom_walker::STOP): New symbolical constant.
13333         (dom_walker::dom_walker): Add optional parameter for bb to
13334         RPO mapping.
13335         (dom_walker::~dom_walker): Declare.
13336         (dom_walker::before_dom_children): Document STOP return value.
13337         (dom_walker::m_user_bb_to_rpo): New member.
13338         (dom_walker::m_bb_to_rpo): Likewise.
13339         * domwalk.c (dom_walker::dom_walker): Compute bb to RPO
13340         mapping here if not provided by the user.
13341         (dom_walker::~dom_walker): Free bb to RPO mapping if not
13342         provided by the user.
13343         (dom_walker::STOP): Define.
13344         (dom_walker::walk): Do not compute bb to RPO mapping here.
13345         Support STOP return value from before_dom_children to stop
13346         walking.
13347         * graphite-optimize-isl.c (optimize_isl): If the schedule
13348         is the same still generate code if -fgraphite-identity
13349         or -floop-parallelize-all are given.
13350         * graphite-scop-detection.c: Include cfganal.h.
13351         (gather_bbs::gather_bbs): Get and pass through bb to RPO
13352         mapping.
13353         (gather_bbs::before_dom_children): Return STOP for BBs
13354         not in the region.
13355         (build_scops): Compute bb to RPO mapping and pass it to
13356         the domwalk.  Treat --param graphite-max-nb-scop-params=0
13357         as not limiting the number of params.
13358         * graphite.c (graphite_initialize): Remove limit on the
13359         number of basic-blocks in a function.
13360         * params.def (PARAM_GRAPHITE_MAX_BBS_PER_FUNCTION): Remove.
13361         (PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Adjust to documented
13362         default value of 10.
13363
13364 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
13365
13366         * config/rs6000/vsx.md (peephole for optimizing move SF to GPR):
13367         Adjust code to eliminate needing to do the shift right 32-bits
13368         operation after XSCVDPSPN.
13369
13370 2017-09-26  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
13371
13372         * match.pd ((X / Y) == 0 -> X < Y): New pattern.
13373         ((X / Y) != 0 -> X >= Y): Likewise.
13374
13375 2017-09-26  Carl Love  <cel@us.ibm.com>
13376
13377         * config/rs6000/rs6000-c.c (P9V_BUILTIN_VEC_XL_LEN_R,
13378         P9V_BUILTIN_VEC_XST_LEN_R): Add support for builtins
13379         vector unsigned char vec_xl_len_r (unsigned char *, size_t);
13380         void vec_xst_len_r (vector unsigned char, unsigned char *, size_t);
13381         * config/rs6000/altivec.h (vec_xl_len_r, vec_xst_len_r): Add defines.
13382         * config/rs6000/rs6000-builtin.def (XL_LEN_R, XST_LEN_R): Add
13383         definitions and overloading.
13384         * config/rs6000/rs6000.c (altivec_expand_builtin): Add case
13385         statement for P9V_BUILTIN_XST_LEN_R.
13386         (altivec_init_builtins): Add def_builtin for P9V_BUILTIN_STXVLL.
13387         * config/rs6000/vsx.md (lxvll, stxvll, xl_len_r, xst_len_r): Add
13388         define_expand and define_insn for the instructions and builtins.
13389         * doc/extend.texi: Update the built-in documentation file for the new
13390         built-in functions.
13391         * config/rs6000/altivec.md (altivec_lvsl_reg, altivec_lvsr_reg): Add
13392         define_insn for the instructions
13393
13394 2017-09-26  Krister Walfridsson  <krister.walfridsson@gmail.com>
13395
13396         PR target/39570
13397         * gcc/config/netbsd-protos.h: New file.
13398         * gcc/config/netbsd.c: New file.
13399         * gcc/config/netbsd.h (SUBTARGET_INIT_BUILTINS): Define.
13400         * gcc/config/t-netbsd: New file.
13401         * gcc/config.gcc (tm_p_file): Add netbsd-protos.h.
13402         (tmake_file) Add t-netbsd.
13403         (extra_objs) Add netbsd.o.
13404
13405 2017-09-26  Janus Weil  <janus@gcc.gnu.org>
13406
13407         PR fortran/82143
13408         PR fortran/82324
13409         * doc/sourcebuild.texi: Document fortran_real_10 and fortran_real_16.
13410
13411 2017-09-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
13412
13413         * config/rs6000/rs6000.md (extendsi<mode>2): Add a splitter to do
13414         sign extension from a vector register to a GPR by doing a 32-bit
13415         direct move and then an EXTSW.
13416         (extendsi<mode>2 splitter): Likewise.
13417         (movsi_from_sf): Adjust code to eliminate doing a 32-bit shift
13418         right or vector extract after doing XSCVDPSPN.  Use
13419         zero_extendsidi2 instead of p8_mfvsrd_4_disf to move the value to
13420         the GPRs.
13421         (movdi_from_sf_zero_ext): Likewise.
13422         (reload_gpr_from_vsxsf): Likewise.
13423         (p8_mfvsrd_4_disf): Delete, no longer used.
13424         (movsi_from_df): Optimize converting a DFmode to a SFmode, and
13425         then needing to move the SFmode to a GPR to use the XSCVDPSP
13426         instruction instead of FRSP and XSCVDPSPN.
13427         * config/rs6000/vsx.md (vsx_xscvspdp_scalar2): Move insn so that
13428         it is adjacent to the other XSCVSPDP insns.
13429         (vsx_xscvdpsp_scalar): Use "ww" constraint instead of "f" to allow
13430         SFmode to be in traditional Altivec registers.
13431         (vsx_xscvdpspn): Eliminate useless alternative constraint.
13432         (vsx_xscvspdpn): Likewise.
13433         (vsx_xscvspdpn_scalar): Likewise.
13434
13435 2017-09-26  Martin Jambor  <mjambor@suse.cz>
13436
13437         * tree-sra.c (compare_access_positions): Put integral types first,
13438         stabilize sorting of integral types, remove conditions putting
13439         non-full-precision integers last.
13440         (sort_and_splice_var_accesses): Disable scalarization if a
13441         non-integert would be represented by a non-full-precision integer.
13442
13443 2017-09-26  Joseph Myers  <joseph@codesourcery.com>
13444
13445         * config/microblaze/linux.h (TARGET_ASM_FILE_END): Likewise.
13446         * config/pa/pa.h (NEED_INDICATE_EXEC_STACK): Likewise.
13447         * config/pa/pa-linux.h (NEED_INDICATE_EXEC_STACK): Likewise.
13448         * config/pa/pa.c (pa_hpux_file_end): Rename to pa_file_end.
13449         Define unconditionally, with [ASM_OUTPUT_EXTERNAL_REAL]
13450         conditionals inside the function instead of around it.  Call
13451         file_end_indicate_exec_stack if NEED_INDICATE_EXEC_STACK.
13452         (TARGET_ASM_FILE_END): Define unconditionally to pa_file_end.
13453
13454 2017-09-26  Richard Biener  <rguenther@suse.de>
13455
13456         * graphite-scop-detection.c (scop_detection::build_scop_depth): Rewrite,
13457         fold in ...
13458         (scop_detection::build_scop_breadth): ... this.  Removed.
13459         (scop_detection::loop_is_valid_in_scop): Fold into single caller.
13460         (scop_detection::harmful_stmt_in_bb): Likewise.
13461         (scop_detection::graphite_can_represent_stmt): Likewise.
13462         (scop_detection::loop_body_is_valid_scop): Likewise.  Remove recursion.
13463         (scop_detection::can_represent_loop): Remove recursion, fold in ...
13464         (scop_detection::can_represent_loop_1): ... this.  Removed.
13465         (scop_detection::harmful_loop_in_region): Simplify after inlining
13466         the above and remove more quadraticness.
13467         (build_scops): Adjust.
13468         * tree-data-ref.c (loop_nest_has_data_refs): Remove pointless
13469         quadraticness.
13470
13471 2017-09-26  Jakub Jelinek  <jakub@redhat.com>
13472
13473         PR target/82267
13474         * config/i386/i386.c (ix86_print_operand_address_as): Only test
13475         REGNO (base) == SP_REG if base is a REG.
13476
13477         PR middle-end/35691
13478         * tree-ssa-reassoc.c (update_range_test): Dump r->exp each time
13479         if it is different SSA_NAME.
13480         (optimize_range_tests_cmp_bitwise): New function.
13481         (optimize_range_tests): Call it.
13482
13483 2017-09-26  Richard Biener  <rguenther@suse.de>
13484
13485         PR tree-optimization/82321
13486         * graphite.c (canonicalize_loop_closed_ssa): Properly check
13487         for the def being inside the loop.
13488
13489 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13490
13491         * config/s390/vx-builtins.md ("vmslg"): Add missing operand in
13492         assembler output.
13493         * config/s390/s390-builtins.def: Fix constraint on op4.
13494
13495 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13496
13497         * config/s390/s390.c (s390_expand_vec_compare): Use the new mode
13498         independent expanders.
13499         * config/s390/vector.md ("vec_cmpuneq", "vec_cmpltgt")
13500         ("vec_ordered", "vec_unordered"): New expanders.
13501
13502 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13503
13504         * config/s390/s390.c (s390_preferred_simd_mode): Return V4SFmode
13505         for SFmode.
13506
13507 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13508
13509         * config/s390/vector.md ("vec_unpacks_low_v16qi"): Rename to
13510         vec_unpacks_lo_v16qi.
13511         ("vec_unpacku_low_v16qi"): Rename to vec_unpacku_lo_v16qi.
13512
13513 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13514
13515         * config/s390/vector.md ("vec_unpacks_lo_v4sf")
13516         ("vec_unpacks_hi_v4sf", "vec_unpacks_lo_v2df")
13517         ("vec_unpacks_hi_v2df", "vec_pack_trunc_v2df"): New expanders.
13518
13519 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13520
13521         * config/s390/predicates.md ("const_shift_by_byte_operand"): New
13522         predicate.
13523         * config/s390/vector.md ("*vec_srb<mode>"): Change modes to V_128
13524         and V16QI.
13525         ("*vec_slb<mode>"): New insn pattern.
13526         ("vec_shr_<mode>"): New expander.
13527         * config/s390/vx-builtins.md ("vec_slb<mode>"): Turn into expander
13528         and force the shift count operand to V16QImode.
13529         ("vec_srb<mode>"): Set shift count mode to V16QI.
13530
13531 2017-09-26  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
13532
13533         * config/s390/vector.md ("vec_widen_umult_lo_<mode>")
13534         ("vec_widen_umult_hi_<mode>", "vec_widen_smult_lo_<mode>")
13535         ("vec_widen_smult_hi_<mode>"): New expander definitions.
13536
13537 2017-09-26  Richard Earnshaw  <rearnsha@arm.com>
13538
13539         PR target/82175
13540         * config/arm/arm.h (DRIVER_SELF_SPECS): Separate sub-rules with commas.
13541
13542 2017-09-26  Richard Biener  <rguenther@suse.de>
13543
13544         PR tree-optimization/82320
13545         * tree-ssa-sccvn.c (set_ssa_val_to): Changing undef to undef
13546         isn't a change.
13547
13548 2017-09-25  Jeff Law  <law@redhat.com>
13549
13550         * config/rs6000/rs6000-protos.h (output_probe_stack_range): Update
13551         prototype for new argument.
13552         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack_1): New function,
13553         mostly extracted from rs6000_emit_allocate_stack.
13554         (rs6000_emit_probe_stack_range_stack_clash): New function.
13555         (rs6000_emit_allocate_stack): Call
13556         rs6000_emit_probe_stack_range_stack_clash as needed.
13557         (rs6000_emit_probe_stack_range): Add additional argument
13558         to call to gen_probe_stack_range{si,di}.
13559         (output_probe_stack_range): New.
13560         (output_probe_stack_range_1): Renamed from output_probe_stack_range.
13561         (output_probe_stack_range_stack_clash): New.
13562         (rs6000_emit_prologue): Emit notes into dump file as requested.
13563         * rs6000.md (allocate_stack): Handle -fstack-clash-protection.
13564         (probe_stack_range<P:mode>): Operand 0 is now early-clobbered.
13565         Add additional operand and pass it to output_probe_stack_range.
13566
13567 2017-09-25  Bin Cheng  <bin.cheng@arm.com>
13568
13569         PR tree-optimization/82163
13570         * tree-ssa-loop-manip.h (verify_loop_closed_ssa): New parameter.
13571         (checking_verify_loop_closed_ssa): New parameter.
13572         * tree-ssa-loop-manip.c (check_loop_closed_ssa_use): Delete.
13573         (check_loop_closed_ssa_stmt): Delete.
13574         (check_loop_closed_ssa_def, check_loop_closed_ssa_bb): New functions.
13575         (verify_loop_closed_ssa): Check loop closed ssa form for LOOP.
13576         (tree_transform_and_unroll_loop): Check loop closed ssa form only for
13577         changed loops.
13578
13579 2017-09-25  Pekka Jaaskelainen <pekka@parmance.com>
13580
13581         * brig-builtins.def: Treat HSAIL barrier builtins as
13582         setjmp/longjump style functions.
13583
13584 2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>
13585
13586         * target.def (constant_alignment): New hook.
13587         * defaults.h (CONSTANT_ALIGNMENT): Delete.
13588         * doc/tm.texi.in (CONSTANT_ALIGNMENT): Replace with...
13589         (TARGET_CONSTANT_ALIGNMENT): ...this new hook.
13590         * doc/tm.texi: Regenerate.
13591         * targhooks.h (default_constant_alignment): Declare.
13592         (constant_alignment_word_strings): Likewise.
13593         * targhooks.c (default_constant_alignment): New function.
13594         (constant_alignment_word_strings): Likewise.
13595         * builtins.c (get_object_alignment_2): Use targetm.constant_alignment
13596         instead of CONSTANT_ALIGNMENT.
13597         * varasm.c (align_variable, get_variable_align, build_constant_desc)
13598         (force_const_mem): Likewise.
13599         * config/aarch64/aarch64.h (CONSTANT_ALIGNMENT): Delete.
13600         * config/aarch64/aarch64.c (aarch64_constant_alignment): New function.
13601         (aarch64_classify_address): Call it instead of CONSTANT_ALIGNMENT.
13602         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13603         * config/alpha/alpha.h (CONSTANT_ALIGNMENT): Delete commented-out
13604         definition.
13605         * config/arc/arc.h (CONSTANT_ALIGNMENT): Delete.
13606         * config/arc/arc.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13607         constant_alignment_word_strings.
13608         * config/arm/arm.h (CONSTANT_ALIGNMENT_FACTOR): Delete.
13609         (CONSTANT_ALIGNMENT): Likewise.
13610         * config/arm/arm.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13611         (arm_constant_alignment): New function.
13612         * config/bfin/bfin.h (CONSTANT_ALIGNMENT): Delete.
13613         * config/bfin/bfin.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13614         constant_alignment_word_strings.
13615         * config/cr16/cr16.h (CONSTANT_ALIGNMENT): Delete.
13616         * config/cr16/cr16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13617         constant_alignment_word_strings.
13618         * config/cris/cris.h (CONSTANT_ALIGNMENT): Delete.
13619         * config/cris/cris.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13620         (cris_constant_alignment): New function.
13621         * config/epiphany/epiphany.h (CONSTANT_ALIGNMENT): Delete.
13622         * config/epiphany/epiphany.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13623         (epiphany_constant_alignment): New function.
13624         * config/fr30/fr30.h (CONSTANT_ALIGNMENT): Delete.
13625         * config/fr30/fr30.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13626         constant_alignment_word_strings.
13627         * config/frv/frv.h (CONSTANT_ALIGNMENT): Delete.
13628         * config/frv/frv.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13629         constant_alignment_word_strings.
13630         * config/ft32/ft32.h (CONSTANT_ALIGNMENT): Delete.
13631         * config/ft32/ft32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13632         constant_alignment_word_strings.
13633         * config/i386/i386.h (CONSTANT_ALIGNMENT): Delete.
13634         * config/i386/i386-protos.h (ix86_constant_alignment): Delete.
13635         * config/i386/i386.c (ix86_constant_alignment): Make static.
13636         Use the same interface as the target hook.
13637         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13638         * config/ia64/ia64.h (CONSTANT_ALIGNMENT): Delete.
13639         * config/ia64/ia64.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13640         constant_alignment_word_strings.
13641         * config/iq2000/iq2000.h (CONSTANT_ALIGNMENT): Delete.
13642         * config/iq2000/iq2000.c (iq2000_constant_alignment): New function.
13643         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13644         * config/lm32/lm32.h (CONSTANT_ALIGNMENT): Delete.
13645         * config/lm32/lm32.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13646         constant_alignment_word_strings.
13647         * config/m32r/m32r.h (CONSTANT_ALIGNMENT): Delete.
13648         * config/m32r/m32r.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13649         constant_alignment_word_strings.
13650         * config/mcore/mcore.h (CONSTANT_ALIGNMENT): Delete.
13651         * config/mcore/mcore.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13652         constant_alignment_word_strings.
13653         * config/microblaze/microblaze.h (CONSTANT_ALIGNMENT): Delete.
13654         * config/microblaze/microblaze.c (microblaze_constant_alignment):
13655         New function.
13656         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13657         * config/mips/mips.h (CONSTANT_ALIGNMENT): Delete.
13658         * config/mips/mips.c (mips_constant_alignment): New function.
13659         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13660         * config/mmix/mmix.h (CONSTANT_ALIGNMENT): Delete.
13661         * config/mmix/mmix-protos.h (mmix_constant_alignment): Delete.
13662         * config/mmix/mmix.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13663         (mmix_constant_alignment): Make static.  Use the same interface
13664         as the target hook.
13665         * config/moxie/moxie.h (CONSTANT_ALIGNMENT): Delete.
13666         * config/moxie/moxie.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13667         constant_alignment_word_strings.
13668         * config/nios2/nios2.h (CONSTANT_ALIGNMENT): Delete.
13669         * config/nios2/nios2.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13670         constant_alignment_word_strings.
13671         * config/pa/pa.h (CONSTANT_ALIGNMENT): Delete.
13672         * config/pa/pa.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13673         constant_alignment_word_strings.
13674         * config/powerpcspe/powerpcspe.h (CONSTANT_ALIGNMENT): Delete.
13675         * config/powerpcspe/powerpcspe.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13676         (rs6000_constant_alignment): New function.
13677         * config/riscv/riscv.h (CONSTANT_ALIGNMENT): Delete.
13678         * config/riscv/riscv.c (riscv_constant_alignment): New function.
13679         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13680         * config/rs6000/rs6000.h (CONSTANT_ALIGNMENT): Delete.
13681         * config/rs6000/rs6000.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13682         (rs6000_constant_alignment): New function.
13683         * config/s390/s390.h (CONSTANT_ALIGNMENT): Delete.
13684         * config/s390/s390.c (s390_constant_alignment): New function.
13685         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13686         * config/sh/sh.h (CONSTANT_ALIGNMENT): Delete.
13687         * config/sh/sh.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13688         constant_alignment_word_strings.
13689         * config/sparc/sparc.h (CONSTANT_ALIGNMENT): Delete.
13690         * config/sparc/sparc.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13691         (sparc_constant_alignment): New function.
13692         * config/spu/spu.h (CONSTANT_ALIGNMENT): Delete.
13693         * config/spu/spu.c (spu_constant_alignment): New function.
13694         (TARGET_CONSTANT_ALIGNMENT): Redefine.
13695         * config/stormy16/stormy16.h (CONSTANT_ALIGNMENT): Delete.
13696         * config/stormy16/stormy16.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13697         constant_alignment_word_strings.
13698         * config/tilegx/tilegx.h (CONSTANT_ALIGNMENT): Delete.
13699         * config/tilegx/tilegx.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13700         constant_alignment_word_strings.
13701         * config/tilepro/tilepro.h (CONSTANT_ALIGNMENT): Delete.
13702         * config/tilepro/tilepro.c (TARGET_CONSTANT_ALIGNMENT): Redefine to
13703         constant_alignment_word_strings.
13704         * config/visium/visium.h (CONSTANT_ALIGNMENT): Delete.
13705         * config/visium/visium.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13706         (visium_constant_alignment): New function.
13707         * config/xtensa/xtensa.h (CONSTANT_ALIGNMENT): Delete.
13708         * config/xtensa/xtensa.c (TARGET_CONSTANT_ALIGNMENT): Redefine.
13709         (xtensa_constant_alignment): New function.
13710         * system.h (CONSTANT_ALIGNMENT): Poison.
13711
13712 2017-09-25  Will Schmidt  <will_schmidt@vnet.ibm.com>
13713
13714         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
13715         for early folding of vector stores (ALTIVEC_BUILTIN_ST_*).
13716         (rs6000_builtin_valid_without_lhs): New helper function.
13717         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
13718         Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_ST.
13719
13720 2017-09-25  Richard Sandiford  <richard.sandiford@linaro.org>
13721
13722         * target.h (vec_perm_indices): Use unsigned short rather than
13723         unsigned char.
13724         (auto_vec_perm_indices): Likewise.
13725         * config/aarch64/aarch64.c (aarch64_vectorize_vec_perm_const_ok):
13726         Use unsigned int rather than unsigned char.
13727         * config/arm/arm.c (arm_vectorize_vec_perm_const_ok): Likewise.
13728
13729 2017-09-25  Richard Biener  <rguenther@suse.de>
13730
13731         * cfgloop.h (sort_sibling_loops): Declare.
13732         * cfgloop.c (sort_sibling_loops_cmp): New helper.
13733         (sort_sibling_loops): New function sorting the sibling loop list
13734         in RPO order.
13735         * graphite.c (graphite_transform_loops): Sort sibling loops.
13736
13737 2017-09-25  Richard Sandiford  <richard.sandifird@linaro.org>
13738
13739         * target.def (vec_perm_const_ok): Change sel parameter to
13740         vec_perm_indices.
13741         * optabs-query.c (can_vec_perm_p): Update accordingly.
13742         * doc/tm.texi: Regenerate.
13743         * config/aarch64/aarch64.c (expand_vec_perm_d): Change perm to
13744         auto_vec_perm_indices and remove separate nelt field.
13745         (aarch64_evpc_trn, aarch64_evpc_uzp, aarch64_evpc_zip)
13746         (aarch64_evpc_ext, aarch64_evpc_rev, aarch64_evpc_dup)
13747         (aarch64_evpc_tbl, aarch64_expand_vec_perm_const_1)
13748         (aarch64_expand_vec_perm_const): Update accordingly.
13749         (aarch64_vectorize_vec_perm_const_ok): Likewise.  Change sel
13750         to vec_perm_indices.
13751         * config/arm/arm.c (expand_vec_perm_d): Change perm to
13752         auto_vec_perm_indices and remove separate nelt field.
13753         (arm_evpc_neon_vuzp, arm_evpc_neon_vzip, arm_evpc_neon_vrev)
13754         (arm_evpc_neon_vtrn, arm_evpc_neon_vext, arm_evpc_neon_vtbl)
13755         (arm_expand_vec_perm_const_1, arm_expand_vec_perm_const): Update
13756         accordingly.
13757         (arm_vectorize_vec_perm_const_ok): Likewise.  Change sel
13758         to vec_perm_indices.
13759         * config/i386/i386.c (ix86_vectorize_vec_perm_const_ok): Change
13760         sel to vec_perm_indices.
13761         * config/ia64/ia64.c (ia64_vectorize_vec_perm_const_ok): Likewise.
13762         * config/mips/mips.c (mips_vectorize_vec_perm_const_ok): Likewise.
13763         * config/powerpcspe/powerpcspe.c (rs6000_vectorize_vec_perm_const_ok):
13764         Likewise.
13765         * config/rs6000/rs6000.c (rs6000_vectorize_vec_perm_const_ok):
13766         Likewise.
13767
13768 2017-09-25  Pierre-Marie de Rodat  <derodat@adacore.com>
13769
13770         PR debug/82155
13771         * dwarf2out.c (dwarf2out_early_global_decl): Call dwarf2out_decl
13772         on the FUNCTION_DECL function context if it has a DIE that is a
13773         declaration.
13774
13775 2017-09-25  Richard Biener  <rguenther@suse.de>
13776
13777         PR tree-optimization/82285
13778         * tree-vect-patterns.c (vect_recog_bool_pattern): Also handle
13779         enumeral types.
13780
13781 2017-09-25  Tom de Vries  <tom@codesourcery.com>
13782
13783         PR target/80035
13784         PR target/81069
13785         * config/nvptx/nvptx.c (nvptx_output_call_insn): Add exit after call to
13786         noreturn function.
13787
13788 2017-09-25  Richard Biener  <rguenther@suse.de>
13789
13790         * graphite-optimize-isl.c (optimize_isl): Fail and dump if
13791         ISL errors other than isl_error_quota happen.  Dump if the
13792         schedule is the same.
13793         * graphite-sese-to-poly.c (build_poly_scop): Fail on ISL
13794         errors instead of aborting inside ISL.
13795
13796 2017-09-25  Iain Sandoe  <iain@codesourcery.com>
13797
13798         PR target/80556
13799         * config/i386/darwin.h (REAL_LIB_SPEC): New; put libSystem ahead
13800         of libgcc_eh for m64.
13801         * config/i386/darwin64.h: Likewise.
13802
13803 2017-09-25  Richard Biener  <rguenther@suse.de>
13804
13805         PR middle-end/82144
13806         * dwarf2out.c (gen_enumeration_type_die): Do not add alignment
13807         attribute for incomplete types nor twice for complete ones.
13808
13809 2017-09-24  Uros Bizjak  <ubizjak@gmail.com>
13810
13811         PR target/82267
13812         * config/i386/i386.c (ix86_print_operand_address_as): Encode
13813         %esp as %rsp to avoid 0x67 prefix if there is no index or base
13814         register.
13815
13816 2017-09-23  Uros Bizjak  <ubizjak@gmail.com>
13817
13818         PR bootstrap/82306
13819         * config/i386/i386.opt (mprefer-avx256): Use
13820         ix86_target_flags variable.
13821         * config/i386/i386.c (ix86_target_string): Move
13822         -mprefer-avx256 to flag2_opts.
13823
13824 2017-09-22  Jakub Jelinek  <jakub@redhat.com>
13825
13826         PR middle-end/35691
13827         * match.pd: Simplify x == -1 & y == -1 into (x & y) == -1
13828         and x != -1 | y != -1 into (x & y) != -1.
13829
13830 2017-09-22  Steve Ellcey  <sellcey@cavium.com>
13831
13832         * config.gcc: Add new case statement to set
13833         default_gnu_indirect_function.  Remove it from x86_64-*-linux*,
13834         i[34567]86-*, powerpc*-*-linux*spe*, powerpc*-*-linux*, s390-*-linux*,
13835         s390x-*-linux* case statements.   Added aarch64 to the list of
13836         supported architectures.
13837
13838 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13839
13840         PR tree-optimization/82289
13841         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Check
13842         STMT_VINFO_RELEVANT_P.
13843
13844 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13845             Alan Hayward  <alan.hayward@arm.com>
13846             David Sherwood  <david.sherwood@arm.com>
13847
13848         * tree-vrp.c (extract_range_from_multiplicative_op_1): Assert
13849         for VR_RANGE only; don't allow VR_ANTI_RANGE.
13850         (extract_range_from_binary_expr_1): Don't call
13851         extract_range_from_multiplicative_op_1 if !range_int_cst_p.
13852
13853 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13854             Alan Hayward  <alan.hayward@arm.com>
13855             David Sherwood  <david.sherwood@arm.com>
13856
13857         * target.def (preferred_vector_alignment): New hook.
13858         * doc/tm.texi.in (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): New
13859         hook.
13860         * doc/tm.texi: Regenerate.
13861         * targhooks.h (default_preferred_vector_alignment): Declare.
13862         * targhooks.c (default_preferred_vector_alignment): New function.
13863         * tree-vectorizer.h (dataref_aux): Add a target_alignment field.
13864         Expand commentary.
13865         (DR_TARGET_ALIGNMENT): New macro.
13866         (aligned_access_p): Update commentary.
13867         (vect_known_alignment_in_bytes): New function.
13868         * tree-vect-data-refs.c (vect_calculate_required_alignment): New
13869         function.
13870         (vect_compute_data_ref_alignment): Set DR_TARGET_ALIGNMENT.
13871         Calculate the misalignment based on the target alignment rather than
13872         the vector size.
13873         (vect_update_misalignment_for_peel): Use DR_TARGET_ALIGMENT
13874         rather than TYPE_ALIGN / BITS_PER_UNIT to update the misalignment.
13875         (vect_enhance_data_refs_alignment): Mask the byte misalignment with
13876         the target alignment, rather than masking the element misalignment
13877         with the number of elements in a vector.  Also use the target
13878         alignment when calculating the maximum number of peels.
13879         (vect_find_same_alignment_drs): Use vect_calculate_required_alignment
13880         instead of TYPE_ALIGN_UNIT.
13881         (vect_duplicate_ssa_name_ptr_info): Remove stmt_info parameter.
13882         Measure DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT.
13883         (vect_create_addr_base_for_vector_ref): Update call accordingly.
13884         (vect_create_data_ref_ptr): Likewise.
13885         (vect_setup_realignment): Realign by ANDing with
13886         -DR_TARGET_MISALIGNMENT.
13887         * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Calculate
13888         the number of peels based on DR_TARGET_ALIGNMENT.
13889         * tree-vect-stmts.c (get_group_load_store_type): Compare the gap
13890         with the guaranteed alignment boundary when deciding whether
13891         overrun is OK.
13892         (vectorizable_mask_load_store): Interpret DR_MISALIGNMENT
13893         relative to DR_TARGET_ALIGNMENT instead of TYPE_ALIGN_UNIT.
13894         (ensure_base_align): Remove stmt_info parameter.  Get the
13895         target base alignment from DR_TARGET_ALIGNMENT.
13896         (vectorizable_store): Update call accordingly.   Interpret
13897         DR_MISALIGNMENT relative to DR_TARGET_ALIGNMENT instead of
13898         TYPE_ALIGN_UNIT.
13899         (vectorizable_load): Likewise.
13900
13901 2017-09-22  Richard Sandiford  <richard.sandiford@linaro.org>
13902             Alan Hayward  <alan.hayward@arm.com>
13903             David Sherwood  <david.sherwood@arm.com>
13904
13905         * tree-vectorizer.h (vect_get_scalar_dr_size): New function.
13906         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Use it.
13907         (vect_enhance_data_refs_alignment): Likewise.
13908
13909 2017-09-22  Richard Earnshaw  <richard.earnshaw@arm.com>
13910
13911         * config/arm/parsecpu.awk (fatal): Note that we've encountered an
13912         error.  Only quit immediately if parsing is complete.
13913         (BEGIN): Initialize fatal_err and parse_done.
13914         (begin fpu, end fpu): Check number of arguments.
13915         (begin arch, end arch): Likewise.
13916         (begin cpu, end cpu): Likewise.
13917         (cname, tune for, tune flags, architecture, fpu, option): Likewise.
13918         (optalias): Likewise.
13919
13920 2017-09-22  Richard Earnshaw  <richard.earnshaw@arm.com>
13921
13922         * config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
13923         * config/arm/arm-isa.h: Delete.  Move definitions to ...
13924         * arm-cpus.in: ... here.  Use new feature and fgroup values.
13925         * config/arm/arm.c (arm_option_override): Use lower case for feature
13926         bit names.
13927         * config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
13928         (TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
13929         * config/arm/parsecpu.awk (END): Add new command 'isa'.
13930         (isa_pfx): Delete.
13931         (print_isa_bits_for): New function.
13932         (gen_isa): New function.
13933         (gen_comm_data): Use print_isa_bits_for.
13934         (define feature): New keyword.
13935         (define fgroup): New keyword.
13936         * config/arm/t-arm (TM_H): Remove.
13937         (GTM_H): Add arm-isa.h.
13938         (arm-isa.h): Add rule to generate file.
13939         * common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
13940         case for feature bit names.
13941
13942 2017-09-22  Richard Biener  <rguenther@suse.de>
13943
13944         * graphite-isl-ast-to-gimple.c (graphite_verify): Inline into
13945         single caller.
13946         (graphite_regenerate_ast_isl): Do not reset SCEV.  Move debug
13947         print of no dependency loops ...
13948         * graphite.c (graphite_transform_loops): ... here.
13949         (canonicalize_loop_closed_ssa_form): Work from inner to outer
13950         loops.
13951         (same_close_phi_node, remove_duplicate_close_phi,
13952         make_close_phi_nodes_unique, defined_in_loop_p): Fold into ...
13953         (canonicalize_loop_closed_ssa): ... here and simplify.
13954         * graphite-optimize-isl.c: Include tree-vectorizer.h.
13955         (optimize_isl): Use dump_printf_loc to tell when we stopped
13956         optimizing because of an ISL timeout.
13957
13958 2017-09-22  Richard Biener  <rguenther@suse.de>
13959
13960         PR tree-optimization/82291
13961         * tree-if-conv.c (predicate_mem_writes): Make sure to
13962         remove writes in blocks predicated with false.
13963
13964 2017-09-22  Richard Biener  <rguenther@suse.de>
13965
13966         * sese.c: Include cfganal.h.
13967         (if_region_set_false_region): Remove.
13968         (create_if_region_on_edge): Likewise.
13969         (move_sese_in_condition): Re-implement without destroying
13970         dominators.
13971
13972 2017-09-22  Richard Biener  <rguenther@suse.de>
13973
13974         * graphite-isl-ast-to-gimple.c (translate_pending_phi_nodes):
13975         Verify both BBs contain loop PHI nodes before dispatching to
13976         copy_loop_phi_args.
13977         (graphite_regenerate_ast_isl): Do not recompute dominators,
13978         do not verify three times.  Restructure for clarity.
13979         * graphite-scop-detection.c (same_close_phi_node,
13980         remove_duplicate_close_phi, make_close_phi_nodes_unique,
13981         defined_in_loop_p, canonicalize_loop_closed_ssa,
13982         canonicalize_loop_closed_ssa_form): Simplify, remove excess
13983         checking and SSA rewrite, move to ...
13984         * graphite.c: ... here.  Include ssa.h and tree-ssa-loop-manip.h.
13985         (graphite_initialize): Do not pass in ctx, do not reset the
13986         SCEV cache, compute only dominators.
13987         (graphite_transform_loops): Allocate ISL ctx after
13988         graphite_initialize.  Call canonicalize_loop_closed_ssa_form.
13989         Maintain post-dominators only around build_scops.
13990         * sese.c (if_region_set_false_region): Make static.  Free
13991         and recompute dominators.
13992         (move_sese_in_condition): Assert we don't get called with
13993         post-dominators computed.
13994         * sese.h (if_region_set_false_region): Remove.
13995
13996 2017-09-22  Sergey Shalnov  <sergey.shalnov@intel.com>
13997
13998         * config/i386/sse.md ("mov<mode>_internal"): Use <sseinsnmode>
13999         mode attribute for TARGET_AVX512VL.
14000
14001 2017-09-21  Sergey Shalnov  <sergey.shalnov@intel.com>
14002
14003         * config/i386/i386.opt (mprefer-avx256): New option.
14004         * config/i386/i386.c (ix86_target_string): Add -mprefer-avx256
14005         to flag_opts.
14006         (ix86_preferred_simd_mode): Return 256-bit AVX modes
14007         for TARGET_PREFER_AVX256.
14008         * doc/invoke.texi (x86 Options): Document -mprefer-avx256.
14009
14010 2017-09-21  Jeff Law  <law@redhat.com>
14011
14012         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash):
14013         Fix dump output if the only stack space is for pushed registers.
14014
14015 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
14016
14017         * config/spu/spu.c (spu_sched_adjust_cost): Update after renaming
14018         of insn_cost.
14019
14020 2017-09-21  Martin Sebor  <msebor@redhat.com>
14021
14022         PR c/81882
14023         * doc/extend.texi (attribute ifunc): Avoid relying on ill-formed
14024         code (in C++) or code that triggers warnings.
14025
14026 2017-09-21  Eric Botcazou  <ebotcazou@adacore.com>
14027
14028         * stor-layout.c (bit_from_pos): Do not distribute the conversion.
14029
14030 2017-09-21  Segher Boessenkool  <segher@kernel.crashing.org>
14031
14032         * haifa-sched.c: Rename insn_cost to insn_sched_cost.
14033         * sched-rgn.c: Ditto.
14034         * sel-sched-ir.c: Ditto.
14035
14036 2017-09-21  Alexander Monakov  <amonakov@ispras.ru>
14037
14038         * toplev.h (set_random_seed): Adjust return type.
14039         * toplev.c (init_local_tick): Move eager initialization of random_seed
14040         to get_random_seed.  Adjust comment.
14041         (init_random_seed): Inline to get_random_seed, delete.
14042         (get_random_seed): Initialize random_seed lazily.
14043         (set_random_seed): Do not return previous value.
14044         (print_switch_value): Do not call get_random_seed.
14045
14046 2017-09-21  Evgeny Kudryashov  <kudryashov@ispras.ru>
14047
14048         * cgraph.c (delete_function_version): New, broken out from...
14049         (cgraph_node::delete_function_version): ...here.  Rename to
14050         cgraph_node::delete_function_version_by_decl.  Update all uses.
14051         (cgraph_node::remove): Call delete_function_version.
14052
14053 2017-09-21  Jakub Jelinek  <jakub@redhat.com>
14054
14055         PR sanitizer/81715
14056         * tree-inline.c (expand_call_inline): Emit clobber stmts for
14057         VAR_DECLs to which addressable non-volatile parameters are mapped
14058         and for id->retvar after the return value assignment.  Clear
14059         id->retval and id->retbnd after inlining.
14060
14061 2017-09-21  Richard Biener  <rguenther@suse.de>
14062
14063         PR tree-optimization/82276
14064         PR tree-optimization/82244
14065         * tree-vrp.c (build_assert_expr_for): Set
14066         SSA_NAME_OCCURS_IN_ABNORMAL_PHI if the variable we assert on
14067         has it set.
14068         (remove_range_assertions): Revert earlier change.
14069
14070 2017-09-21  Wilco Dijkstra  <wdijkstr@arm.com>
14071
14072         PR target/71951
14073         * config/aarch64/aarch64.h (LIBGCC2_UNWIND_ATTRIBUTE): Define.
14074
14075 2017-09-21  Richard Biener  <rguenther@suse.de>
14076
14077         * graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
14078         Restore valid IL after code generation errors.
14079         * graphite.c (graphite_transform_loops): Diagnose code
14080         generation issues as MSG_MISSED_OPTIMIZATION and continue
14081         with processing SCOPs.
14082
14083 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
14084             Alan Hayward  <alan.hayward@arm.com>
14085             David Sherwood  <david.sherwood@arm.com>
14086
14087         * calls.c (compute_argument_addresses): Use simplify_gen_binary
14088         rather than choosing between plus_constant and gen_rtx_<CODE>.
14089         * expr.c (emit_push_insn): Likewise.
14090         (expand_expr_real_2): Likewise.
14091
14092 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
14093             Alan Hayward  <alan.hayward@arm.com>
14094             David Sherwood  <david.sherwood@arm.com>
14095
14096         * loop-unroll.c (split_iv): Call copy_rtx on the step.
14097
14098 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
14099             Alan Hayward  <alan.hayward@arm.com>
14100             David Sherwood  <david.sherwood@arm.com>
14101
14102         * tree.c (find_atomic_core_type): Check tree_fits_uhwi_p before
14103         calling tree_to_uhwi.
14104
14105 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
14106             Alan Hayward  <alan.hayward@arm.com>
14107             David Sherwood  <david.sherwood@arm.com>
14108
14109         * tree-ssa-ccp.c (get_value_for_expr): Use a positive test for
14110         INTEGER_CST rather than a negative test for ADDR_EXPR.
14111
14112 2017-09-21  Richard Sandiford  <richard.sandiford@linaro.org>
14113             Alan Hayward  <alan.hayward@arm.com>
14114             David Sherwood  <david.sherwood@arm.com>
14115
14116         * tree-vrp.c (extract_range_from_binary_expr_1): Check
14117         int_cst_rangeN before calling value_range_constant_singleton (&vrN).
14118
14119 2017-09-21  Richard Biener  <rguenther@suse.de>
14120
14121         PR tree-optimization/71351
14122         * graphite-isl-ast-to-gimple.c (translate_isl_ast_to_gimple::
14123         graphite_create_new_loop_guard): Remove, fold remaining parts
14124         into caller ...
14125         (translate_isl_ast_node_for): ... here and simplify.
14126
14127 2017-09-21  Jakub Jelinek  <jakub@redhat.com>
14128
14129         PR target/82260
14130         * config/i386/i386.md (*movqi_internal): Replace (=q,q) alternative
14131         with (=Q,Q), (=R,R) and (=r,r) alternatives, only enable the
14132         latter two for 64-bit, renumber alternatives, for -Os imov (=q,n)
14133         alternative always use QI mode, for -Os imov (=R,R) alternative
14134         always use SI mode, for imov (=Q,Q) or (=r,r) alternatives
14135         ignore -Os.
14136
14137 2017-09-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
14138             Jeff Law  <law@redhat.com>
14139
14140         * config/s390/s390.c (MIN_UNROLL_PROBES): Define.
14141         (allocate_stack_space): New function, partially extracted from
14142         s390_emit_prologue.
14143         (s390_emit_prologue): Track offset to most recent stack probe.
14144         Code to allocate space moved into allocate_stack_space.
14145         Dump actions when no stack is allocated.
14146         (s390_prologue_plus_offset): New function.
14147         (s390_emit_stack_probe): Likewise.
14148
14149 2017-09-20  Alexandre Oliva  <aoliva@redhat.com>
14150
14151         * common.opt (Wa, Wl, Wp, g, gz=): Add
14152         RejectNegative.
14153         (gno-column-info): Remove.
14154         (gcolumn-info): Drop RejectNegative.
14155         (gno-): New prefix.
14156         (gno-record-gcc-switches): Remove.
14157         (grecord-gcc-switches): Drop RejectNegative.
14158         (gno-split-dwarf): Remove.
14159         (gsplit-dwarf): Drop RejectNegative.
14160         (gno-strict-dwarf): Remove.
14161         (gstrict-dwarf): Drop RejectNegative.
14162         * config/darwin.opt (gfull, gused): Add RejectNegative.
14163         * dwarf2out.c (gen_producer_string): Drop
14164         gno-record-gcc-switches handler.
14165         * optc-gen.awk: Add g to prefixes with negative forms.
14166         * opts-common.c (remapping_prefix_p): New.
14167         (find_opt): Check it.
14168         (generate_canonical_option): Test g prefix.
14169         (option_map): Add -gno- mapping.
14170         (add_misspelling_candidates): Check remapping_prefix_p.
14171
14172 2017-09-20  Jeff Law  <law@redhat.com>
14173
14174         * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Fix
14175         thinko in stack clash protection support.
14176
14177         * explow.c (compute_stack_clash_protection_loop_data): Use
14178         CONST_INT_P instead of explicit test.  Verify object is a
14179         CONST_INT_P before looking at INTVAL.
14180         (anti_adjust_stack_and_probe_stack_clash): Use CONST_INT_P
14181         instead of explicit test.
14182
14183 2017-09-20  Segher Boessenkool  <segher@kernel.crashing.org>
14184
14185         PR target/77687
14186         * config/rs6000/rs6000.md (stack_restore_tie): Store to a scratch
14187         address instead of to r1 and r11.
14188
14189 2017-09-20  Sebastian Peryt  <sebastian.peryt@intel.com>
14190
14191         * config.gcc: Support "knm".
14192         * config/i386/driver-i386.c (host_detect_local_cpu): Detect "knm".
14193         * config/i386/i386-c.c (ix86_target_macros_internal): Handle
14194         PROCESSOR_KNM.
14195         * config/i386/i386.c (m_KNM): Define.
14196         (processor_target_table): Add "knm".
14197         (PTA_KNM): Define.
14198         (ix86_option_override_internal): Add "knm".
14199         (ix86_issue_rate): Add PROCESSOR_KNM.
14200         (ix86_adjust_cost): Ditto.
14201         (ia32_multipass_dfa_lookahead): Ditto.
14202         (get_builtin_code_for_version): Handle PROCESSOR_KNM.
14203         (fold_builtin_cpu): Add M_INTEL_KNM.
14204         * config/i386/i386.h (processor_costs): Define TARGET_KNM.
14205         (processor_type): Add PROCESSOR_KNM.
14206         * config/i386/x86-tune.def: Add m_KNM.
14207         * doc/invoke.texi: Add knm as x86 -march=/-mtune= CPU type.
14208
14209 2017-09-20  Richard Biener  <rguenther@suse.de>
14210
14211         PR tree-optimization/80213
14212         * graphite-scop-detection.c (trivially_empty_bb_p): Labels
14213         are allowed in empty BBs as well.
14214         (canonicalize_loop_closed_ssa): Also look for other complex
14215         edges.
14216         (scop_detection::get_sese): Include the loop-closed PHI block
14217         in loop SESEs.
14218         (scop_detection::merge_sese): Remove code adding extra blocks.
14219         (scop_detection::region_has_one_loop): Adjust for get_sese changes.
14220         (build_scops): Assert the final returned scop is invalid.
14221
14222 2017-09-20  Richard Biener  <rguenther@suse.de>
14223
14224         PR tree-optimization/82264
14225         * tree-ssa-sccvn.c (vn_phi_eq): Use safe_dyn_cast to check
14226         for GIMPLE_CONDs.
14227         (vn_phi_lookup): Likewise.
14228         (vn_phi_insert): Likewise.
14229
14230 2017-09-20  Jakub Jelinek  <jakub@redhat.com>
14231
14232         * dwarf2out.c (tree_add_const_value_attribute): For INTEGER_CST
14233         that fits into uhwi or shwi, add DW_AT_const_value regardless
14234         of early_dwarf without going through RTL, using add_AT_unsigned
14235         or add_AT_int.
14236
14237         * dwarf2out.c (DEBUG_LTO_DWO_INFO_SECTION): Reorder defines.
14238         (DEBUG_LTO_ABBREV_SECTION): Likewise.
14239         (DEBUG_LTO_MACINFO_SECTION): Likewise.
14240         (DEBUG_MACRO_SECTION): Likewise.
14241         (DEBUG_LTO_MACRO_SECTION): Likewise.
14242         (DEBUG_STR_DWO_SECTION): Likewise.
14243         (DEBUG_LTO_STR_DWO_SECTION): Likewise.
14244         (DEBUG_LTO_LINE_SECTION): Drop .dwo suffix from the name.
14245         (DEBUG_LTO_DWO_LINE_SECTION): Define.
14246         (DEBUG_LTO_LINE_STR_SECTION): Define.
14247         (init_sections_and_labels): Initialize debug_line_str_section
14248         variable.  Initialize debug_loc_section for -gdwarf-5 to
14249         DEBUG_LOCLISTS_SECTION.  Formatting fixes.
14250
14251 2017-09-20  Richard Biener  <rguenther@suse.de>
14252
14253         * graphite-sese-to-poly.c (extract_affine): Properly handle
14254         POINTER_PLUS_EXPR, BIT_NOT_EXPR and conversion to signed.
14255
14256 2017-09-20  Richard Biener  <rguenther@suse.de>
14257
14258         PR tree-optimization/81373
14259         * graphite-scop-detection.c (build_cross_bb_scalars_def):
14260         Force SESE live-out defs to be handled even if they are
14261         scev_analyzable_p.
14262
14263 2017-09-19  Jeff Law  <law@redhat.com>
14264
14265         * combine-stack-adj.c (combine_stack_adjustments_for_block): Do
14266         nothing for stack adjustments with REG_STACK_CHECK.
14267         * sched-deps.c (parse_add_or_inc): Reject insns with
14268         REG_STACK_CHECK from dependency breaking.
14269         * config/i386/i386.c (pro_epilogue_adjust_stack): Return insn.
14270         (ix86_adjust_satck_and_probe_stack_clash): Add REG_STACK_NOTEs.
14271         * reg-notes.def (STACK_CHECK): New note.
14272
14273         * config/i386/i386.c (ix86_adjust_stack_and_probe_stack_clash): New.
14274         (ix86_expand_prologue): Dump stack clash info as needed.
14275         Call ix86_adjust_stack_and_probe_stack_clash as needed.
14276
14277         * function.c (dump_stack_clash_frame_info): New function.
14278         * function.h (dump_stack_clash_frame_info): Prototype.
14279         (enum stack_clash_probes): New enum.
14280
14281         * config/alpha/alpha.c (alpha_expand_prologue): Also check
14282         flag_stack_clash_protection.
14283         * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Likewise.
14284         (arm_expand_prologue, thumb1_expand_prologue): Likewise.
14285         (arm_frame_pointer_required): Likewise.
14286         * config/ia64/ia64.c (ia64_compute_frame_size): Likewise.
14287         (ia64_expand_prologue): Likewise.
14288         * config/mips/mips.c (mips_expand_prologue): Likewise.
14289         * config/powerpcspe/powerpcspe.c (rs6000_expand_prologue): Likewise.
14290         * config/sparc/sparc.c (sparc_expand_prologue): Likewise.
14291         (sparc_flat_expand_prologue): Likewise.
14292         * config/spu/spu.c (spu_expand_prologue): Likewise.
14293
14294         * explow.c: Include "params.h".
14295         (anti_adjust_stack_and_probe_stack_clash): New function.
14296         (get_stack_check_protect): Likewise.
14297         (compute_stack_clash_protection_loop_data): Likewise.
14298         (emit_stack_clash_protection_loop_start): Likewise.
14299         (emit_stack_clash_protection_loop_end): Likewise.
14300         (allocate_dynamic_stack_space): Use get_stack_check_protect.
14301         Use anti_adjust_stack_and_probe_stack_clash.
14302         * explow.h (compute_stack_clash_protection_loop_data): Prototype.
14303         (emit_stack_clash_protection_loop_start): Likewise.
14304         (emit_stack_clash_protection_loop_end): Likewise.
14305         * rtl.h (get_stack_check_protect): Prototype.
14306         * target.def (stack_clash_protection_final_dynamic_probe): New hook.
14307         * targhooks.c (default_stack_clash_protection_final_dynamic_probe): New.
14308         * targhooks.h (default_stack_clash_protection_final_dynamic_probe):
14309         Prototype.
14310         * doc/tm.texi.in (TARGET_STACK_CLASH_PROTECTION_FINAL_DYNAMIC_PROBE):
14311         Add @hook.
14312         * doc/tm.texi: Rebuilt.
14313         * config/aarch64/aarch64.c (aarch64_expand_prologue): Use
14314         get_stack_check_protect.
14315         * config/alpha/alpha.c (alpha_expand_prologue): Likewise.
14316         * config/arm/arm.c (arm_expand_prologue): Likewise.
14317         (arm_frame_pointer_required): Likewise.
14318         * config/i386/i386.c (ix86_expand_prologue): Likewise.
14319         * config/ia64/ia64.c (ia64_expand_prologue): Likewise.
14320         * config/mips/mips.c (mips_expand_prologue): Likewise.
14321         * config/powerpcspe/powerpcspe.c (rs6000_emit_prologue): Likewise.
14322         * config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise.
14323         * config/sparc/sparc.c (sparc_expand_prologue): Likewise.
14324         (sparc_flat_expand_prologue): Likewise.
14325
14326         * common.opt (-fstack-clash-protection): New option.
14327         * flag-types.h (enum stack_check_type): Note difference between
14328         -fstack-check= and -fstack-clash-protection.
14329         * params.def (PARAM_STACK_CLASH_PROTECTION_GUARD_SIZE): New PARAM.
14330         (PARAM_STACK_CLASH_PROTECTION_PROBE_INTERVAL): Likewise.
14331         * toplev.c (process_options): Issue warnings/errors for cases
14332         not handled with -fstack-clash-protection.
14333         * doc/invoke.texi (-fstack-clash-protection): Document new option.
14334         (-fstack-check): Note additional problem with -fstack-check=generic.
14335         Note that -fstack-check is primarily for Ada and refer users
14336         to -fstack-clash-protection for stack-clash-protection.
14337         Document new params for stack clash protection.
14338
14339 2017-09-19  Uros Bizjak  <ubizjak@gmail.com>
14340
14341         * config/i386/i386.c (ix86_split_long_move): Do not handle
14342         address used for LEA in a special way.
14343
14344 2017-09-19  Segher Boessenkool  <segher@kernel.crashing.org>
14345
14346         * simplify-rtx.c (simplify_binary_operation_1): Fix typo in comment.
14347
14348 2017-09-19  Martin Sebor  <msebor@redhat.com>
14349
14350         PR c/81854
14351         * cgraphunit.c (handle_alias_pairs): Reject aliases between functions
14352         of incompatible types.
14353
14354 2017-09-19  Will Schmidt  <will_schmidt@vnet.ibm.com>
14355
14356         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
14357         for early folding of vector loads (ALTIVEC_BUILTIN_LVX_*).
14358         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
14359         Remove obsoleted code for handling ALTIVEC_BUILTIN_VEC_LD.
14360
14361 2017-09-19  Richard Biener  <rguenther@suse.de>
14362
14363         PR tree-optimization/82244
14364         * tree-vrp.c (remove_range_assertions): Do not propagate
14365         a constant to abnormals but replace the assert with a copy.
14366
14367 2017-09-19  Alexander Monakov  <amonakov@ispras.ru>
14368
14369         PR rtl-optimization/57878
14370         PR rtl-optimization/68988
14371         * lra-assigns.c (reload_pseudo_compare_func): Remove fragmentation
14372         avoidance test involving non_reload_pseudos.  Move frequency test
14373         below the general fragmentation avoidance test.
14374
14375 2017-09-19  Richard Biener  <rguenther@suse.de>
14376
14377         PR tree-optimization/69728
14378         * graphite-sese-to-poly.c (schedule_error): New global.
14379         (add_loop_schedule): Handle empty domain by failing the
14380         schedule.
14381         (build_original_schedule): Handle schedule_error.
14382
14383 2017-09-19  Richard Biener  <rguenther@suse.de>
14384
14385         * graphite-scop-detection.c (scop_detection::can_represent_loop):
14386         Do not iterate to sibling loops but only to siblings of inner
14387         loops.
14388
14389 2017-09-18  Andreas Schwab  <schwab@linux-m68k.org>
14390
14391         PR target/81613
14392         * config/m68k/m68k.md (moveq feeding equality comparison): Check
14393         that the registers are different.
14394
14395 2017-09-18  Uros Bizjak  <ubizjak@gmail.com>
14396
14397         * config/i386/i386.c (fold_builtin_cpu): Add M_AMDFAM17H
14398         to processor_model and "amdfam17h" to arch_names_table.
14399         * doc/extend.texi (__builtin_cpu_is): Document amdfam17h CPU name.
14400
14401 2017-09-18  Jakub Jelinek  <jakub@redhat.com>
14402
14403         PR c/82234
14404         * doc/extend.texi: Add @findex entry for __builtin_shuffle.
14405
14406 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14407             Alan Hayward  <alan.hayward@arm.com>
14408             David Sherwood  <david.sherwood@arm.com>
14409
14410         * tree-vectorizer.h (vect_slp_analyze_operations): Replace parameters
14411         with a vec_info *.
14412         * tree-vect-loop.c (vect_analyze_loop_operations): Update call
14413         accordingly.
14414         * tree-vect-slp.c (vect_slp_analyze_node_operations): Add vec_info *
14415         parameter.  Set SLP_TREE_NUMBER_OF_VEC_STMTS here rather than in
14416         vect_schedule_slp_instance.
14417         (vect_slp_analyze_operations): Replace parameters with a vec_info *.
14418         Update call to vect_slp_analyze_node_operations.  Simplify return
14419         value.
14420         (vect_slp_analyze_bb_1): Update call accordingly.
14421         (vect_schedule_slp_instance): Remove vectorization_factor parameter.
14422         Don't calculate SLP_TREE_NUMBER_OF_VEC_STMTS here.
14423         (vect_schedule_slp): Update call accordingly.
14424
14425 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14426             Alan Hayward  <alan.hayward@arm.com>
14427             David Sherwood  <david.sherwood@arm.com>
14428
14429         * tree-vect-data-refs.c (vect_get_smallest_scalar_type): Cope
14430         with types that aren't in fact scalar.
14431
14432 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14433
14434         * tree-vect-slp.c (vect_record_max_nunits): New function,
14435         split out from...
14436         (vect_build_slp_tree_1): ...here.
14437         (vect_build_slp_tree_2): Call it for phis too.
14438
14439 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14440
14441         * tree-vect-stmts.c (vectorizable_mask_load_store): Pass mask_vectype
14442         to vect_get_vec_def_for_operand when getting the mask operand.
14443
14444 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14445             Alan Hayward  <alan.hayward@arm.com>
14446             David Sherwood  <david.sherwood@arm.com>
14447
14448         * tree-vect-loop.c (vectorizable_live_operation): Fix type of
14449         bitstart.
14450
14451 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14452             Alan Hayward  <alan.hayward@arm.com>
14453             David Sherwood  <david.sherwood@arm.com>
14454
14455         * tree-vect-loop.c (vectorizable_live_operation): Fix element size
14456         calculation for vector booleans.
14457
14458 2017-09-18  Richard Sandiford  <richard.sandiford@linaro.org>
14459             Alan Hayward  <alan.hayward@arm.com>
14460             David Sherwood  <david.sherwood@arm.com>
14461
14462         * tree-vect-stmts.c (can_vectorize_live_stmts): New function,
14463         split out from...
14464         (vect_transform_stmt): ...here.
14465         (vect_analyze_stmt): Use it instead of calling
14466         vectorizable_live_operation directly.
14467
14468 2017-09-18  Cesar Philippidis  <cesar@codesourcery.com>
14469
14470         * omp-offload.c (oacc_xform_loop): Enable SIMD vectorization on
14471         non-SIMT targets in acc vector loops.
14472
14473 2017-09-18  Claudiu Zissulescu  <claziss@synopsys.com>
14474
14475         * configure.ac: Add arc and check if assembler supports gdwarf2.
14476         * configure: Regenerate.
14477
14478 2017-09-18  Richard Biener  <rguenther@suse.de>
14479
14480         PR tree-optimization/82220
14481         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Exclude
14482         epilogue niters from the min_profitable_iters compute.
14483
14484 2017-09-18  Jakub Jelinek  <jakub@redhat.com>
14485
14486         PR target/82145
14487         * config/i386/i386.c (ix86_init_large_pic_reg): Revert 2017-09-01
14488         changes.  Turn CODE_LABEL into NOTE_INSN_DELETED_LABEL immediately.
14489         (ix86_init_pic_reg): Revert 2017-09-01 changes.
14490
14491 2017-09-18  Eric Botcazou  <ebotcazou@adacore.com>
14492
14493         PR target/81361
14494         * dwarf2cfi.c (add_cfis_to_fde): Do not generate DW_CFA_set_loc after
14495         switching to a new text section.
14496
14497 2017-09-18  Richard Biener  <rguenther@suse.de>
14498
14499         * graphite-scop-detection.c (scop_detection::stmt_has_simple_data_ref):
14500         Simplify.
14501         (build_alias_set): Reject aliases with no access function.
14502
14503 2017-09-18  Richard Biener  <rguenther@suse.de>
14504
14505         PR tree-optimization/79622
14506         * graphite-scop-detection.c (build_cross_bb_scalars_def): Properly
14507         handle PHIs.
14508         (build_cross_bb_scalars_use): Likewise.
14509
14510 2017-09-18  Pierre-Marie de Rodat  <derodat@adacore.com>
14511
14512         * cgraph.h (cgraph_thunk_info): Fix a typo in a comment.
14513
14514 2017-09-18  Alan Modra  <amodra@gmail.com>
14515
14516         PR target/81996
14517         * gcc/config/rs6000/rs6000.c (rs6000_return_addr): Use
14518         stack_pointer_rtx for count 0.  Update comments.  Break up
14519         large rtl expression.
14520
14521 2017-09-17  Daniel Santos  <daniel.santos@pobox.com>
14522
14523         * config/i386/i386.c (xlogue_layout::STUB_NAME_MAX_LEN):
14524         Increase to 20 bytes.
14525         (xlogue_layout::s_stub_names): Add an additional size-2 diminsion.
14526         (xlogue_layout::get_stub_name): Modify to select the appropairate sse
14527         or avx version of the stub.
14528
14529 2017-09-17  H.J. Lu  <hongjiu.lu@intel.com>
14530
14531         PR target/82166
14532         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Properly
14533         compute the minimum stack alignment.  Also update preferred stack
14534         boundary for leaf functions.
14535
14536 2017-09-16  Richard Sandiford  <richard.sandiford@linaro.org>
14537
14538         PR tree-optimization/82228
14539         * tree-vect-loop.c (vectorizable_live_operation): Move initialization
14540         of ncopies.
14541
14542 2017-09-16  Chung-Ju Wu  <jasonwucj@gmail.com>
14543
14544         * common/config/nds32/nds32-common.c
14545         (nds32_option_optimization_table): Refine formatting.
14546         (nds32_option_optimization_table): Use -fsched-pressure and
14547         -fomit-frame-pointer for specific optimization level.
14548
14549 2017-09-16  Chung-Ju Wu  <jasonwucj@gmail.com>
14550
14551         * config/nds32/nds32.c: Refine formatting and comments.
14552         * config/nds32/nds32.h: Likewise.
14553         * config/nds32/nds32.md: Likewise.
14554         * config/nds32/nds32-cost.c: Likewise.
14555         * config/nds32/nds32-isr.c: Likewise.
14556         * config/nds32/nds32-md-auxiliary.c: Likewise.
14557         * config/nds32/nds32-multiple.md: Likewise.
14558         * config/nds32/nds32-predicates.c: Likewise.
14559
14560 2017-09-15  Andrew Sutton  <andrew.n.sutton@gmail.com>
14561             Jakub Jelinek  <jakub@redhat.com>
14562
14563         Add support for -std=c++2a.
14564         * doc/cpp.texi (__cplusplus): Document value for -std=c++2a
14565         or -std=gnu+2a.
14566         * doc/invoke.texi: Document -std=c++2a and -std=gnu++2a.
14567
14568 2017-09-15  Steve Ellcey  <sellcey@cavium.com>
14569
14570         PR target/82066
14571         * doc/extend.texi (Common Function Attributes): Add 
14572         references to ARM, AArch64, and S/390 specific attributes.
14573         (Function Specific Option Pragmas): Add AArch64 and S/390
14574         to list of back ends that support the target pragma.
14575
14576 2017-09-15  Nathan Sidwell  <nathan@acm.org>
14577
14578         * doc/standards.texi: Fix C++17 description.  Update URLs for
14579         C++11 & 14.
14580
14581 2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
14582
14583         * common.opt (Wcast-align=strict): New warning option.
14584         * doc/invoke.texi: Document -Wcast-align=strict. 
14585
14586 2017-09-15  Pierre-Marie de Rodat  <derodat@adacore.com>
14587
14588         * cgraph.h (cgraph_thunk_info): Add comments.
14589         * cgraph.c (cgraph_node::create_thunk): Adjust comment, make
14590         assert for VIRTUAL_* arguments stricter.
14591
14592 2017-09-15  Jackson Woodruff  <jackson.woodruff@arm.com>
14593
14594         PR tree-optimization/71026
14595         * match.pd: Move RDIV patterns from fold-const.c
14596         * fold-const.c (distribute_real_division): Removed.
14597         (fold_binary_loc): Remove calls to distribute_real_divison.
14598
14599 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
14600
14601         * doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document
14602         c++1z and gnu++1z as deprecated.  Change other references to
14603         -std=c++1z to -std=c++17 and -std=gnu++1z to -std=gnu++17.
14604         Change -Wc++1z-compat to -Wc++17-compat.
14605         * doc/cpp.texi: Document -std=c++17 defines __cplusplus 201703L.
14606         * dwarf2out.c (highest_c_language): Handle C++17.
14607         (gen_compile_unit_die): Likewise.
14608
14609 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
14610
14611         PR rtl-optimization/82192
14612         * combine.c (make_extraction): Don't look through non-paradoxical
14613         SUBREGs or TRUNCATE if pos + len is or might be bigger than
14614         inner's mode.
14615
14616 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
14617             Alan Hayward  <alan.hayward@arm.com>
14618             David Sherwood  <david.sherwood@arm.com>
14619
14620         * target.def (function_arg_offset): New hook.
14621         * targhooks.h (default_function_arg_offset): Declare.
14622         * targhooks.c (default_function_arg_offset): New function.
14623         * function.c (locate_and_pad_parm): Use
14624         targetm.calls.function_arg_offset instead of FUNCTION_ARG_OFFSET.
14625         * doc/tm.texi.in (FUNCTION_ARG_OFFSET): Replace with...
14626         (TARGET_FUNCTION_ARG_OFFSET): ...this.
14627         * doc/tm.texi: Regenerate.
14628         * config/spu/spu.h (FUNCTION_ARG_OFFSET): Delete.
14629         * config/spu/spu.c (spu_function_arg_offset): New function.
14630         (TARGET_FUNCTION_ARG_OFFSET): Redefine.
14631         * system.h (FUNCTION_ARG_OFFSET): Poison.
14632
14633 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
14634             Alan Hayard  <alan.hayward@arm.com>
14635             David Sherwood  <david.sherwood@arm.com>
14636
14637         * target.def (truly_noop_truncation): New hook.
14638         (mode_rep_extended): Refer to TARGET_TRULY_NOOP_TRUNCATION rather
14639         than TRULY_NOOP_TRUNCATION.
14640         * hooks.h (hook_bool_uint_uint_true): Declare.
14641         * hooks.c (hook_bool_uint_uint_true): New function.
14642         * doc/tm.texi.in (TRULY_NOOP_TRUNCATION): Replace with...
14643         (TARGET_TRULY_NOOP_TRUNCATION): ...this.
14644         * doc/tm.texi: Regenerate.
14645         * combine.c (make_extraction): Refer to TARGET_TRULY_NOOP_TRUNCATION
14646         rather than TRULY_NOOP_TRUNCATION in comments.
14647         (simplify_comparison): Likewise.
14648         (record_truncated_value): Likewise.
14649         * expmed.c (extract_bit_field_1): Likewise.
14650         (extract_split_bit_field): Likewise.
14651         * convert.c (convert_to_integer_1): Use targetm.truly_noop_truncation
14652         instead of TRULY_NOOP_TRUNCATION.
14653         * function.c (assign_parm_setup_block): Likewise.
14654         * machmode.h (TRULY_NOOP_TRUNCATION_MODES_P): Likewise.
14655         * rtlhooks.c: Include target.h.
14656         * config/aarch64/aarch64.h (TRULY_NOOP_TRUNCATION): Delete.
14657         * config/alpha/alpha.h (TRULY_NOOP_TRUNCATION): Delete.
14658         * config/arc/arc.h (TRULY_NOOP_TRUNCATION): Delete.
14659         * config/arm/arm.h (TRULY_NOOP_TRUNCATION): Delete.
14660         * config/avr/avr.h (TRULY_NOOP_TRUNCATION): Delete.
14661         * config/bfin/bfin.h (TRULY_NOOP_TRUNCATION): Delete.
14662         * config/c6x/c6x.h (TRULY_NOOP_TRUNCATION): Delete.
14663         * config/cr16/cr16.h (TRULY_NOOP_TRUNCATION): Delete.
14664         * config/cris/cris.h (TRULY_NOOP_TRUNCATION): Delete.
14665         * config/epiphany/epiphany.h (TRULY_NOOP_TRUNCATION): Delete.
14666         * config/fr30/fr30.h (TRULY_NOOP_TRUNCATION): Delete.
14667         * config/frv/frv.h (TRULY_NOOP_TRUNCATION): Delete.
14668         * config/ft32/ft32.h (TRULY_NOOP_TRUNCATION): Delete.
14669         * config/h8300/h8300.h (TRULY_NOOP_TRUNCATION): Delete.
14670         * config/i386/i386.h (TRULY_NOOP_TRUNCATION): Delete.
14671         * config/ia64/ia64.h (TRULY_NOOP_TRUNCATION): Delete.
14672         * config/iq2000/iq2000.h (TRULY_NOOP_TRUNCATION): Delete.
14673         * config/lm32/lm32.h (TRULY_NOOP_TRUNCATION): Delete.
14674         * config/m32c/m32c.h (TRULY_NOOP_TRUNCATION): Delete.
14675         * config/m32r/m32r.h (TRULY_NOOP_TRUNCATION): Delete.
14676         * config/m68k/m68k.h (TRULY_NOOP_TRUNCATION): Delete.
14677         * config/mcore/mcore.h (TRULY_NOOP_TRUNCATION): Delete.
14678         * config/microblaze/microblaze.h (TRULY_NOOP_TRUNCATION): Delete.
14679         * config/mips/mips.h (TRULY_NOOP_TRUNCATION): Delete.
14680         * config/mips/mips.c (mips_truly_noop_truncation): New function.
14681         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
14682         * config/mips/mips.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
14683         rather than TRULY_NOOP_TRUNCATION in comments.
14684         * config/mmix/mmix.h (TRULY_NOOP_TRUNCATION): Delete.
14685         * config/mn10300/mn10300.h (TRULY_NOOP_TRUNCATION): Delete.
14686         * config/moxie/moxie.h (TRULY_NOOP_TRUNCATION): Delete.
14687         * config/msp430/msp430.h (TRULY_NOOP_TRUNCATION): Delete.
14688         * config/nds32/nds32.h (TRULY_NOOP_TRUNCATION): Delete.
14689         * config/nios2/nios2.h (TRULY_NOOP_TRUNCATION): Delete.
14690         * config/nvptx/nvptx.h (TRULY_NOOP_TRUNCATION): Delete.
14691         * config/pa/pa.h (TRULY_NOOP_TRUNCATION): Delete.
14692         * config/pdp11/pdp11.h (TRULY_NOOP_TRUNCATION): Delete.
14693         * config/powerpcspe/powerpcspe.h (TRULY_NOOP_TRUNCATION): Delete.
14694         * config/riscv/riscv.h (TRULY_NOOP_TRUNCATION): Delete.
14695         * config/riscv/riscv.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
14696         rather than TRULY_NOOP_TRUNCATION in comments.
14697         * config/rl78/rl78.h (TRULY_NOOP_TRUNCATION): Delete.
14698         * config/rs6000/rs6000.h (TRULY_NOOP_TRUNCATION): Delete.
14699         * config/rx/rx.h (TRULY_NOOP_TRUNCATION): Delete.
14700         * config/s390/s390.h (TRULY_NOOP_TRUNCATION): Delete.
14701         * config/sh/sh.h (MAYBE_BASE_REGISTER_RTX_P): Remove
14702         TRULY_NOOP_TRUNCATION condition.
14703         (MAYBE_INDEX_REGISTER_RTX_P): Likewise.
14704         (TRULY_NOOP_TRUNCATION): Delete.
14705         * config/sparc/sparc.h (TRULY_NOOP_TRUNCATION): Delete.
14706         * config/spu/spu.h (TRULY_NOOP_TRUNCATION): Delete.
14707         * config/spu/spu.c (spu_truly_noop_truncation): New function.
14708         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
14709         * config/stormy16/stormy16.h (TRULY_NOOP_TRUNCATION): Delete.
14710         * config/tilegx/tilegx.h (TRULY_NOOP_TRUNCATION): Delete.
14711         * config/tilegx/tilegx.c (tilegx_truly_noop_truncation): New fuction.
14712         (TARGET_TRULY_NOOP_TRUNCATION): Redefine.
14713         * config/tilegx/tilegx.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
14714         rather than TRULY_NOOP_TRUNCATION in comments.
14715         * config/tilepro/tilepro.h (TRULY_NOOP_TRUNCATION): Delete.
14716         * config/v850/v850.h (TRULY_NOOP_TRUNCATION): Delete.
14717         * config/vax/vax.h (TRULY_NOOP_TRUNCATION): Delete.
14718         * config/visium/visium.h (TRULY_NOOP_TRUNCATION): Delete.
14719         * config/xtensa/xtensa.h (TRULY_NOOP_TRUNCATION): Delete.
14720         * system.h (TRULY_NOOP_TRUNCATION): Poison.
14721
14722 2017-09-15  Christophe Lyon  <christophe.lyon@linaro.org>
14723
14724         PR target/67591
14725         * config/arm/arm.md (*cmp_and): Add enabled_for_depr_it attribute.
14726         (*cmp_ior): Likewise.
14727         (*ior_scc_scc): Add alternative for enabled_for_depr_it attribute.
14728         (*ior_scc_scc_cmp): Likewise.
14729         (*and_scc_scc): Likewise.
14730         (*and_scc_scc_cmp): Likewise.
14731
14732 2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
14733             Alan Hayard  <alan.hayward@arm.com>
14734             David Sherwood  <david.sherwood@arm.com>
14735
14736         * target.def (can_change_mode_class): New hook.
14737         (mode_rep_extended): Refer to it instead of CANNOT_CHANGE_MODE_CLASS.
14738         (hard_regno_nregs): Likewise.
14739         * hooks.h (hook_bool_mode_mode_reg_class_t_true): Declare.
14740         * hooks.c (hook_bool_mode_mode_reg_class_t_true): New function.
14741         * doc/tm.texi.in (CANNOT_CHANGE_MODE_CLASS): Replace with...
14742         (TARGET_CAN_CHANGE_MODE_CLASS): ...this.
14743         (LOAD_EXTEND_OP): Update accordingly.
14744         * doc/tm.texi: Regenerate.
14745         * doc/rtl.texi: Refer to TARGET_CAN_CHANGE_MODE_CLASS instead of
14746         CANNOT_CHANGE_MODE_CLASS.
14747         * hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Replace with...
14748         (REG_CAN_CHANGE_MODE_P): ...this new macro.
14749         * combine.c (simplify_set): Update accordingly.
14750         * emit-rtl.c (validate_subreg): Likewise.
14751         * recog.c (general_operand): Likewise.
14752         * regcprop.c (mode_change_ok): Likewise.
14753         * reload1.c (choose_reload_regs): Likewise.
14754         (inherit_piecemeal_p): Likewise.
14755         * rtlanal.c (simplify_subreg_regno): Likewise.
14756         * postreload.c (reload_cse_simplify_set): Use REG_CAN_CHANGE_MODE_P
14757         instead of CANNOT_CHANGE_MODE_CLASS.
14758         (reload_cse_simplify_operands): Likewise.
14759         * reload.c (push_reload): Use targetm.can_change_mode_class
14760         instead of CANNOT_CHANGE_MODE_CLASS.
14761         (push_reload): Likewise.  Also use REG_CAN_CHANGE_MODE_P instead of
14762         REG_CANNOT_CHANGE_MODE_P.
14763         * config/alpha/alpha.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14764         * config/alpha/alpha.c (alpha_can_change_mode_class): New function.
14765         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14766         * config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14767         * config/arm/arm.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14768         (arm_can_change_mode_class): New function.
14769         * config/arm/neon.md: Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
14770         than CANNOT_CHANGE_MODE_CLASS in comments.
14771         * config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14772         * config/i386/i386-protos.h (ix86_cannot_change_mode_class): Delete.
14773         * config/i386/i386.c (ix86_cannot_change_mode_class): Replace with...
14774         (ix86_can_change_mode_class): ...this new function, inverting the
14775         sense of the return value.
14776         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14777         * config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14778         * config/ia64/ia64.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14779         (ia64_can_change_mode_class): New function.
14780         * config/m32c/m32c.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14781         * config/m32c/m32c-protos.h (m32c_cannot_change_mode_class): Delete.
14782         * config/m32c/m32c.c (m32c_cannot_change_mode_class): Replace with...
14783         (m32c_can_change_mode_class): ...this new function, inverting the
14784         sense of the return value.
14785         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14786         * config/mips/mips.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14787         * config/mips/mips-protos.h (mips_cannot_change_mode_class): Delete.
14788         * config/mips/mips.c (mips_cannot_change_mode_class): Replace with...
14789         (mips_can_change_mode_class): ...this new function, inverting the
14790         sense of the return value.
14791         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14792         * config/msp430/msp430.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14793         * config/msp430/msp430.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14794         (msp430_can_change_mode_class): New function.
14795         * config/nvptx/nvptx.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14796         * config/nvptx/nvptx.c (nvptx_can_change_mode_class): New function.
14797         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14798         * config/pa/pa32-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14799         * config/pa/pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14800         * config/pa/pa-protos.h (pa_cannot_change_mode_class): Delete.
14801         * config/pa/pa.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14802         (pa_cannot_change_mode_class): Replace with...
14803         (pa_can_change_mode_class): ...this new function, inverting the
14804         sense of the return value.
14805         (pa_modes_tieable_p): Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
14806         than CANNOT_CHANGE_MODE_CLASS in comments.
14807         * config/pdp11/pdp11.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14808         * config/pdp11/pdp11-protos.h (pdp11_cannot_change_mode_class): Delete.
14809         * config/pdp11/pdp11.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14810         (pdp11_cannot_change_mode_class): Replace with...
14811         (pdp11_can_change_mode_class): ...this new function, inverting the
14812         sense of the return value.
14813         * config/powerpcspe/powerpcspe.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14814         * config/powerpcspe/powerpcspe-protos.h
14815         (rs6000_cannot_change_mode_class_ptr): Delete.
14816         * config/powerpcspe/powerpcspe.c
14817         (rs6000_cannot_change_mode_class_ptr): Delete.
14818         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14819         (rs6000_option_override_internal): Assign to
14820         targetm.can_change_mode_class instead of
14821         rs6000_cannot_change_mode_class_ptr.
14822         (rs6000_cannot_change_mode_class): Replace with...
14823         (rs6000_can_change_mode_class): ...this new function, inverting the
14824         sense of the return value.
14825         (rs6000_debug_cannot_change_mode_class): Replace with...
14826         (rs6000_debug_can_change_mode_class): ...this new function.
14827         * config/riscv/riscv.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14828         * config/riscv/riscv.c (riscv_can_change_mode_class): New function.
14829         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14830         * config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14831         * config/rs6000/rs6000-protos.h (rs6000_cannot_change_mode_class_ptr):
14832         Delete.
14833         * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class_ptr): Delete.
14834         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14835         (rs6000_option_override_internal): Assign to
14836         targetm.can_change_mode_class instead of
14837         rs6000_cannot_change_mode_class_ptr.
14838         (rs6000_cannot_change_mode_class): Replace with...
14839         (rs6000_can_change_mode_class): ...this new function, inverting the
14840         sense of the return value.
14841         (rs6000_debug_cannot_change_mode_class): Replace with...
14842         (rs6000_debug_can_change_mode_class): ...this new function.
14843         * config/s390/s390.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14844         * config/s390/s390-protos.h (s390_cannot_change_mode_class): Delete.
14845         * config/s390/s390.c (s390_cannot_change_mode_class): Replace with...
14846         (s390_can_change_mode_class): ...this new function, inverting the
14847         sense of the return value.
14848         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14849         * config/sh/sh.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14850         * config/sh/sh-protos.h (sh_cannot_change_mode_class): Delete.
14851         * config/sh/sh.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14852         (sh_cannot_change_mode_class): Replace with...
14853         (sh_can_change_mode_class): ...this new function, inverting the
14854         sense of the return value.
14855         * config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14856         * config/sparc/sparc.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14857         (sparc_can_change_mode_class): New function.
14858         * config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14859         * config/spu/spu.c (spu_can_change_mode_class): New function.
14860         (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14861         * config/visium/visium.h (CANNOT_CHANGE_MODE_CLASS): Delete.
14862         * config/visium/visium.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
14863         (visium_can_change_mode_class): New function.
14864         * system.h (CANNOT_CHANGE_MODE_CLASS): Poison.
14865
14866 2017-09-15  Richard Biener  <rguenther@suse.de>
14867
14868         PR tree-optimization/82217
14869         * tree-ssa-sccvn.c (visit_phi): Properly handle all VN_TOP
14870         but not undefined case.
14871
14872 2017-09-15  Jakub Jelinek  <jakub@redhat.com>
14873
14874         PR target/82145
14875         * postreload.c (reload_cse_simplify_operands): Skip
14876         NOTE_INSN_DELETED_LABEL similarly to skipping CODE_LABEL.
14877
14878 2017-09-15  Richard Biener  <rguenther@suse.de>
14879
14880         PR tree-optimization/68823
14881         * graphite-scop-detection.c (build_alias_set): If we have a
14882         possible dependence check whether we can handle them by just
14883         looking at the DRs DR_ACCESS_FNs.
14884         (build_scops): If build_alias_set fails, fail the SCOP.
14885
14886 2017-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
14887
14888         * config/rs6000/rs6000-builtin.def (BU_FLOAT128_1_HW): New macros
14889         to support float128 built-in functions that require the ISA 3.0
14890         hardware.
14891         (BU_FLOAT128_3_HW): Likewise.
14892         (SQRTF128): Add support for the IEEE 128-bit square root and fma
14893         built-in functions.
14894         (FMAF128): Likewise.
14895         (FMAQ): Likewise.
14896         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
14897         support for built-in functions that need the ISA 3.0 IEEE 128-bit
14898         floating point instructions.
14899         (rs6000_invalid_builtin): Likewise.
14900         (rs6000_builtin_mask_names): Likewise.
14901         * config/rs6000/rs6000.h (MASK_FLOAT128_HW): Likewise.
14902         (RS6000_BTM_FLOAT128_HW): Likewise.
14903         (RS6000_BTM_COMMON): Likewise.
14904         * config/rs6000/rs6000.md (fma<mode>4_hw): Add a generator
14905         function.
14906         * doc/extend.texi (RS/6000 built-in functions): Document the
14907         IEEE 128-bit floating point square root and fused multiply-add
14908         built-in functions.
14909
14910 2017-09-14  Pat Haugen  <pthaugen@us.ibm.com>
14911
14912         * config/rs6000/rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC
14913         reg (r2) isn't in the set of registers defined in the prologue.
14914
14915 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14916             Alan Hayward  <alan.hayward@arm.com>
14917             David Sherwood  <david.sherwood@arm.com>
14918
14919         * tree-vectorizer.h (_loop_vec_info): Add max_vectorization_factor.
14920         (LOOP_VINFO_MAX_VECT_FACTOR): New macro.
14921         (LOOP_VINFO_ORIG_VECT_FACTOR): Replace with...
14922         (LOOP_VINFO_ORIG_MAX_VECT_FACTOR): ...this new macro.
14923         * tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Update
14924         accordingly.
14925         * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
14926         max_vectorization_factor.
14927         (vect_analyze_loop_2): Set LOOP_VINFO_MAX_VECT_FACTOR.
14928
14929 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14930             Alan Hayward  <alan.hayward@arm.com>
14931             David Sherwood  <david.sherwood@arm.com>
14932
14933         * tree-vectorizer.h (vect_min_worthwhile_factor): Delete.
14934         (vect_worthwhile_without_simd_p): Declare.
14935         * tree-vect-loop.c (vect_worthwhile_without_simd_p): New function.
14936         (vectorizable_reduction): Use it.
14937         * tree-vect-stmts.c (vectorizable_shift): Likewise.
14938         (vectorizable_operation): Likewise.
14939
14940 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14941             Alan Hayward  <alan.hayward@arm.com>
14942             David Sherwood  <david.sherwood@arm.com>
14943
14944         * tree-vectorizer.h (vect_get_num_copies): New function.
14945         * tree-vect-data-refs.c (vect_get_data_access_cost): Use it.
14946         * tree-vect-loop.c (vectorizable_reduction): Likewise.
14947         (vectorizable_induction): Likewise.
14948         (vectorizable_live_operation): Likewise.
14949         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
14950         (vectorizable_bswap): Likewise.
14951         (vectorizable_call): Likewise.
14952         (vectorizable_conversion): Likewise.
14953         (vectorizable_assignment): Likewise.
14954         (vectorizable_shift): Likewise.
14955         (vectorizable_operation): Likewise.
14956         (vectorizable_store): Likewise.
14957         (vectorizable_load): Likewise.
14958         (vectorizable_condition): Likewise.
14959         (vectorizable_comparison): Likewise.
14960         (vect_analyze_stmt): Pass the slp node to vectorizable_live_operation.
14961
14962 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14963             Alan Hayward  <alan.hayward@arm.com>
14964             David Sherwood  <david.sherwood@arm.com>
14965
14966         * tree-vect-loop.c (vectorizable_induction): Use gimple_build instead
14967         of vect_init_vector.
14968
14969 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14970             Alan Hayward  <alan.hayward@arm.com>
14971             David Sherwood  <david.sherwood@arm.com>
14972
14973         * gimple-fold.h (gimple_build_vector_from_val): Declare, and provide
14974         an inline wrapper that provides a location.
14975         (gimple_build_vector): Likewise.
14976         * gimple-fold.c (gimple_build_vector_from_val): New function.
14977         (gimple_build_vector): Likewise.
14978         * tree-vect-loop.c (get_initial_def_for_reduction): Use the new
14979         functions to build the initial value.  Always return a gimple value.
14980         (get_initial_defs_for_reduction): Likewise.  Only compute
14981         neutral_vec once.
14982         (vect_create_epilog_for_reduction): Don't call force_gimple_operand or
14983         vect_init_vector on the results from get_initial_def(s)_for_reduction.
14984         (vectorizable_induction): Use gimple_build_vector rather than
14985         vect_init_vector.
14986
14987 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
14988             Alan Hayward  <alan.hayward@arm.com>
14989             David Sherwood  <david.sherwood@arm.com>
14990
14991         * target.h (vec_perm_indices): New typedef.
14992         (auto_vec_perm_indices): Likewise.
14993         * optabs-query.h: Include target.h
14994         (can_vec_perm_p): Take a vec_perm_indices *.
14995         * optabs-query.c (can_vec_perm_p): Likewise.
14996         (can_mult_highpart_p): Update accordingly.  Use auto_vec_perm_indices.
14997         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
14998         * tree-vect-generic.c (lower_vec_perm): Likewise.
14999         * tree-vect-data-refs.c (vect_grouped_store_supported): Likewise.
15000         (vect_grouped_load_supported): Likewise.
15001         (vect_shift_permute_load_chain): Likewise.
15002         (vect_permute_store_chain): Use auto_vec_perm_indices.
15003         (vect_permute_load_chain): Likewise.
15004         * fold-const.c (fold_vec_perm): Take vec_perm_indices.
15005         (fold_ternary_loc): Update accordingly.  Use auto_vec_perm_indices.
15006         Update uses of can_vec_perm_p.
15007         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Replace the
15008         mode with a number of elements.  Take a vec_perm_indices *.
15009         (vect_create_epilog_for_reduction): Update accordingly.
15010         Use auto_vec_perm_indices.
15011         (have_whole_vector_shift): Likewise.  Update call to can_vec_perm_p.
15012         * tree-vect-slp.c (vect_build_slp_tree_1): Likewise.
15013         (vect_transform_slp_perm_load): Likewise.
15014         (vect_schedule_slp_instance): Use auto_vec_perm_indices.
15015         * tree-vectorizer.h (vect_gen_perm_mask_any): Take a vec_perm_indices.
15016         (vect_gen_perm_mask_checked): Likewise.
15017         * tree-vect-stmts.c (vect_gen_perm_mask_any): Take a vec_perm_indices.
15018         (vect_gen_perm_mask_checked): Likewise.
15019         (vectorizable_mask_load_store): Use auto_vec_perm_indices.
15020         (vectorizable_store): Likewise.
15021         (vectorizable_load): Likewise.
15022         (perm_mask_for_reverse): Likewise.  Update call to can_vec_perm_p.
15023         (vectorizable_bswap): Likewise.
15024
15025 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
15026             Alan Hayward  <alan.hayward@arm.com>
15027             David Sherwood  <david.sherwood@arm.com>
15028
15029         * tree.h (build_vector): Take a vec<tree> instead of a tree *.
15030         * tree.c (build_vector): Likewise.
15031         (build_vector_from_ctor): Update accordingly.
15032         (build_vector_from_val): Likewise.
15033         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
15034         * tree-ssa-forwprop.c (simplify_vector_constructor): Likewise.
15035         * tree-vect-generic.c (add_rshift): Likewise.
15036         (expand_vector_divmod): Likewise.
15037         (optimize_vector_constructor): Likewise.
15038         * tree-vect-slp.c (vect_get_constant_vectors): Likewise.
15039         (vect_transform_slp_perm_load): Likewise.
15040         (vect_schedule_slp_instance): Likewise.
15041         * tree-vect-stmts.c (vectorizable_bswap): Likewise.
15042         (vectorizable_call): Likewise.
15043         (vect_gen_perm_mask_any): Likewise.  Add elements in order.
15044         * expmed.c (make_tree): Likewise.
15045         * fold-const.c (fold_negate_expr_1): Use auto_vec<tree> when building
15046         a vector passed to build_vector.
15047         (fold_convert_const): Likewise.
15048         (exact_inverse): Likewise.
15049         (fold_ternary_loc): Likewise.
15050         (fold_relational_const): Likewise.
15051         (const_binop): Likewise.  Use VECTOR_CST_ELT directly when operating
15052         on VECTOR_CSTs, rather than going through vec_cst_ctor_to_array.
15053         (const_unop): Likewise.  Store the reduction accumulator in a
15054         variable rather than an array.
15055         (vec_cst_ctor_to_array): Take the number of elements as a parameter.
15056         (fold_vec_perm): Update calls accordingly.  Use auto_vec<tree> for
15057         the new vector, rather than constructing it after the input arrays.
15058         (native_interpret_vector): Use auto_vec<tree> when building
15059         a vector passed to build_vector.  Add elements in order.
15060         * tree-vect-loop.c (get_initial_defs_for_reduction): Use
15061         auto_vec<tree> when building a vector passed to build_vector.
15062         (vect_create_epilog_for_reduction): Likewise.
15063         (vectorizable_induction): Likewise.
15064         (get_initial_def_for_reduction): Likewise.  Fix indentation of
15065         case statements.
15066         * config/sparc/sparc.c (sparc_handle_vis_mul8x16): Change n_elts
15067         to a vec<tree> *.
15068         (sparc_fold_builtin): Use auto_vec<tree> when building a vector
15069         passed to build_vector.
15070
15071 2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
15072             Alan Hayward  <alan.hayward@arm.com>
15073             David Sherwood  <david.sherwood@arm.com>
15074
15075         * tree-core.h (tree_base::u): Add an "nelts" field.
15076         (tree_vector): Use VECTOR_CST_NELTS as the length.
15077         * tree.c (tree_size): Likewise.
15078         (make_vector): Initialize VECTOR_CST_NELTS.
15079         * tree.h (VECTOR_CST_NELTS): Use the u.nelts field.
15080         * cfgexpand.c (expand_debug_expr): Use VECTOR_CST_NELTS instead of
15081         TYPE_VECTOR_SUBPARTS.
15082         * expr.c (const_vector_mask_from_tree): Consistently use "units"
15083         as the number of units, setting it from VECTOR_CST_NELTS.
15084         (const_vector_from_tree): Likewise.
15085         * fold-const.c (negate_expr_p): Use VECTOR_CST_NELTS instead of
15086         TYPE_VECTOR_SUBPARTS for the number of elements in a VECTOR_CST.
15087         (fold_negate_expr_1): Likewise.
15088         (fold_convert_const): Likewise.
15089         (const_binop): Likewise.  Differentiate the number of output and
15090         input elements.
15091         (const_unop): Likewise.
15092         (fold_ternary_loc): Use VECTOR_CST_NELTS for the number of elements
15093         in a VECTOR_CST, asserting that it is the same as TYPE_VECTOR_SUBPARTS
15094         in cases that did the opposite.
15095
15096 2017-09-14  Richard Biener  <rguenther@suse.de>
15097
15098         * tree-ssa-sccvn.c (visit_phi): Merge undefined values similar
15099         to VN_TOP.
15100
15101 2017-09-14  Eric Botcazou  <ebotcazou@adacore.com>
15102
15103         * dwarf2out.c (dwarf2out_source_line): Remove superfluous test.
15104
15105 2017-09-14  Jakub Jelinek  <jakub@redhat.com>
15106
15107         PR target/81325
15108         * cfgbuild.c (find_bb_boundaries): Ignore debug insns in decisions
15109         if and where to split a bb, except for splitting before debug insn
15110         sequences followed by non-label real insn.  Delete debug insns
15111         in between basic blocks.
15112
15113         * combine.c (make_compound_operation_int): Formatting fixes.
15114
15115         * config/alpha/elf.h (LINK_EH_SPEC): Add -static-pie support.
15116         * config/alpha/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
15117         * config/netbsd.h (LINK_EH_SPEC): Likewise.
15118         * config/sol2.h (LINK_EH_SPEC): Likewise.
15119         * config/arm/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
15120         * config/s390/linux.h (LINK_SPEC): Likewise.
15121         * config/freebsd.h (LINK_EH_SPEC): Likewise.
15122         * config/openbsd.h (LINK_EH_SPEC): Likewise.
15123         * config/lm32/uclinux-elf.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
15124         * config/aarch64/aarch64-linux.h (LINUX_TARGET_LINK_SPEC): Likewise.
15125         * config/powerpcspe/sysv4.h (LINK_EH_SPEC): Likewise.
15126         * config/bfin/linux.h (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
15127         * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Fix a typo.
15128         * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Formatting fix.
15129
15130 2017-09-13  Jakub Jelinek  <jakub@redhat.com>
15131
15132         * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Add -static-pie
15133         support.
15134         (ENDFILE_LINUX_SPEC): Likewise.
15135         (LINK_EH_SPEC): Likewise.
15136         * config/rs6000/linux64.h (LINK_SHLIB_SPEC): Likewise.
15137         (LINK_OS_LINUX_SPEC32): Likewise.
15138         (LINK_OS_LINUX_SPEC64): Likewise.
15139         * config/rs6000/linux.h (LINK_SHLIB_SPEC): Likewise.
15140         (LINK_OS_LINUX_SPEC): Likewise.
15141
15142 2017-09-13  Martin Liska  <mliska@suse.cz>
15143
15144         PR middle-end/82154
15145         * stmt.c (expand_sjlj_dispatch_table): Use CASE_LOW when
15146         CASE_HIGH is NULL_TREE.
15147
15148 2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
15149             Alan Hayward  <alan.hayward@arm.com>
15150             David Sherwood  <david.sherwood@arm.com>
15151
15152         * target.def (secondary_memory_needed): New hook.
15153         (secondary_reload): Refer to TARGET_SECONDARY_MEMORY_NEEDED
15154         instead of SECONDARY_MEMORY_NEEDED.
15155         (secondary_memory_needed_mode): Likewise.
15156         * hooks.h (hook_bool_mode_reg_class_t_reg_class_t_false): Declare.
15157         * hooks.c (hook_bool_mode_reg_class_t_reg_class_t_false): New function.
15158         * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED): Replace with...
15159         (TARGET_SECONDARY_MEMORY_NEEDED): ...this.
15160         (SECONDARY_MEMORY_NEEDED_RTX): Update reference accordingly.
15161         * doc/tm.texi: Regenerate.
15162         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED): Delete.
15163         * config/alpha/alpha.c (alpha_secondary_memory_needed): New function.
15164         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15165         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED): Delete.
15166         * config/i386/i386-protos.h (ix86_secondary_memory_needed): Delete.
15167         * config/i386/i386.c (inline_secondary_memory_needed): Put the
15168         mode argument first and change the reg_class arguments to reg_class_t.
15169         (ix86_secondary_memory_needed): Likewise.  Remove the strict parameter.
15170         Make static.  Update the call to inline_secondary_memory_needed.
15171         (ix86_register_move_cost): Update the call to
15172         inline_secondary_memory_needed.
15173         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15174         * config/ia64/ia64.h (SECONDARY_MEMORY_NEEDED): Delete commented-out
15175         definition.
15176         * config/ia64/ia64.c (spill_xfmode_rfmode_operand): Refer to
15177         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
15178         in comment.
15179         * config/mips/mips.h (SECONDARY_MEMORY_NEEDED): Delete.
15180         * config/mips/mips-protos.h (mips_secondary_memory_needed): Delete.
15181         * config/mips/mips.c (mips_secondary_memory_needed): Make static
15182         and match hook interface.  Add comment from mips.h.
15183         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15184         * config/mmix/mmix.md (truncdfsf2): Refer to
15185         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
15186         in comment.
15187         * config/pa/pa-64.h (SECONDARY_MEMORY_NEEDED): Rename to...
15188         (PA_SECONDARY_MEMORY_NEEDED): ...this, and put the mode argument first.
15189         * config/pa/pa.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15190         (pa_secondary_memory_needed): New function.
15191         * config/pdp11/pdp11.h (SECONDARY_MEMORY_NEEDED): Delete.
15192         * config/pdp11/pdp11-protos.h (pdp11_secondary_memory_needed): Delete.
15193         * config/pdp11/pdp11.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15194         (pdp11_secondary_memory_needed): Make static and match hook interface.
15195         * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED): Delete.
15196         * config/powerpcspe/powerpcspe-protos.h
15197         (rs6000_secondary_memory_needed_ptr): Delete.
15198         * config/powerpcspe/powerpcspe.c (rs6000_secondary_memory_needed_ptr):
15199         Delete.
15200         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15201         (rs6000_option_override_internal): Assign to
15202         targetm.secondary_memory_needed rather than
15203         rs6000_secondary_memory_needed_ptr.
15204         (rs6000_secondary_memory_needed): Match hook interface.
15205         (rs6000_debug_secondary_memory_needed): Likewise.
15206         * config/riscv/riscv.h (SECONDARY_MEMORY_NEEDED): Delete.
15207         * config/riscv/riscv.c (riscv_secondary_memory_needed): New function.
15208         (riscv_register_move_cost): Use it instead of SECONDARY_MEMORY_NEEDED.
15209         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15210         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED): Delete.
15211         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_ptr):
15212         Delete.
15213         * config/rs6000/rs6000.c (rs6000_secondary_memory_needed_ptr): Delete.
15214         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15215         (rs6000_option_override_internal): Assign to
15216         targetm.secondary_memory_needed rather than
15217         rs6000_secondary_memory_needed_ptr.
15218         (rs6000_secondary_memory_needed): Match hook interface.
15219         (rs6000_debug_secondary_memory_needed): Likewise.
15220         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED): Delete.
15221         * config/s390/s390.c (s390_secondary_memory_needed): New function.
15222         (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15223         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED): Delete.
15224         * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED): Redefine.
15225         (sparc_secondary_memory_needed): New function.
15226         * lra-constraints.c (check_and_process_move): Refer to
15227         TARGET_SECONDARY_MEMORY_NEEDED rather than SECONDARY_MEMORY_NEEDED
15228         in comment.
15229         (curr_insn_transform): Likewise.
15230         (process_alt_operands): Use targetm.secondary_memory_needed
15231         instead of TARGET_SECONDARY_MEMORY_NEEDED.
15232         (check_secondary_memory_needed_p): Likewise.
15233         (choose_split_class): Likewise.
15234         * reload.c: Unconditionally include code that was previously
15235         conditional on SECONDARY_MEMORY_NEEDED.
15236         (push_secondary_reload): Use targetm.secondary_memory_needed
15237         instead of TARGET_SECONDARY_MEMORY_NEEDED.
15238         (push_reload): Likewise.
15239         * reload1.c: Unconditionally include code that was previously
15240         conditional on SECONDARY_MEMORY_NEEDED.
15241         (choose_reload_regs): Use targetm.secondary_memory_needed
15242         instead of TARGET_SECONDARY_MEMORY_NEEDED.
15243         (gen_reload): Likewise.
15244         * system.h (SECONDARY_MEMORY_NEEDED): Poison.
15245
15246 2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
15247             Alan Hayward  <alan.hayward@arm.com>
15248             David Sherwood  <david.sherwood@arm.com>
15249
15250         * target.def (secondary_memory_needed_mode): New hook:
15251         * targhooks.c (default_secondary_memory_needed_mode): Declare.
15252         * targhooks.h (default_secondary_memory_needed_mode): New function.
15253         * doc/tm.texi.in (SECONDARY_MEMORY_NEEDED_MODE): Replace with...
15254         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): ...this.
15255         * doc/tm.texi: Regenerate.
15256         * lra-constraints.c (check_and_process_move): Use
15257         targetm.secondary_memory_needed_mode instead of
15258         TARGET_SECONDARY_MEMORY_NEEDED_MODE.
15259         (curr_insn_transform): Likewise.
15260         * reload.c (get_secondary_mem): Likewise.
15261         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
15262         * config/alpha/alpha.c (alpha_secondary_memory_needed_mode): New
15263         function.
15264         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
15265         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
15266         * config/i386/i386.c (ix86_secondary_memory_needed_mode): New function.
15267         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
15268         * config/powerpcspe/powerpcspe.h (SECONDARY_MEMORY_NEEDED_MODE):
15269         Delete.
15270         * config/powerpcspe/powerpcspe-protos.h
15271         (rs6000_secondary_memory_needed_mode): Delete.
15272         * config/powerpcspe/powerpcspe.c
15273         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
15274         (rs6000_secondary_memory_needed_mode): Make static.
15275         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
15276         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_mode):
15277         Delete.
15278         * config/rs6000/rs6000.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
15279         Redefine.
15280         (rs6000_secondary_memory_needed_mode): Make static.
15281         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
15282         * config/s390/s390.c (s390_secondary_memory_needed_mode): New function.
15283         (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Redefine.
15284         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Delete.
15285         * config/sparc/sparc.c (TARGET_SECONDARY_MEMORY_NEEDED_MODE):
15286         Redefine.
15287         (sparc_secondary_memory_needed_mode): New function.
15288         * system.h (TARGET_SECONDARY_MEMORY_NEEDED_MODE): Poison.
15289
15290 2017-09-13  Jackson Woodruff  <jackson.woodruff@arm.com>
15291
15292         * config/aarch64/constraints.md (Umq): New constraint.
15293         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>):
15294         Change to use Umq.
15295         (mov<mode>): Update condition.
15296
15297 2017-09-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
15298
15299         * gimple-ssa-store-merging.c (sort_by_bitpos): Compare store order
15300         when bitposition is the same.
15301
15302 2017-09-13  Richard Biener  <rguenther@suse.de>
15303
15304         * dwarf2out.c (output_die_symbol): Remove.
15305         (output_die): Do not output a DIEs symbol.
15306
15307 2017-09-13  Richard Biener  <rguenther@suse.de>
15308
15309         PR middle-end/82128
15310         * gimple-fold.c (gimple_fold_call): Update SSA name in-place to
15311         default-def to avoid breaking iterator update with the weird
15312         interaction with cgraph_update_edges_for_call_stmt_node.
15313
15314 2017-09-13  Richard Biener  <rguenther@suse.de>
15315
15316         * tree-cfg.c (verify_gimple_assign_binary): Add verification
15317         for WIDEN_SUM_EXPR, VEC_WIDEN_MULT_{HI,LO,EVEN,ODD}_EXPR,
15318         VEC_PACK_{TRUNC,SAT,FIX_TRUNC}_EXPR.
15319         (verify_gimple_assign_ternary): Add verification for DOT_PROD_EXPR.
15320
15321 2017-09-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
15322
15323         * config/aarch64/aarch64.c (aarch64_override_options_after_change_1):
15324         Disable pc relative literal load irrespective of
15325         TARGET_FIX_ERR_A53_84341 for default.
15326
15327 2017-09-12  Eric Botcazou  <ebotcazou@adacore.com>
15328
15329         * config/sparc/sparc.c (output_return): Output the source location of
15330         the insn in the delay slot, if any.
15331         (output_sibcall): Likewise.
15332
15333 2017-09-12  H.J. Lu  <hongjiu.lu@intel.com>
15334
15335         PR driver/81498
15336         * common.opt (-static-pie): New alias.
15337         (shared): Negate static-pie.
15338         (-no-pie): Update help text.
15339         (-pie): Likewise.
15340         (static-pie): New option.
15341         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Add
15342         -static-pie support.
15343         (GNU_USER_TARGET_ENDFILE_SPEC): Likewise.
15344         (LINK_EH_SPEC): Likewise.
15345         (LINK_GCC_C_SEQUENCE_SPEC): Likewise.
15346         * config/i386/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
15347         * config/i386/gnu-user64.h (GNU_USER_TARGET_LINK_SPEC): Likewise.
15348         * gcc.c (LINK_COMMAND_SPEC): Likewise.
15349         (init_gcc_specs): Likewise.
15350         (init_spec): Likewise.
15351         (display_help): Update help message for -pie.
15352         * doc/invoke.texi: Update -pie, -no-pie and -static.  Document
15353         -static-pie.
15354
15355 2017-09-12  Wilco Dijkstra  <wdijkstr@arm.com>
15356
15357         * config/aarch64/aarch64.md (movsi_aarch64): Remove all '*'.
15358         (movdi_aarch64): Likewise.
15359         (movti_aarch64): Likewise.
15360
15361 2017-09-12 Simon Wright <simon@pushface.org>
15362
15363         PR target/80204
15364         * config/darwin-driver.c (darwin_find_version_from_kernel): Eliminate
15365         calculation of the minor version, always output as 0.
15366
15367 2017-09-12  Jakub Jelinek  <jakub@redhat.com>
15368
15369         PR target/82112
15370         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
15371         ALTIVEC_BUILTIN_VEC_LD if arg1 has array type call default_conversion
15372         on it early, rather than manual conversion late.  For
15373         ALTIVEC_BUILTIN_VEC_ST if arg2 has array type call default_conversion
15374         instead of performing manual conversion.
15375
15376 2017-09-12  Carl Love  <cel@us.ibm.com>
15377
15378         * config/rs6000/altivec.md (vec_widen_umult_even_v4si,
15379         vec_widen_smult_even_v4si): Add define expands for vmuleuw, vmulesw,
15380         vmulouw, vmulosw.
15381         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
15382         VMULOSW): Add definitions.
15383         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
15384         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
15385         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
15386         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
15387         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
15388
15389 2017-09-12  James Greenhalgh  <james.greenhalgh@arm.com>
15390
15391         * config/aarch64/aarch64.md (movdi_aarch64): Set load/store
15392         types correctly.
15393         (movti_aarch64): Likewise.
15394         (movdf_aarch64): Likewise.
15395         (movtf_aarch64): Likewise.
15396         (load_pairdi): Likewise.
15397         (store_pairdi): Likewise.
15398         (load_pairdf): Likewise.
15399         (store_pairdf): Likewise.
15400         (loadwb_pair<GPI:mode>_<P:mode>): Likewise.
15401         (storewb_pair<GPI:mode>_<P:mode>): Likewise.
15402         (ldr_got_small_<mode>): Likewise.
15403         (ldr_got_small_28k_<mode>): Likewise.
15404         (ldr_got_tiny): Likewise.
15405         * config/aarch64/iterators.md (ldst_sz): New.
15406         (ldpstp_sz): Likewise.
15407         * config/aarch64/thunderx.md (thunderx_storepair): Split store_8
15408         to store_16.
15409         (thunderx_load): Split load_8 to load_16.
15410         * config/aarch64/thunderx2t99.md (thunderx2t99_loadpair): Split
15411         load_8 to load_16.
15412         (thunderx2t99_storepair_basic): Split store_8 to store_16.
15413         * config/arm/xgene1.md (xgene1_load_pair): Split load_8 to load_16.
15414         (xgene1_store_pair): Split store_8 to store_16.
15415         * config/aarch64/falkor.md (falkor_ld_3_ld): Split load_8 to load_16.
15416         (falkor_st_0_st_sd): Split store_8 to store_16.
15417
15418 2017-09-12  James Greenhalgh  <james.greenhalgh@arm.com>
15419
15420         * config/arm/types.md (type): Rename load1/2/3/4 to load_4/8/12/16
15421         and store1/2/3/4 to store_4/8/12/16.
15422         * config/aarch64/aarch64.md: Update for rename.
15423         * config/arm/arm.md: Likewise.: Likewise.
15424         * config/arm/arm.c: Likewise.
15425         * config/arm/thumb1.md: Likewise.
15426         * config/arm/thumb2.md: Likewise.
15427         * config/arm/vfp.md: Likewise.
15428         * config/arm/arm-generic.md: Likewise.
15429         * config/arm/arm1020e.md: Likewise.
15430         * config/arm/arm1026ejs.md: Likewise.
15431         * config/arm/arm1136jfs.md: Likewise.
15432         * config/arm/arm926ejs.md: Likewise.
15433         * config/arm/cortex-a15.md: Likewise.
15434         * config/arm/cortex-a17.md: Likewise.
15435         * config/arm/cortex-a5.md: Likewise.
15436         * config/arm/cortex-a53.md: Likewise.
15437         * config/arm/cortex-a57.md: Likewise.
15438         * config/arm/cortex-a7.md: Likewise.
15439         * config/arm/cortex-a8.md: Likewise.
15440         * config/arm/cortex-a9.md: Likewise.
15441         * config/arm/cortex-m4.md: Likewise.
15442         * config/arm/cortex-m7.md: Likewise.
15443         * config/arm/cortex-r4.md: Likewise.
15444         * config/arm/exynos-m1.md: Likewise.
15445         * config/arm/fa526.md: Likewise.
15446         * config/arm/fa606te.md: Likewise.
15447         * config/arm/fa626te.md: Likewise.
15448         * config/arm/fa726te.md: Likewise.
15449         * config/arm/fmp626.md: Likewise.
15450         * config/arm/iwmmxt.md: Likewise.
15451         * config/arm/ldmstm.md: Likewise.
15452         * config/arm/marvell-pj4.md: Likewise.
15453         * config/arm/xgene1.md: Likewise.
15454         * config/aarch64/thunderx.md: Likewise.
15455         * config/aarch64/thunderx2t99.md: Likewise.
15456         * config/aarch64/falkor.md: Likewise.
15457
15458 2017-09-12  Martin Liska  <mliska@suse.cz>
15459
15460         * attribs.c (private_lookup_attribute): New function.
15461         * attribs.h (private_lookup_attribute): Declared here.
15462         (lookup_attribute): Called from this place.
15463
15464 2017-09-12  Richard Biener  <rguenther@suse.de>
15465
15466         PR tree-optimization/82157
15467         * tree-ssa-pre.c (remove_dead_inserted_code): Do not remove
15468         stmts with side-effects.
15469
15470 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15471             Alan Hayward  <alan.hayward@arm.com>
15472             David Sherwood <david.sherwood@arm.com>
15473
15474         * target.def (hard_regno_nregs): New hook.
15475         (class_max_nregs): Refer to it instead of HARD_REGNO_NREGS.
15476         * targhooks.h (default_hard_regno_nregs): Declare.
15477         * targhooks.c (default_hard_regno_nregs): New function.
15478         * doc/tm.texi.in (HARD_REGNO_NREGS): Replace with...
15479         (TARGET_HARD_REGNO_NREGS): ...this hook.
15480         (HARD_REGNO_NREGS_HAS_PADDING): Update accordingly.
15481         (CLASS_MAX_NREGS): Likewise.
15482         * doc/tm.texi: Regenerate.
15483         * reginfo.c (init_reg_modes_target): Use targetm.hard_regno_nregs
15484         instead of HARD_REGNO_NREGS.
15485         * rtl.h (REG_NREGS): Refer to TARGET_HARD_REGNO_NREGS rather than
15486         HARD_REGNO_NREGS in the comment.
15487         * config/aarch64/aarch64.h (HARD_REGNO_NREGS): Delete.
15488         * config/aarch64/aarch64-protos.h (aarch64_hard_regno_nregs): Delete.
15489         * config/aarch64/aarch64.c (aarch64_hard_regno_nregs): Make static.
15490         Return an unsigned int.
15491         (TARGET_HARD_REGNO_NREGS): Redefine.
15492         * config/alpha/alpha.h (HARD_REGNO_NREGS): Delete.
15493         * config/arc/arc.h (HARD_REGNO_NREGS): Delete.
15494         * config/arc/arc.c (TARGET_HARD_REGNO_NREGS): Redefine.
15495         (arc_hard_regno_nregs): New function.
15496         * config/arm/arm.h (HARD_REGNO_NREGS): Delete.
15497         * config/arm/arm.c (TARGET_HARD_REGNO_NREGS): Redefine.
15498         (arm_hard_regno_nregs): New function.
15499         * config/avr/avr.h (HARD_REGNO_NREGS): Delete.
15500         * config/bfin/bfin.h (HARD_REGNO_NREGS): Delete.
15501         * config/bfin/bfin.c (bfin_hard_regno_nregs): New function.
15502         (TARGET_HARD_REGNO_NREGS): Redefine.
15503         * config/c6x/c6x.h (HARD_REGNO_NREGS): Delete.
15504         * config/cr16/cr16.h (LONG_REG_P): Use targetm.hard_regno_nregs.
15505         (HARD_REGNO_NREGS): Delete.
15506         * config/cr16/cr16.c (TARGET_HARD_REGNO_NREGS): Redefine.
15507         (cr16_hard_regno_nregs): New function.
15508         (cr16_memory_move_cost): Use it instead of HARD_REGNO_NREGS.
15509         * config/cris/cris.h (HARD_REGNO_NREGS): Delete.
15510         * config/cris/cris.c (TARGET_HARD_REGNO_NREGS): Redefine.
15511         (cris_hard_regno_nregs): New function.
15512         * config/epiphany/epiphany.h (HARD_REGNO_NREGS): Delete.
15513         * config/fr30/fr30.h (HARD_REGNO_NREGS): Delete.
15514         (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
15515         * config/frv/frv.h (HARD_REGNO_NREGS): Delete.
15516         (CLASS_MAX_NREGS): Remove outdated copy of documentation.
15517         * config/frv/frv-protos.h (frv_hard_regno_nregs): Delete.
15518         * config/frv/frv.c (TARGET_HARD_REGNO_NREGS): Redefine.
15519         (frv_hard_regno_nregs): Make static.  Take and return an
15520         unsigned int.
15521         (frv_class_max_nregs): Remove outdated copy of documentation.
15522         * config/ft32/ft32.h (HARD_REGNO_NREGS): Delete.
15523         * config/h8300/h8300.h (HARD_REGNO_NREGS): Delete.
15524         * config/h8300/h8300-protos.h (h8300_hard_regno_nregs): Delete.
15525         * config/h8300/h8300.c (h8300_hard_regno_nregs): Delete.
15526         * config/i386/i386.h (HARD_REGNO_NREGS): Delete.
15527         * config/i386/i386.c (ix86_hard_regno_nregs): New function.
15528         (TARGET_HARD_REGNO_NREGS): Redefine.
15529         * config/ia64/ia64.h (HARD_REGNO_NREGS): Delete.
15530         (CLASS_MAX_NREGS): Update comment.
15531         * config/ia64/ia64.c (TARGET_HARD_REGNO_NREGS): Redefine.
15532         (ia64_hard_regno_nregs): New function.
15533         * config/iq2000/iq2000.h (HARD_REGNO_NREGS): Delete.
15534         * config/lm32/lm32.h (HARD_REGNO_NREGS): Delete.
15535         * config/m32c/m32c.h (HARD_REGNO_NREGS): Delete.
15536         * config/m32c/m32c-protos.h (m32c_hard_regno_nregs): Delete.
15537         * config/m32c/m32c.c (m32c_hard_regno_nregs_1): Take and return
15538         an unsigned int.
15539         (m32c_hard_regno_nregs): Likewise.  Make static.
15540         (TARGET_HARD_REGNO_NREGS): Redefine.
15541         * config/m32r/m32r.h (HARD_REGNO_NREGS): Delete.
15542         * config/m68k/m68k.h (HARD_REGNO_NREGS): Delete.
15543         * config/m68k/m68k.c (TARGET_HARD_REGNO_NREGS): Redefine.
15544         (m68k_hard_regno_nregs): New function.
15545         * config/mcore/mcore.h (HARD_REGNO_NREGS): Delete.
15546         * config/microblaze/microblaze.h (HARD_REGNO_NREGS): Delete.
15547         * config/mips/mips.h (HARD_REGNO_NREGS): Delete.
15548         * config/mips/mips-protos.h (mips_hard_regno_nregs): Delete.
15549         * config/mips/mips.c (mips_hard_regno_nregs): Make static.
15550         Take and return an unsigned int.
15551         (TARGET_HARD_REGNO_NREGS): Redefine.
15552         * config/mmix/mmix.h (HARD_REGNO_NREGS): Delete.
15553         (CLASS_MAX_NREGS): Use targetm.hard_regno_nregs.
15554         * config/mn10300/mn10300.h (HARD_REGNO_NREGS): Delete.
15555         * config/moxie/moxie.h (HARD_REGNO_NREGS): Delete.
15556         * config/msp430/msp430.h (HARD_REGNO_NREGS): Delete.
15557         * config/msp430/msp430-protos.h (msp430_hard_regno_nregs): Delete.
15558         * config/msp430/msp430.c (TARGET_HARD_REGNO_NREGS): Redefine.
15559         (msp430_hard_regno_nregs): Make static.  Take and return an
15560         unsigned int.
15561         * config/nds32/nds32.h (HARD_REGNO_NREGS): Delete.
15562         * config/nds32/nds32-protos.h (nds32_hard_regno_nregs): Delete.
15563         * config/nds32/nds32.c (nds32_hard_regno_nregs): Delete.
15564         (nds32_hard_regno_mode_ok): Use targetm.hard_regno_nregs.
15565         * config/nios2/nios2.h (HARD_REGNO_NREGS): Delete.
15566         * config/nvptx/nvptx.h (HARD_REGNO_NREGS): Delete.
15567         * config/nvptx/nvptx.c (nvptx_hard_regno_nregs): New function.
15568         (TARGET_HARD_REGNO_NREGS): Redefine.
15569         * config/pa/pa32-regs.h (HARD_REGNO_NREGS): Rename to...
15570         (PA_HARD_REGNO_NREGS): ...this.
15571         * config/pa/pa64-regs.h (HARD_REGNO_NREGS): Rename to...
15572         (PA_HARD_REGNO_NREGS): ...this.
15573         * config/pa/pa.c (TARGET_HARD_REGNO_NREGS): Redefine.
15574         (pa_hard_regno_nregs): New function.
15575         * config/pdp11/pdp11.h (HARD_REGNO_NREGS): Delete.
15576         * config/pdp11/pdp11.c (TARGET_HARD_REGNO_NREGS): Redefine.
15577         (pdp11_hard_regno_nregs): New function.
15578         * config/powerpcspe/powerpcspe.h (HARD_REGNO_NREGS): Delete.
15579         * config/powerpcspe/powerpcspe.c (TARGET_HARD_REGNO_NREGS): Redefine.
15580         (rs6000_hard_regno_nregs_hook): New function.
15581         * config/riscv/riscv.h (HARD_REGNO_NREGS): Delete.
15582         * config/riscv/riscv-protos.h (riscv_hard_regno_nregs): Delete.
15583         * config/riscv/riscv.c (riscv_hard_regno_nregs): Make static.
15584         Take and return an unsigned int.  Move earlier in file.
15585         (TARGET_HARD_REGNO_NREGS): Redefine.
15586         * config/rl78/rl78.h (HARD_REGNO_NREGS): Delete.
15587         * config/rl78/rl78-protos.h (rl78_hard_regno_nregs): Delete.
15588         * config/rl78/rl78.c (TARGET_HARD_REGNO_NREGS): Reefine.
15589         (rl78_hard_regno_nregs): Make static.  Take and return an
15590         unsigned int.
15591         * config/rs6000/rs6000.h (HARD_REGNO_NREGS): Delete.
15592         * config/rs6000/rs6000.c (TARGET_HARD_REGNO_NREGS): Redefine.
15593         (rs6000_hard_regno_nregs_hook): New function.
15594         * config/rx/rx.h (HARD_REGNO_NREGS): Delete.
15595         * config/rx/rx.c (rx_hard_regno_nregs): New function.
15596         (TARGET_HARD_REGNO_NREGS): Redefine.
15597         * config/s390/s390.h (HARD_REGNO_NREGS): Delete.
15598         * config/s390/s390.c (REGNO_PAIR_OK): Use s390_hard_regno_nregs
15599         instead of HARD_REGNO_NREGS.
15600         (s390_hard_regno_nregs): New function.
15601         (s390_hard_regno_mode_ok): Add comment from s390.h.
15602         (TARGET_HARD_REGNO_NREGS): Redefine.
15603         * config/sh/sh.h (HARD_REGNO_NREGS): Delete.
15604         * config/sh/sh.c (TARGET_HARD_REGNO_NREGS): Redefine.
15605         (sh_hard_regno_nregs): New function.
15606         (sh_pass_in_reg_p): Use it.
15607         * config/sparc/sparc.h (HARD_REGNO_NREGS): Delete.
15608         * config/sparc/sparc.c (TARGET_HARD_REGNO_NREGS): Redefine.
15609         (sparc_hard_regno_nregs): New function.
15610         * config/spu/spu.h (HARD_REGNO_NREGS): Delete.
15611         * config/spu/spu.c (spu_hard_regno_nregs): New function.
15612         (spu_function_arg_advance): Use it, supplying a valid register number.
15613         (TARGET_HARD_REGNO_NREGS): Redefine.
15614         * config/stormy16/stormy16.h (HARD_REGNO_NREGS): Delete.
15615         * config/tilegx/tilegx.h (HARD_REGNO_NREGS): Delete.
15616         * config/tilepro/tilepro.h (HARD_REGNO_NREGS): Delete.
15617         * config/v850/v850.h (HARD_REGNO_NREGS): Delete.
15618         * config/vax/vax.h (HARD_REGNO_NREGS): Delete.
15619         * config/visium/visium.h (HARD_REGNO_NREGS): Delete.
15620         (CLASS_MAX_NREGS): Remove copy of old documentation.
15621         * config/visium/visium.c (TARGET_HARD_REGNO_NREGS): Redefine.
15622         (visium_hard_regno_nregs): New function.
15623         (visium_hard_regno_mode_ok): Use it instead of HARD_REGNO_NREGS.
15624         * config/xtensa/xtensa.h (HARD_REGNO_NREGS): Delete.
15625         * config/xtensa/xtensa.c (TARGET_HARD_REGNO_NREGS): Redefine.
15626         xtensa_hard_regno_nregs): New function.
15627         * system.h (HARD_REGNO_NREGS): Poison.
15628
15629 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15630
15631         * config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Use
15632         hard_regno_nregs instead of HARD_REGNO_NREGS.
15633         (THUMB_SECONDARY_OUTPUT_RELOAD_CLASS): Likewise.
15634         * config/c6x/c6x.c (c6x_expand_prologue): Likewise.
15635         (c6x_expand_epilogue): Likewise.
15636         * config/frv/frv.c (frv_alloc_temp_reg): Likewise.
15637         (frv_read_iacc_argument): Likewise.
15638         * config/sh/sh.c: Include regs.h.
15639         (sh_print_operand): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
15640         (regs_used): Likewise.
15641         (output_stack_adjust): Likewise.
15642         * config/xtensa/xtensa.c (xtensa_copy_incoming_a7): Likewise.
15643         * expmed.c: Include regs.h.
15644         (store_bit_field_1): Use hard_regno_nregs instead of HARD_REGNO_NREGS.
15645         * ree.c: Include regs.h.
15646         (combine_reaching_defs): Use hard_regno_nregs instead of
15647         HARD_REGNO_NREGS.
15648         (add_removable_extension): Likewise.
15649
15650 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15651
15652         * regs.h (hard_regno_nregs): Turn into a function.
15653         (end_hard_regno): Update accordingly.
15654         * caller-save.c (setup_save_areas): Likewise.
15655         (save_call_clobbered_regs): Likewise.
15656         (replace_reg_with_saved_mem): Likewise.
15657         (insert_restore): Likewise.
15658         (insert_save): Likewise.
15659         * combine.c (can_change_dest_mode): Likewise.
15660         (move_deaths): Likewise.
15661         (distribute_notes): Likewise.
15662         * config/mips/mips.c (mips_hard_regno_call_part_clobbered): Likewise.
15663         * config/powerpcspe/powerpcspe.c (rs6000_cannot_change_mode_class)
15664         (rs6000_split_multireg_move): Likewise.
15665         (rs6000_register_move_cost): Likewise.
15666         (rs6000_memory_move_cost): Likewise.
15667         * config/rs6000/rs6000.c (rs6000_cannot_change_mode_class): Likewise.
15668         (rs6000_split_multireg_move): Likewise.
15669         (rs6000_register_move_cost): Likewise.
15670         (rs6000_memory_move_cost): Likewise.
15671         * cselib.c (cselib_reset_table): Likewise.
15672         (cselib_lookup_1): Likewise.
15673         * emit-rtl.c (set_mode_and_regno): Likewise.
15674         * function.c (aggregate_value_p): Likewise.
15675         * ira-color.c (setup_profitable_hard_regs): Likewise.
15676         (check_hard_reg_p): Likewise.
15677         (calculate_saved_nregs): Likewise.
15678         (assign_hard_reg): Likewise.
15679         (improve_allocation): Likewise.
15680         (calculate_spill_cost): Likewise.
15681         * ira-emit.c (modify_move_list): Likewise.
15682         * ira-int.h (ira_hard_reg_set_intersection_p): Likewise.
15683         (ira_hard_reg_in_set_p): Likewise.
15684         * ira.c (setup_reg_mode_hard_regset): Likewise.
15685         (clarify_prohibited_class_mode_regs): Likewise.
15686         (check_allocation): Likewise.
15687         * lra-assigns.c (find_hard_regno_for_1): Likewise.
15688         (lra_setup_reg_renumber): Likewise.
15689         (setup_try_hard_regno_pseudos): Likewise.
15690         (spill_for): Likewise.
15691         (assign_hard_regno): Likewise.
15692         (setup_live_pseudos_and_spill_after_risky_transforms): Likewise.
15693         * lra-constraints.c (in_class_p): Likewise.
15694         (lra_constraint_offset): Likewise.
15695         (simplify_operand_subreg): Likewise.
15696         (lra_constraints): Likewise.
15697         (split_reg): Likewise.
15698         (split_if_necessary): Likewise.
15699         (invariant_p): Likewise.
15700         (inherit_in_ebb): Likewise.
15701         * lra-lives.c (process_bb_lives): Likewise.
15702         * lra-remat.c (reg_overlap_for_remat_p): Likewise.
15703         (get_hard_regs): Likewise.
15704         (do_remat): Likewise.
15705         * lra-spills.c (assign_spill_hard_regs): Likewise.
15706         * mode-switching.c (create_pre_exit): Likewise.
15707         * postreload.c (reload_combine_recognize_pattern): Likewise.
15708         * recog.c (peep2_find_free_register): Likewise.
15709         * regcprop.c (kill_value_regno): Likewise.
15710         (set_value_regno): Likewise.
15711         (copy_value): Likewise.
15712         (maybe_mode_change): Likewise.
15713         (find_oldest_value_reg): Likewise.
15714         (copyprop_hardreg_forward_1): Likewise.
15715         * regrename.c (check_new_reg_p): Likewise.
15716         (regrename_do_replace): Likewise.
15717         * reload.c (push_reload): Likewise.
15718         (combine_reloads): Likewise.
15719         (find_dummy_reload): Likewise.
15720         (operands_match_p): Likewise.
15721         (find_reloads): Likewise.
15722         (find_equiv_reg): Likewise.
15723         (reload_adjust_reg_for_mode): Likewise.
15724         * reload1.c (count_pseudo): Likewise.
15725         (count_spilled_pseudo): Likewise.
15726         (find_reg): Likewise.
15727         (clear_reload_reg_in_use): Likewise.
15728         (free_for_value_p): Likewise.
15729         (allocate_reload_reg): Likewise.
15730         (choose_reload_regs): Likewise.
15731         (reload_adjust_reg_for_temp): Likewise.
15732         (emit_reload_insns): Likewise.
15733         (delete_output_reload): Likewise.
15734         * rtlanal.c (subreg_get_info): Likewise.
15735         * sched-deps.c (sched_analyze_reg): Likewise.
15736         * sel-sched.c (init_regs_for_mode): Likewise.
15737         (mark_unavailable_hard_regs): Likewise.
15738         (choose_best_reg_1): Likewise.
15739         (verify_target_availability): Likewise.
15740         * valtrack.c (dead_debug_insert_temp): Likewise.
15741         * var-tracking.c (track_loc_p): Likewise.
15742         (emit_note_insn_var_location): Likewise.
15743         * varasm.c (make_decl_rtl): Likewise.
15744         * reginfo.c (choose_hard_reg_mode): Likewise.
15745         (init_reg_modes_target): Refer directly to
15746         this_target_regs->x_hard_regno_nregs.
15747
15748 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15749
15750         * ira-costs.c (record_operand_costs): Use in_hard_reg_set_p
15751         instead of hard_regno_nregs.
15752
15753 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15754
15755         * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Use
15756         end_hard_regno instead of hard_regno_nregs.
15757         * config/s390/s390.c (s390_reg_clobbered_rtx): Likewise.
15758         * config/sparc/sparc.h (ASM_DECLARE_REGISTER_GLOBAL): Likewise.
15759         * config/visium/visium.c (visium_hard_regno_mode_ok): Likewise.
15760         * ira-color.c (improve_allocation): Likewise.
15761         * lra-assigns.c (find_hard_regno_for_1): Likewise.
15762         * lra-lives.c (mark_regno_live): Likewise.
15763         (mark_regno_dead): Likewise.
15764         * lra-remat.c (operand_to_remat): Likewise.
15765         * lra.c (collect_non_operand_hard_regs): Likewise.
15766         * postreload.c (reload_combine_note_store): Likewise.
15767         (move2add_valid_value_p): Likewise.
15768         * reload.c (regno_clobbered_p): Likewise.
15769
15770 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15771
15772         * config/frv/frv.c (FOR_EACH_REGNO): Use END_REGNO instead of
15773         hard_regno_nregs.
15774         * config/v850/v850.c (v850_reorg): Likewise.
15775         * reload.c (refers_to_regno_for_reload_p): Likewise.
15776         (find_equiv_reg): Likewise.
15777         * reload1.c (reload_reg_reaches_end_p): Likewise.
15778
15779 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15780
15781         * caller-save.c (add_used_regs): Use REG_NREGS instead of
15782         hard_regno_nregs.
15783         * config/aarch64/aarch64.c (aarch64_split_combinev16qi): Likewise.
15784         * config/arm/arm.c (output_move_neon): Likewise.
15785         (arm_attr_length_move_neon): Likewise.
15786         (neon_split_vcombine): Likewise.
15787         * config/c6x/c6x.c (c6x_mark_reg_read): Likewise.
15788         (c6x_mark_reg_written): Likewise.
15789         (c6x_dwarf_register_span): Likewise.
15790         * config/i386/i386.c (ix86_save_reg): Likewise.
15791         * config/ia64/ia64.c (mark_reg_gr_used_mask): Likewise.
15792         (rws_access_reg): Likewise.
15793         * config/s390/s390.c (s390_call_saved_register_used): Likewise.
15794         * mode-switching.c (create_pre_exit): Likewise.
15795         * ree.c (combine_reaching_defs): Likewise.
15796         (add_removable_extension): Likewise.
15797         * regcprop.c (find_oldest_value_reg): Likewise.
15798         (copyprop_hardreg_forward_1): Likewise.
15799         * reload.c (reload_inner_reg_of_subreg): Likewise.
15800         (push_reload): Likewise.
15801         (combine_reloads): Likewise.
15802         (find_dummy_reload): Likewise.
15803         (reload_adjust_reg_for_mode): Likewise.
15804         * reload1.c (find_reload_regs): Likewise.
15805         (forget_old_reloads_1): Likewise.
15806         (reload_reg_free_for_value_p): Likewise.
15807         (reload_adjust_reg_for_temp): Likewise.
15808         (emit_reload_insns): Likewise.
15809         (delete_output_reload): Likewise.
15810         * sel-sched.c (choose_best_reg_1): Likewise.
15811         (choose_best_pseudo_reg): Likewise.
15812
15813 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15814             Alan Hayward  <alan.hayward@arm.com>
15815             David Sherwood <david.sherwood@arm.com>
15816
15817         * defaults.h (SLOW_UNALIGNED_ACCESS): Delete.
15818         * target.def (slow_unaligned_access): New hook.
15819         * targhooks.h (default_slow_unaligned_access): Declare.
15820         * targhooks.c (default_slow_unaligned_access): New function.
15821         * doc/tm.texi.in (SLOW_UNALIGNED_ACCESS): Replace with...
15822         (TARGET_SLOW_UNALIGNED_ACCESS): ...this.
15823         * doc/tm.texi: Regenerate.
15824         * config/alpha/alpha.h (SLOW_UNALIGNED_ACCESS): Delete.
15825         * config/arm/arm.h (SLOW_UNALIGNED_ACCESS): Delete.
15826         * config/i386/i386.h (SLOW_UNALIGNED_ACCESS): Delete commented-out
15827         definition.
15828         * config/powerpcspe/powerpcspe.h (SLOW_UNALIGNED_ACCESS): Delete.
15829         * config/powerpcspe/powerpcspe.c (TARGET_SLOW_UNALIGNED_ACCESS):
15830         Redefine.
15831         (rs6000_slow_unaligned_access): New function.
15832         (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
15833         (expand_block_compare): Likewise.
15834         (expand_strn_compare): Likewise.
15835         (rs6000_rtx_costs): Likewise.
15836         * config/riscv/riscv.h (SLOW_UNALIGNED_ACCESS): Delete.
15837         (riscv_slow_unaligned_access): Likewise.
15838         * config/riscv/riscv.c (riscv_slow_unaligned_access): Rename to...
15839         (riscv_slow_unaligned_access_p): ...this and make static.
15840         (riscv_option_override): Update accordingly.
15841         (riscv_slow_unaligned_access): New function.
15842         (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
15843         * config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Delete.
15844         * config/rs6000/rs6000.c (TARGET_SLOW_UNALIGNED_ACCESS): Redefine.
15845         (rs6000_slow_unaligned_access): New function.
15846         (rs6000_emit_move): Use it instead of SLOW_UNALIGNED_ACCESS.
15847         (rs6000_rtx_costs): Likewise.
15848         * config/rs6000/rs6000-string.c (expand_block_compare)
15849         (expand_strn_compare): Use targetm.slow_unaligned_access instead
15850         of SLOW_UNALIGNED_ACCESS.
15851         * config/tilegx/tilegx.h (SLOW_UNALIGNED_ACCESS): Delete.
15852         * config/tilepro/tilepro.h (SLOW_UNALIGNED_ACCESS): Delete.
15853         * calls.c (expand_call): Use targetm.slow_unaligned_access instead
15854         of SLOW_UNALIGNED_ACCESS.
15855         * expmed.c (simple_mem_bitfield_p): Likewise.
15856         * expr.c (alignment_for_piecewise_move): Likewise.
15857         (emit_group_load_1): Likewise.
15858         (emit_group_store): Likewise.
15859         (copy_blkmode_from_reg): Likewise.
15860         (emit_push_insn): Likewise.
15861         (expand_assignment): Likewise.
15862         (store_field): Likewise.
15863         (expand_expr_real_1): Likewise.
15864         * gimple-fold.c (gimple_fold_builtin_memory_op): Likewise.
15865         * lra-constraints.c (simplify_operand_subreg): Likewise.
15866         * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
15867         * gimple-ssa-store-merging.c: Likewise in block comment at start
15868         of file.
15869         * tree-ssa-strlen.c: Include target.h.
15870         (handle_builtin_memcmp): Use targetm.slow_unaligned_access instead
15871         of SLOW_UNALIGNED_ACCESS.
15872         * system.h (SLOW_UNALIGNED_ACCESS): Poison.
15873
15874 2017-09-12  Richard Sandiford  <richard.sandiford@linaro.org>
15875
15876         PR rtl-optimization/82185
15877         * expmed.c (emit_store_flag_int): Only test tem if it has been
15878         initialized.
15879
15880 2017-09-12  Richard Biener  <rguenther@suse.de>
15881
15882         PR middle-end/82149
15883         * match.pd ((FTYPE) N CMP CST): Fix typo.
15884
15885 2017-09-12  Simon Atanasyan  <simon.atanasyan@imgtec.com>
15886
15887         * config/mips/mips.c (mips_attribute_table): Add 'short_call'
15888         attribute.
15889         (mips_near_type_p): Add 'short_call' attribute as a synonym
15890         for 'near'.
15891         * doc/extend.texi (short_call): Document new function attribute.
15892
15893 2017-09-12  Jakub Jelinek  <jakub@redhat.com>
15894
15895         PR target/82112
15896         * c-common.c (sync_resolve_size): Instead of c_dialect_cxx ()
15897         assertion check that in the condition.
15898         (get_atomic_generic_size): Likewise.  Before testing if parameter
15899         has pointer type, if it has array type, call for C++
15900         default_conversion to perform array-to-pointer conversion.
15901
15902 2017-09-12  Richard Biener  <rguenther@suse.de>
15903
15904         * tree-vect-generic.c (expand_vector_operations_1): Do nothing
15905         for operations we cannot scalarize.
15906
15907 2017-09-12  Aldy Hernandez  <aldyh@redhat.com>
15908
15909         * tree-ssa-threadbackward.c (fsm_find_thread_path): Make GC
15910         vectors heap vectors.  Clean up comments.
15911         Make visited_bbs a reference.
15912         (profitable_jump_thread_path): Make GC
15913         vectors heap vectors.  Clean up comments.
15914         Misc cleanups.
15915         (convert_and_register_jump_thread_path): Make GC vectors heap
15916         vectors.
15917         (check_subpath_and_update_thread_path): Same.  Clean up comments.
15918         Make visited_bbs a reference.
15919         (handle_phi): Abstract common code to to
15920         register_jump_thread_path_if_profitable.
15921         Rename VAR_BB to DEF_BB.
15922         Update comments.
15923         Make GC vectors heap vectors.
15924         Make visited_bbs a reference.
15925         (handle_assignment): Same.
15926         (register_jump_thread_path_if_profitable): New.
15927         (fsm_find_control_statement_thread_paths): Rename VAR_BB to
15928         DEF_BB.
15929         Make GC vectors heap vectors.  Clean up comments.
15930         Make visited_bbs a reference.
15931         (find_jump_threads_backwards): Make visited_bbs live in the stack.
15932         * tree-ssa-threadupdate.c (delete_jump_thread_path): Fix typo in
15933         comment.
15934
15935 2017-09-11  Max Filippov  <jcmvbkbc@gmail.com>
15936
15937         PR target/82181
15938         * config/xtensa/xtensa.c (xtensa_mem_offset): Check that both
15939         words of E_DImode object are reachable by xtensa_uimm8x4 access.
15940
15941 2017-09-11  Vidya Praveen  <vidyapraveen@arm.com>
15942
15943         Revert r251800 and r251799.
15944
15945 2017-09-11  Martin Jambor  <mjambor@suse.cz>
15946
15947         PR hsa/82119
15948         * hsa-gen.c (gen_hsa_phi_from_gimple_phi): Process ADDR_EXPRs in
15949         arguments in advance.
15950         * hsa-regalloc.c (naive_process_phi): New parameter predecessors,
15951         use it to find predecessor edges.
15952         (naive_outof_ssa): Collect vector of predecessors.
15953
15954 2017-09-08  Jason Merrill  <jason@redhat.com>
15955
15956         PR c++/70029 - ICE with ref-qualifier and -flto
15957         * langhooks.h (struct lang_hooks_for_types): Add
15958         copy_lang_qualifiers.
15959         * attribs.c (build_type_attribute_qual_variant): Use it.
15960         * langhooks-def.h (LANG_HOOKS_COPY_LANG_QUALIFIERS): Default to
15961         NULL.
15962         (LANG_HOOKS_FOR_TYPES_INITIALIZER): Use it.
15963         * tree.c (verify_type): Re-enable TYPE_CANONICAL main variant check.
15964
15965 2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>
15966
15967         PR target/81988
15968         * config/sparc/sparc.md (mulsi3): Rename into *mulsi3_sp32.
15969         (*mulsi3_sp64): New instruction.
15970         (mulsi3): New expander.
15971
15972 2017-09-08  Uros Bizjak  <ubizjak@gmail.com>
15973
15974         * config/alpha/alpha.c (alpha_print_operand) <case 'S'>: Remove.
15975
15976 2017-09-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
15977
15978         * sancov.c: Include memmodel.h.
15979
15980 2017-09-07  Eric Botcazou  <ebotcazou@adacore.com>
15981
15982         PR target/80897
15983         * config/sparc/sparc.c (sparc_emit_set_symbolic_const64): Deal with too
15984         large offsets.
15985
15986 2017-09-07  Carl Love  <cel@us.ibm.com>
15987
15988         * config/rs6000/vsx.md (define_insn "*stxvl"): Add missing argument to
15989         the sldi instruction.
15990
15991 2017-09-07  David Edelsohn  <dje.gcc@gmail.com>
15992
15993         * sancov.c: Include tm_p.h.
15994
15995 2017-09-07  Jakub Jelinek  <jakub@redhat.com>
15996
15997         PR target/81979
15998         * output.h (switch_to_other_text_partition): New declaration.
15999         * varasm.c (switch_to_other_text_partition): New function.
16000         * config/rs6000/rs6000.c (uses_TOC): Return 2 if
16001         NOTE_INSN_SWITCH_TEXT_SECTIONS is seen before finding load_toc_* insn.
16002         (rs6000_elf_declare_function_name): If uses_TOC returned 2, switch
16003         to the other text partition before emitting LCL label and switch back
16004         after emitting the word after it.
16005
16006 2017-09-07  Richard Biener  <rguenther@suse.de>
16007
16008         * passes.def (pass_split_crit_edges): Remove instance before PRE.
16009         * tree-ssa-pre.c (pass_pre::execute): Instead manually split
16010         critical edges here, after loop init.
16011         (pass_data_pre): Remove PROP_no_crit_edges flags.
16012         * tree-ssa-sccvn.c (vn_reference_lookup_3): Use vn_valueize
16013         for valueization of call args to avoid leaking VN_TOP.
16014         (visit_use): Assert we do not visit default defs.
16015         (init_scc_vn): Use build_decl for VN_TOP to make name nicer.
16016         Use error_mark_node to more easily detect leaking VN_TOP.
16017         All default-defs are varying, not VN_TOP.  Mark them visited.
16018         (run_scc_vn): Make code match comment.
16019
16020 2017-09-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
16021
16022         * config/rs6000/rs6000-cpus.def (OTHER_VSX_VECTOR_MASKS): Delete
16023         OPTION_MASK_FLOAT128_KEYWORD.
16024         (POWERPC_MASKS): Likewise.
16025         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Delete
16026         support for the -mfloat128-type option, and make -mfloat128
16027         default on PowerPC Linux systems.  Define or undefine
16028         __FLOAT128__ and  __FLOAT128_HARDWARE__ for the current options.
16029         Define __float128 to be __ieee128 if IEEE 128-bit support is
16030         enabled, or undefine it.
16031         (rs6000_cpu_cpp_builtins): Delete defining __FLOAT128__ here.
16032         Delete defining __FLOAT128_TYPE__.
16033         * config/rs6000/rs6000.opt (x_TARGET_FLOAT128_TYPE): Delete the
16034         -mfloat128-type option and make -mfloat128 default on PowerPC
16035         Linux systems.
16036         (TARGET_FLOAT128_TYPE): Likewise.
16037         (-mfloat128-type): Likewise.
16038         * config/rs6000/rs6000.c (rs6000_option_override_internal):
16039         Delete the -mfloat128-type option and make -mfloat128 default on
16040         PowerPC Linux systems.  Always use __ieee128 to be the keyword for
16041         the IEEE 128-bit type, and map __float128 to __ieee128 if IEEE
16042         128-bit floating point is enabled.  Change tests from using
16043         -mfloat128-type to -mfloat128.
16044         (rs6000_mangle_type): Use the correct mangling for the __float128
16045         type even if normal long double is restricted to 64-bits.
16046         (floatn_mode): Enable the _Float128 type by default on VSX Linux
16047         systems.
16048         * config/rs6000/rs6000.h (MASK_FLOAT128_TYPE): Delete.
16049         (MASK_FLOAT128_KEYWORD): Define new shortcut macro.
16050         (RS6000BTM_FLOAT128): Define in terms of -mfloat128, not
16051         -mfloat128-type.
16052         * doc/invoke.texi (RS/6000 and PowerPC Options): Update
16053         documentation for -mfloat128.
16054
16055 2017-09-06  Olivier Hainque  <hainque@adacore.com>
16056
16057         * config.gcc (powerpc-wrs-vxworksspe): Now match as vxworks*spe.
16058
16059 2017-09-06  Wish Wu  <wishwu007@gmail.com>
16060             Jakub Jelinek  <jakub@redhat.com>
16061
16062         * asan.c (initialize_sanitizer_builtins): Add
16063         BT_FN_VOID_UINT8_UINT8, BT_FN_VOID_UINT16_UINT16,
16064         BT_FN_VOID_UINT32_UINT32, BT_FN_VOID_UINT64_UINT64,
16065         BT_FN_VOID_FLOAT_FLOAT, BT_FN_VOID_DOUBLE_DOUBLE and
16066         BT_FN_VOID_UINT64_PTR variables.
16067         * builtin-types.def (BT_FN_VOID_UINT8_UINT8): New fn type.
16068         (BT_FN_VOID_UINT16_UINT16): Likewise.
16069         (BT_FN_VOID_UINT32_UINT32): Likewise.
16070         (BT_FN_VOID_FLOAT_FLOAT): Likewise.
16071         (BT_FN_VOID_DOUBLE_DOUBLE): Likewise.
16072         (BT_FN_VOID_UINT64_PTR): Likewise.
16073         * common.opt (flag_sanitize_coverage): New variable.
16074         (fsanitize-coverage=trace-pc): Remove.
16075         (fsanitize-coverage=): Add.
16076         * flag-types.h (enum sanitize_coverage_code): New enum.
16077         * fold-const.c (fold_range_test): Disable non-short-circuit
16078         optimization if flag_sanitize_coverage.
16079         (fold_truth_andor): Likewise.
16080         * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
16081         * opts.c (COVERAGE_SANITIZER_OPT): Define.
16082         (coverage_sanitizer_opts): New array.
16083         (get_closest_sanitizer_option): Add OPTS argument, handle also
16084         OPT_fsanitize_coverage_.
16085         (parse_sanitizer_options): Adjusted to also handle
16086         OPT_fsanitize_coverage_.
16087         (common_handle_option): Add OPT_fsanitize_coverage_.
16088         * sancov.c (instrument_comparison, instrument_switch): New function.
16089         (sancov_pass): Add trace-cmp support.
16090         * sanitizer.def (BUILT_IN_SANITIZER_COV_TRACE_CMP1,
16091         BUILT_IN_SANITIZER_COV_TRACE_CMP2, BUILT_IN_SANITIZER_COV_TRACE_CMP4,
16092         BUILT_IN_SANITIZER_COV_TRACE_CMP8,
16093         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP1,
16094         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP2,
16095         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP4,
16096         BUILT_IN_SANITIZER_COV_TRACE_CONST_CMP8,
16097         BUILT_IN_SANITIZER_COV_TRACE_CMPF, BUILT_IN_SANITIZER_COV_TRACE_CMPD,
16098         BUILT_IN_SANITIZER_COV_TRACE_SWITCH): New builtins.
16099         * doc/invoke.texi: Document -fsanitize-coverage=trace-cmp.
16100
16101 2017-09-06  Richard Earnshaw  <rearnsha@arm.com>
16102
16103         * config/arm/parsecpu.awk (fatal): Note that we've encountered an
16104         error.  Only quit immediately if parsing is complete.
16105         (BEGIN): Initialize fatal_err and parse_done.
16106         (begin fpu, end fpu): Check number of arguments.
16107         (begin arch, end arch): Likewise.
16108         (begin cpu, end cpu): Likewise.
16109         (cname, tune for, tune flags, architecture, fpu, option): Likewise.
16110         (optalias): Likewise.
16111
16112 2017-09-06  Richard Earnshaw  <rearnsha@arm.com>
16113
16114         * config.gcc (arm*-*-*): Don't add arm-isa.h to tm_p_file.
16115         * config/arm/arm-isa.h: Delete.  Move definitions to ...
16116         * arm-cpus.in: ... here.  Use new feature and fgroup values.
16117         * config/arm/arm.c (arm_option_override): Use lower case for feature
16118         bit names.
16119         * config/arm/arm.h (TARGET_HARD_FLOAT): Likewise.
16120         (TARGET_VFP3, TARGET_VFP5, TARGET_FMA): Likewise.
16121         * config/arm/parsecpu.awk (END): Add new command 'isa'.
16122         (isa_pfx): Delete.
16123         (print_isa_bits_for): New function.
16124         (gen_isa): New function.
16125         (gen_comm_data): Use print_isa_bits_for.
16126         (define feature): New keyword.
16127         (define fgroup): New keyword.
16128         * config/arm/t-arm (OPTIONS_H_EXTRA): Add arm-isa.h
16129         (arm-isa.h): Add rule to generate file.
16130         * common/config/arm/arm-common.c: (arm_canon_arch_option): Use lower
16131         case for feature bit names.
16132
16133 2017-09-06  Richard Biener  <rguenther@suse.de>
16134
16135         * tree-ssa-pre.c (NECESSARY): Remove.
16136         (create_expression_by_pieces): Do not touch pass-local flags.
16137         (insert_into_preds_of_block): Likewise.
16138         (do_pre_regular_insertion): Likewise.
16139         (eliminate_insert): Likewise.
16140         (eliminate_dom_walker::before_dom_children): Likewise.
16141         (fini_eliminate): Do not look at inserted_exprs.
16142         (mark_operand_necessary): Remove.
16143         (remove_dead_inserted_code): Replace with simple work-list
16144         algorithm based on inserted_exprs and SSA uses.
16145         (pass_pre::execute): Re-order fini_eliminate and
16146         remove_dead_inserted_code.
16147
16148 2017-09-06  Olivier Hainque  <hainque@adacore.com>
16149
16150         * config/powerpcspe/vxworks.h (VXCPU_FOR_8548): Correct definition
16151         for VxWorks 7.  Adjust surrounding comments.
16152
16153 2017-09-06  Richard Biener  <rguenther@suse.de>
16154
16155         * gimple-ssa-strength-reduction.c
16156         (find_candidates_dom_walker::before_dom_children): Also allow
16157         pointer types.
16158
16159 2017-09-06  Richard Biener  <rguenther@suse.de>
16160
16161         PR tree-optimization/82108
16162         * tree-vect-stmts.c (vectorizable_load): Fix pointer adjustment
16163         for gap in the non-permutation SLP case.
16164
16165 2017-09-06  Martin Jambor  <mjambor@suse.cz>
16166
16167         PR tree-optimization/82078
16168         * tree-sra.c (sort_and_splice_var_accesses): Move call to
16169         add_access_to_work_queue...
16170         (build_accesses_from_assign): ...here.
16171         (propagate_all_subaccesses): Make sure racc is the group
16172         representative, if there is one.
16173
16174 2017-09-06  Jakub Jelinek  <jakub@redhat.com>
16175
16176         PR middle-end/82095
16177         * varasm.c (categorize_decl_for_section): Use SECCAT_TBSS for TLS vars with
16178         NULL DECL_INITIAL.
16179
16180 2017-09-06  Richard Biener  <rguenther@suse.de>
16181
16182         * gimple-ssa-strength-reduction.c
16183         (find_candidates_dom_walker::before_doom_children): Use a
16184         type and not a mode check.
16185
16186 2017-09-06  Bernd Edlinger  <bernd.edlinger@hotmail.de>
16187
16188         PR target/77308
16189         * config/arm/predicates.md (arm_general_adddi_operand): Create new
16190         non-vfp predicate.
16191         * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Use new predicates.
16192
16193 2017-09-05  Jeff Law  <law@redhat.com>
16194
16195         PR tree-optimization/64910
16196         * tree-ssa-reassoc.c (reassociate_bb): Restrict last change to
16197         cases where we have 3 or more operands.
16198
16199 2017-09-05  Jakub Jelinek  <jakub@redhat.com>
16200
16201         PR middle-end/81768
16202         * omp-low.c (lower_omp_for): Recompute tree invariant if
16203         gimple_omp_for_initial/final is ADDR_EXPR.
16204
16205         PR middle-end/81768
16206         * omp-expand.c (expand_omp_simd): Force second operands of COND_EXPR
16207         into gimple val before gimplification fo the COND_EXPR.
16208
16209 2017-09-05  Aldy Hernandez  <aldyh@redhat.com>
16210
16211         * tree-ssa-threadupdate.c (duplicate_thread_path): Remove unused
16212         REGION_COPY argument.
16213         (thread_through_all_blocks): Remove unused argument to
16214         duplicate_thread_path.
16215
16216 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16217             Alan Hayward  <alan.hayward@arm.com>
16218             David Sherwood  <david.sherwood@arm.com>
16219
16220         * config/aarch64/aarch64-protos.h (aarch64_gen_adjusted_ldpstp):
16221         Take a scalar_mode rather than a machine_mode.
16222         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
16223         * config/aarch64/aarch64.c (aarch64_simd_container_mode): Likewise.
16224         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
16225         (aarch64_gen_adjusted_ldpstp): Likewise.
16226         (aarch64_expand_vector_init): Use scalar_mode instead of machine_mode.
16227
16228 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16229             Alan Hayward  <alan.hayward@arm.com>
16230             David Sherwood  <david.sherwood@arm.com>
16231
16232         * config/aarch64/aarch64-protos.h (aarch64_is_extend_from_extract):
16233         Take a scalar_int_mode instead of a machine_mode.
16234         (aarch64_mask_and_shift_for_ubfiz_p): Likewise.
16235         (aarch64_output_scalar_simd_mov_immediate): Likewise.
16236         (aarch64_simd_scalar_immediate_valid_for_move): Likewise.
16237         (aarch64_simd_attr_length_rglist): Delete.
16238         * config/aarch64/aarch64.c (aarch64_is_extend_from_extract): Take
16239         a scalar_int_mode instead of a machine_mode.
16240         (aarch64_add_offset): Likewise.
16241         (aarch64_internal_mov_immediate): Likewise
16242         (aarch64_add_constant_internal): Likewise.
16243         (aarch64_add_constant): Likewise.
16244         (aarch64_movw_imm): Likewise.
16245         (aarch64_rtx_arith_op_extract_p): Likewise.
16246         (aarch64_mask_and_shift_for_ubfiz_p): Likewise.
16247         (aarch64_simd_scalar_immediate_valid_for_move): Likewise.
16248         Remove assert that the mode isn't a vector.
16249         (aarch64_output_scalar_simd_mov_immediate): Likewise.
16250         (aarch64_expand_mov_immediate): Update calls after above changes.
16251         (aarch64_output_casesi): Use as_a <scalar_int_mode>.
16252         (aarch64_and_bitmask_imm): Check for scalar integer modes.
16253         (aarch64_move_imm): Likewise.
16254         (aarch64_can_const_movi_rtx_p): Likewise.
16255         (aarch64_strip_extend): Likewise.
16256         (aarch64_extr_rtx_p): Likewise.
16257         (aarch64_rtx_costs): Likewise, using wode_mode as the mode of
16258         a CONST_INT when the mode parameter is VOIDmode.
16259         (aarch64_float_const_rtx_p): Use scalar_int_mode for a temporary.
16260
16261 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16262
16263         * machmode.h (bitwise_mode_for_mode): Return opt_mode.
16264         * stor-layout.c (bitwise_mode_for_mode): Likewise.
16265         (bitwise_type_for_mode): Update accordingly.
16266
16267 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16268
16269         * stor-layout.h (mode_for_size_tree): Return an opt_mode.
16270         * stor-layout.c (mode_for_size_tree): Likewise.
16271         (mode_for_array): Update accordingly.
16272         (layout_decl): Likewise.
16273         (compute_record_mode): Likewise.  Only set the mode once.
16274
16275 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16276
16277         * target.def (get_mask_mode): Change return type to opt_mode.
16278         Expand commentary.
16279         * doc/tm.texi: Regenerate.
16280         * targhooks.h (default_get_mask_mode): Return an opt_mode.
16281         * targhooks.c (default_get_mask_mode): Likewise.
16282         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
16283         * optabs-query.c (can_vec_mask_load_store_p): Update use of
16284         targetm.get_mask_mode.
16285         * tree.c (build_truth_vector_type): Likewise.
16286
16287 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16288
16289         * machmode.h (mode_for_vector): Return an opt_mode.
16290         * stor-layout.c (mode_for_vector): Likewise.
16291         (mode_for_int_vector): Update accordingly.
16292         (layout_type): Likewise.
16293         * config/i386/i386.c (emit_memmov): Likewise.
16294         (ix86_expand_set_or_movmem): Likewise.
16295         (ix86_expand_vector_init): Likewise.
16296         (ix86_get_mask_mode): Likewise.
16297         * config/powerpcspe/powerpcspe.c (rs6000_expand_vec_perm_const_1):
16298         Likewise.
16299         * config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Likewise.
16300         * expmed.c (extract_bit_field_1): Likewise.
16301         * expr.c (expand_expr_real_2): Likewise.
16302         * optabs-query.c (can_vec_perm_p): Likewise.
16303         (can_vec_mask_load_store_p): Likewise.
16304         * optabs.c (expand_vec_perm): Likewise.
16305         * targhooks.c (default_get_mask_mode): Likewise.
16306         * tree-vect-stmts.c (vectorizable_store): Likewise.
16307         (vectorizable_load): Likewise.
16308         (get_vectype_for_scalar_type_and_size): Likewise.
16309
16310 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16311
16312         * machmode.h (mode_for_int_vector): New function.
16313         * stor-layout.c (mode_for_int_vector): Likewise.
16314         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Use it.
16315         * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Likewise.
16316         * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.
16317         * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
16318         (s390_expand_vcond): Likewise.
16319
16320 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16321
16322         * machmode.h (opt_machine_mode): New type.
16323         (opt_mode<T>): Allow construction from anything that can be
16324         converted to a T.
16325         (is_a, as_a, dyn_cast): Add overloads for opt_mode.
16326         (mode_for_size): Return an opt_machine_mode.
16327         * stor-layout.c (mode_for_size): Likewise.
16328         (mode_for_size_tree): Update call accordingly.
16329         (bitwise_mode_for_mode): Likewise.
16330         (make_fract_type): Likewise.
16331         (make_accum_type): Likewise.
16332         * caller-save.c (replace_reg_with_saved_mem): Update call
16333         accordingly.
16334         * config/alpha/alpha.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
16335         * config/i386/i386.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
16336         * config/s390/s390.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
16337         * config/sparc/sparc.h (SECONDARY_MEMORY_NEEDED_MODE): Likewise.
16338         * expmed.c (extract_bit_field_1): Likewise.
16339         * reload.c (get_secondary_mem): Likewise.
16340         * varasm.c (assemble_integer): Likewise.
16341         * lower-subreg.c (simplify_subreg_concatn): Likewise.  Move
16342         early-out.
16343
16344 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16345
16346         * machmode.h (decimal_float_mode_for_size): New function.
16347         * real.h (REAL_VALUE_TO_TARGET_LONG_DOUBLE): Use float_mode_for_size.
16348         (REAL_VALUE_TO_TARGET_DOUBLE): Likewise.
16349         (REAL_VALUE_TO_TARGET_SINGLE): Likewise.
16350         (REAL_VALUE_TO_TARGET_DECIMAL128): Use decimal_float_mode_for_size.
16351         (REAL_VALUE_TO_TARGET_DECIMAL64): Likewise.
16352         (REAL_VALUE_TO_TARGET_DECIMAL32): Likewise.
16353
16354 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16355
16356         * builtins.c (expand_builtin_powi): Use int_mode_for_size.
16357         (get_builtin_sync_mode): Likewise.
16358         (expand_ifn_atomic_compare_exchange): Likewise.
16359         (expand_builtin_atomic_clear): Likewise.
16360         (expand_builtin_atomic_test_and_set): Likewise.
16361         (fold_builtin_atomic_always_lock_free): Likewise.
16362         * calls.c (compute_argument_addresses): Likewise.
16363         (emit_library_call_value_1): Likewise.
16364         (store_one_arg): Likewise.
16365         * combine.c (combine_instructions): Likewise.
16366         * config/aarch64/aarch64.c (aarch64_function_value): Likewise.
16367         * config/arm/arm.c (arm_function_value): Likewise.
16368         (aapcs_allocate_return_reg): Likewise.
16369         * config/c6x/c6x.c (c6x_expand_movmem): Likewise.
16370         * config/i386/i386.c (construct_container): Likewise.
16371         (ix86_gimplify_va_arg): Likewise.
16372         (ix86_expand_sse_cmp): Likewise.
16373         (emit_memmov): Likewise.
16374         (emit_memset): Likewise.
16375         (expand_small_movmem_or_setmem): Likewise.
16376         (ix86_expand_pextr): Likewise.
16377         (ix86_expand_pinsr): Likewise.
16378         * config/lm32/lm32.c (lm32_block_move_inline): Likewise.
16379         * config/microblaze/microblaze.c (microblaze_block_move_straight):
16380         Likewise.
16381         * config/mips/mips.c (mips_function_value_1) Likewise.
16382         (mips_block_move_straight): Likewise.
16383         (mips_expand_ins_as_unaligned_store): Likewise.
16384         * config/powerpcspe/powerpcspe.c
16385         (rs6000_darwin64_record_arg_advance_flush): Likewise.
16386         (rs6000_darwin64_record_arg_flush): Likewise.
16387         * config/rs6000/rs6000.c
16388         (rs6000_darwin64_record_arg_advance_flush): Likewise.
16389         (rs6000_darwin64_record_arg_flush): Likewise.
16390         * config/sparc/sparc.c (sparc_function_arg_1): Likewise.
16391         (sparc_function_value_1): Likewise.
16392         * config/spu/spu.c (adjust_operand): Likewise.
16393         (spu_emit_branch_or_set): Likewise.
16394         (arith_immediate_p): Likewise.
16395         * emit-rtl.c (gen_lowpart_common): Likewise.
16396         * expr.c (expand_expr_real_1): Likewise.
16397         * function.c (assign_parm_setup_block): Likewise.
16398         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): Likewise.
16399         * reload1.c (alter_reg): Likewise.
16400         * stor-layout.c (mode_for_vector): Likewise.
16401         (layout_type): Likewise.
16402
16403 2017-09-05  Richard Sandiford  <richard.sandiford@linaro.org>
16404
16405         * config/spu/spu.c (exp2_immediate_p): Use int_mode_for_mode.
16406         (spu_convert_move): Likewise.
16407         * lower-subreg.c (resolve_simple_move): Likewise.
16408
16409 2017-09-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
16410
16411         PR target/81833
16412         * config/rs6000/altivec.md (altivec_vsum2sws): Convert from a
16413         define_insn to a define_expand.
16414         (altivec_vsum2sws_direct): New define_insn.
16415         (altivec_vsumsws): Convert from a define_insn to a define_expand.
16416
16417 2017-09-05  Wilco Dijkstra  <wdijkstr@arm.com>
16418
16419         * config/arm/arm.c (arm_option_params_internal): Improve setting of
16420         max_insns_skipped.
16421
16422 2017-09-05  H.J. Lu  <hongjiu.lu@intel.com>
16423
16424         PR target/59501
16425         PR target/81624
16426         PR target/81769
16427         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Don't
16428         realign stack if stack alignment needed is less than incoming
16429         stack boundary.
16430
16431 2017-09-05  Marek Polacek  <polacek@redhat.com>
16432
16433         PR sanitizer/82072
16434         * convert.c (convert_to_integer_1) <case NEGATE_EXPR>: Move the ubsan
16435         check earlier.
16436
16437 2017-09-05  Wilco Dijkstra  <wdijkstr@arm.com>
16438
16439         * explow.c (get_dynamic_stack_size): Improve dynamic alignment.
16440
16441 2017-09-05  Richard Biener  <rguenther@suse.de>
16442
16443         PR tree-optimization/82084
16444         * fold-const.c (can_native_encode_string_p): Handle wide characters.
16445
16446 2017-09-05  Richard Biener  <rguenther@suse.de>
16447
16448         PR tree-optimization/82102
16449         * tree-ssa-pre.c (fini_eliminate): Check if lhs is NULL.
16450
16451 2017-09-05  Martin Liska  <mliska@suse.cz>
16452
16453         PR tree-optimization/82032
16454         * tree-cfg.c (generate_range_test): New function.
16455         * tree-cfg.h (generate_range_test): Declared here.
16456         * tree-cfgcleanup.c (convert_single_case_switch): New function.
16457         (cleanup_control_expr_graph): Use it.
16458         * tree-switch-conversion.c (try_switch_expansion): Remove
16459         assert.
16460         (emit_case_nodes): Use generate_range_test.
16461
16462 2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
16463
16464         PR target/82098
16465         * config/i386/i386.md (*<btsc><mode>_mask): Add
16466         TARGET_USE_BT to insn constraint.
16467         (*btr<mode>_mask): Ditto.
16468
16469 2017-09-04  Wilco Dijkstra  <wdijkstr@arm.com>
16470
16471         * config/arm/arm.c (arm_legitimate_index_p): Add comment.
16472         (thumb2_legitimate_index_p): Use correct range for DI/DF mode.
16473
16474 2017-09-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>
16475
16476         PR target/77308
16477         * config/arm/arm.md (*arm_adddi3, *arm_subdi3): Split early except for
16478         TARGET_NEON and TARGET_IWMMXT.
16479         (anddi3, iordi3, xordi3, one_cmpldi2): Split while expanding except for
16480         TARGET_NEON and TARGET_IWMMXT.
16481         (*one_cmpldi2_insn): Moved the body of one_cmpldi2 here.
16482
16483 2017-09-04  Uros Bizjak  <ubizjak@gmail.com>
16484
16485         * config/i386/i386-protos.h (ix86_tls_address_pattern_p) New prototype.
16486         (ix86_rewrite_tls_address): Ditto.
16487         * config/i386/i386.c (ix86_tls_address_pattern_p) New function.
16488         (ix86_rewrite_tls_address_1): Ditto.
16489         (ix86_rewrite_tls_address): Ditto.
16490         * config/i386/predicates.md (tls_address_pattern): New predicate.
16491         * config/i386/i386.md (TLS address splitter): New splitter.
16492
16493 2017-09-04  Richard Biener  <rguenther@suse.de>
16494
16495         PR tree-optimization/82084
16496         * fold-const.h (can_native_encode_string_p): Declare.
16497         * fold-const.c (can_native_encode_string_p): Factor out from ...
16498         (native_encode_string): ... here.
16499         * tree-vect-stmts.c (vectorizable_store): Call it to avoid
16500         vectorizing stores from constants we later cannot handle.
16501
16502 2017-09-04  Marek Polacek  <polacek@redhat.com>
16503
16504         PR c/81783
16505         * doc/invoke.texi: Update -Wtautological-compare documentation.
16506
16507 2017-09-04  Jeff Law  <law@redhat.com>
16508
16509         PR tree-optimization/64910
16510         * tree-ssa-reassoc.c (reassociate_bb): For bitwise binary ops,
16511         swap the first and last operand if the last is a constant.
16512
16513 2017-09-04  Marek Polacek  <polacek@redhat.com>
16514
16515         PR sanitizer/82072
16516         * convert.c (do_narrow): When sanitizing signed integer overflows,
16517         bail out for signed types.
16518         (convert_to_integer_1) <case NEGATE_EXPR>: Likewise.
16519
16520 2017-09-04  Richard Biener  <rguenther@suse.de>
16521
16522         PR tree-optimization/82060
16523         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
16524         Move devirtualization after stmt folding and before EH/AB/noreturn
16525         cleanup to get the stmt refs canonicalized.  Use a bool instead
16526         of gimple_modified_p since that doesn't work for NOPs.  Schedule
16527         NOPs generated by folding for removal.
16528
16529 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16530             Alan Hayward  <alan.hayward@arm.com>
16531             David Sherwood  <david.sherwood@arm.com>
16532
16533         * coretypes.h (pad_direction): New enum.
16534         * defaults.h (DEFAULT_FUNCTION_ARG_PADDING): Delete.
16535         (FUNCTION_ARG_PADDING): Likewise.
16536         * target.def (function_arg_padding): New hook.
16537         * targhooks.h (default_function_arg_padding): Declare.
16538         * targhooks.c (default_function_arg_padding): New function.
16539         * doc/tm.texi.in (FUNCTION_ARG_PADDING): Replace with...
16540         (TARGET_FUNCTION_ARG_PADDING): ...this.
16541         * doc/tm.texi: Regenerate.
16542         * calls.c (store_unaligned_arguments_into_pseudos): Use pad_direction
16543         instead of direction.
16544         (compute_argument_addresses): Likewise.
16545         (load_register_parameters): Likewise.
16546         (emit_library_call_value_1): Likewise.
16547         (store_one_arg): Use targetm.calls.function_arg_padding instead
16548         of FUNCTION_ARG_PADDING.
16549         (must_pass_in_stack_var_size_or_pad): Likewise.
16550         * expr.c (emit_group_load_1): Use pad_direction instead of direction.
16551         (emit_group_store): Likewise.
16552         (emit_single_push_insn_1): Use targetm.calls.function_arg_padding
16553         instead of FUNCTION_ARG_PADDING.
16554         (emit_push_insn): Likewise, and propagate enum change throughout
16555         function.
16556         * function.h (direction): Delete.
16557         (locate_and_pad_arg_data::where_pad): Use pad_direction instead
16558         of direction.
16559         * function.c (assign_parm_find_stack_rtl): Likewise.
16560         (assign_parm_setup_block_p): Likewise.
16561         (assign_parm_setup_block): Likewise.
16562         (gimplify_parameters): Likewise.
16563         (locate_and_pad_parm): Use targetm.calls.function_arg_padding
16564         instead of FUNCTION_ARG_PADDING, and propagate enum change throughout
16565         function.
16566         * config/aarch64/aarch64.h (FUNCTION_ARG_PADDING): Delete.
16567         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
16568         * config/aarch64/aarch64-protos.h (aarch64_pad_arg_upward): Delete.
16569         * config/aarch64/aarch64.c (aarch64_pad_arg_upward): Replace with...
16570         (aarch64_function_arg_padding): ...this new function.
16571         (aarch64_gimplify_va_arg_expr): Use pad_direction instead of direction.
16572         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16573         * config/arm/arm.h (FUNCTION_ARG_PADDING): Delete.
16574         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
16575         * config/arm/arm-protos.h (arm_pad_arg_upward): Delete.
16576         * config/arm/arm.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16577         (arm_pad_arg_upward): Replace with...
16578         (arm_function_arg_padding): ...this new function.
16579         * config/c6x/c6x.h (BLOCK_REG_PADDING): Use pad_direction instead
16580         of direction.
16581         * config/ia64/hpux.h (FUNCTION_ARG_PADDING): Delete.
16582         * config/ia64/ia64-protos.h (ia64_hpux_function_arg_padding): Delete.
16583         * config/ia64/ia64.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16584         (ia64_hpux_function_arg_padding): Replace with...
16585         (ia64_function_arg_padding): ...this new function.  Use pad_direction
16586         instead of direction.  Check for TARGET_HPUX.
16587         * config/iq2000/iq2000.h (FUNCTION_ARG_PADDING): Delete.
16588         * config/iq2000/iq2000.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16589         (iq2000_function_arg_padding): New function.
16590         * config/mips/mips-protos.h (mips_pad_arg_upward): Delete.
16591         * config/mips/mips.c (mips_pad_arg_upward): Replace with...
16592         (mips_function_arg_padding): ...this new function.
16593         (mips_pad_reg_upward): Update accordingly.
16594         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16595         * config/mips/mips.h (PAD_VARARGS_DOWN): Use
16596         targetm.calls.function_arg_padding.
16597         (FUNCTION_ARG_PADDING): Delete.
16598         (BLOCK_REG_PADDING): Use pad_direction instead of direction.
16599         * config/nios2/nios2.h (FUNCTION_ARG_PADDING): Delete.
16600         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
16601         * config/nios2/nios2-protos.h (nios2_function_arg_padding): Delete.
16602         (nios2_block_reg_padding): Return pad_direction instead of direction.
16603         * config/nios2/nios2.c (nios2_block_reg_padding): Return pad_direction
16604         instead of direction.
16605         (nios2_function_arg_padding): Likewise.  Make static.
16606         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16607         * config/pa/pa.h (FUNCTION_ARG_PADDING): Delete.
16608         (BLOCK_REG_PADDING): Use targetm.calls.function_arg_padding.
16609         * config/pa/pa-protos.h (pa_function_arg_padding): Delete.
16610         * config/pa/pa.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16611         (pa_function_arg_padding): Make static.  Return pad_direction instead
16612         of direction.
16613         * config/powerpcspe/powerpcspe.h (FUNCTION_ARG_PADDING): Delete.
16614         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
16615         * config/powerpcspe/aix.h (BLOCK_REG_PADDING): Use pad_direction
16616         instead of direction.  Use targetm.calls.function_arg_padding.
16617         * config/powerpcspe/darwin.h (BLOCK_REG_PADDING): Likewise.
16618         * config/powerpcspe/freebsd64.h (BLOCK_REG_PADDING): Likewise.
16619         * config/powerpcspe/linux64.h (BLOCK_REG_PADDING): Likewise.
16620         * config/powerpcspe/powerpcspe-protos.h (function_arg_padding): Delete.
16621         * config/powerpcspe/powerpcspe.c (TARGET_FUNCTION_ARG_PADDING):
16622         Redefine.
16623         (function_arg_padding): Rename to...
16624         (rs6000_function_arg_padding): ...this.  Make static.  Return
16625         pad_direction instead of direction.
16626         (rs6000_return_in_msb): Use rs6000_function_arg_padding.
16627         * config/rs6000/rs6000.h (FUNCTION_ARG_PADDING): Delete.
16628         (PAD_VARARGS_DOWN): Use targetm.calls.function_arg_padding.
16629         * config/rs6000/aix.h (BLOCK_REG_PADDING): Use pad_direction
16630         instead of direction.  Use targetm.calls.function_arg_padding.
16631         * config/rs6000/darwin.h (BLOCK_REG_PADDING): Likewise.
16632         * config/rs6000/freebsd64.h (BLOCK_REG_PADDING): Likewise.
16633         * config/rs6000/linux64.h (BLOCK_REG_PADDING): Likewise.
16634         * config/rs6000/rs6000-protos.h (function_arg_padding): Delete.
16635         * config/rs6000/rs6000.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16636         (function_arg_padding): Rename to...
16637         (rs6000_function_arg_padding): ...this.  Make static.  Return
16638         pad_direction instead of direction.
16639         (rs6000_return_in_msb): Use rs6000_function_arg_padding.
16640         * config/s390/s390.h (FUNCTION_ARG_PADDING): Delete.
16641         * config/s390/s390.c (s390_function_arg_padding): New function.
16642         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16643         * config/sparc/sparc.h (FUNCTION_ARG_PADDING): Delete.
16644         * config/sparc/sparc-protos.h (function_arg_padding): Delete.
16645         * config/sparc/sparc.c (TARGET_FUNCTION_ARG_PADDING): Redefine.
16646         (function_arg_padding): Rename to...
16647         (sparc_function_arg_padding): ...this.  Make static.  Return
16648         pad_direction instead of direction.
16649         * config/spu/spu.h (FUNCTION_ARG_PADDING): Delete.
16650         * config/spu/spu.c (spu_function_arg_padding): New function.
16651         (TARGET_FUNCTION_ARG_PADDING): Redefine.
16652         * system.h (FUNCTION_ARG_PADDING): Poison.
16653
16654 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16655             Alan Hayward  <alan.hayward@arm.com>
16656             David Sherwood  <david.sherwood@arm.com>
16657
16658         * target.def (modes_tieable_p): New hook.
16659         * doc/tm.texi (MODES_TIEABLE_P): Replace with...
16660         (TARGET_MODES_TIEABLE_P): ...this.
16661         * doc/tm.texi.in: Regenerate.
16662         * hooks.h (hook_bool_mode_mode_true): Declare.
16663         * hooks.c (hook_bool_mode_mode_true): New function.
16664         * combine.c (subst): Use targetm.modes_tieable_p instead of
16665         MODES_TIEABLE_P.
16666         * dse.c (find_shift_sequence): Likewise.
16667         * expmed.c (extract_low_bits): Likewise.
16668         * lower-subreg.c: Include target.h.
16669         (find_decomposable_subregs): Use targetm.modes_tieable_p instead of
16670         MODES_TIEABLE_P.
16671         * rtlanal.c (rtx_cost): Likewise.
16672         * config/aarch64/aarch64.h (MODES_TIEABLE_P): Delete.
16673         * config/aarch64/aarch64-protos.h (aarch64_modes_tieable_p): Delete.
16674         * config/aarch64/aarch64.c (aarch64_modes_tieable_p): Make static.
16675         (TARGET_MODES_TIEABLE_P): Redefine.
16676         * config/alpha/alpha.h (MODES_TIEABLE_P): Delete.
16677         * config/alpha/alpha.c (alpha_modes_tieable_p): New function.
16678         (TARGET_MODES_TIEABLE_P): Redefine.
16679         * config/arc/arc.h (MODES_TIEABLE_P): Delete.
16680         * config/arc/arc.c (TARGET_MODES_TIEABLE_P): Redefine.
16681         (arc_modes_tieable_p): New function.
16682         * config/arm/arm.h (MODES_TIEABLE_P): Delete.
16683         * config/arm/arm-protos.h (arm_modes_tieable_p): Delete.
16684         * config/arm/arm.c (TARGET_MODES_TIEABLE_P): Redefine.
16685         (arm_modes_tieable_p): Make static.
16686         * config/avr/avr.h (MODES_TIEABLE_P): Delete.
16687         * config/bfin/bfin.h (MODES_TIEABLE_P): Delete.
16688         * config/bfin/bfin.c (bfin_modes_tieable_p): New function.
16689         (TARGET_MODES_TIEABLE_P): Redefine.
16690         * config/c6x/c6x.h (MODES_TIEABLE_P): Delete.
16691         * config/c6x/c6x.c (c6x_modes_tieable_p): New function.
16692         (TARGET_MODES_TIEABLE_P): Redefine.
16693         * config/cr16/cr16.h (MODES_TIEABLE_P): Delete.
16694         * config/cr16/cr16.c (TARGET_MODES_TIEABLE_P): Redefine.
16695         (cr16_modes_tieable_p): New function.
16696         * config/cris/cris.h (MODES_TIEABLE_P): Delete.
16697         * config/epiphany/epiphany.h (MODES_TIEABLE_P): Delete.
16698         * config/fr30/fr30.h (MODES_TIEABLE_P): Delete.
16699         (TRULY_NOOP_TRUNCATION): Update comment.
16700         * config/frv/frv.h (MODES_TIEABLE_P): Delete.
16701         (TRULY_NOOP_TRUNCATION): Update comment.
16702         * config/frv/frv.c (TARGET_MODES_TIEABLE_P): Redefine.
16703         (frv_modes_tieable_p): New function.
16704         * config/ft32/ft32.h (MODES_TIEABLE_P): Delete.
16705         * config/h8300/h8300.h (MODES_TIEABLE_P): Delete.
16706         * config/h8300/h8300.c (h8300_modes_tieable_p): New function.
16707         (TARGET_MODES_TIEABLE_P): Redefine.
16708         * config/i386/i386.h (MODES_TIEABLE_P): Delete.
16709         * config/i386/i386-protos.h (ix86_modes_tieable_p): Delete.
16710         * config/i386/i386.c (ix86_modes_tieable_p): Make static.
16711         (TARGET_MODES_TIEABLE_P): Redefine.
16712         * config/ia64/ia64.h (MODES_TIEABLE_P): Delete.
16713         * config/ia64/ia64.c (TARGET_MODES_TIEABLE_P): Redefine.
16714         (ia64_modes_tieable_p): New function.
16715         * config/iq2000/iq2000.h (MODES_TIEABLE_P): Delete.
16716         * config/iq2000/iq2000.c (TARGET_MODES_TIEABLE_P): Redefine.
16717         (iq2000_modes_tieable_p): New function.
16718         * config/lm32/lm32.h (MODES_TIEABLE_P): Delete.
16719         * config/lm32/lm32.c (TARGET_MODES_TIEABLE_P): Redefine.
16720         (lm32_modes_tieable_p): New function.
16721         * config/m32c/m32c.h (MODES_TIEABLE_P): Delete.
16722         * config/m32c/m32c-protos.h (m32c_modes_tieable_p): Delete.
16723         * config/m32c/m32c.c (m32c_modes_tieable_p): Make static.
16724         (TARGET_MODES_TIEABLE_P): Redefine.
16725         * config/m32r/m32r.h (MODES_TIEABLE_P): Delete.
16726         * config/m32r/m32r.c (TARGET_MODES_TIEABLE_P): Redefine.
16727         (m32r_modes_tieable_p): New function.
16728         * config/m68k/m68k.h (MODES_TIEABLE_P): Delete.
16729         * config/m68k/m68k.c (TARGET_MODES_TIEABLE_P): Redefine.
16730         (m68k_modes_tieable_p): New function.
16731         * config/mcore/mcore.h (MODES_TIEABLE_P): Delete.
16732         * config/mcore/mcore.c (TARGET_MODES_TIEABLE_P): Redefine.
16733         (mcore_modes_tieable_p): New function.
16734         * config/microblaze/microblaze.h (MODES_TIEABLE_P): Delete.
16735         * config/microblaze/microblaze.c (microblaze_modes_tieable_p): New
16736         function.
16737         (TARGET_MODES_TIEABLE_P): Redefine.
16738         * config/mips/mips.h (MODES_TIEABLE_P): Delete.
16739         * config/mips/mips-protos.h (mips_modes_tieable_p): Delete.
16740         * config/mips/mips.c (mips_modes_tieable_p): Make static.
16741         (TARGET_MODES_TIEABLE_P): Redefine.
16742         * config/mmix/mmix.h (MODES_TIEABLE_P): Delete.
16743         * config/mn10300/mn10300.h (MODES_TIEABLE_P): Delete.
16744         * config/mn10300/mn10300-protos.h (mn10300_modes_tieable): Delete.
16745         * config/mn10300/mn10300.c (mn10300_modes_tieable): Rename to...
16746         (mn10300_modes_tieable_p): ...this and make static.
16747         (TARGET_MODES_TIEABLE_P): Redefine.
16748         * config/moxie/moxie.h (MODES_TIEABLE_P): Delete.
16749         * config/msp430/msp430.h (MODES_TIEABLE_P): Delete.
16750         * config/msp430/msp430-protos.h (msp430_modes_tieable_p): Delete.
16751         * config/msp430/msp430.c (TARGET_MODES_TIEABLE_P): Redefine.
16752         (msp430_modes_tieable_p): Make static.
16753         * config/nds32/nds32.h (MODES_TIEABLE_P): Delete.
16754         * config/nds32/nds32.c (nds32_modes_tieable_p): New function.
16755         (TARGET_MODES_TIEABLE_P): Redefine.
16756         * config/nios2/nios2.h (MODES_TIEABLE_P): Delete.
16757         * config/nvptx/nvptx.h (MODES_TIEABLE_P): Delete.
16758         * config/nvptx/nvptx.c (nvptx_modes_tieable_p): New function.
16759         (TARGET_MODES_TIEABLE_P): Redefine.
16760         * config/pa/pa.h (MODES_TIEABLE_P): Delete.
16761         * config/pa/pa-protos.h (pa_modes_tieable_p): Delete.
16762         * config/pa/pa.c (pa_modes_tieable_p): Make static.
16763         (TARGET_MODES_TIEABLE_P): Redefine.
16764         * config/pdp11/pdp11.h (MODES_TIEABLE_P): Delete.
16765         * config/pdp11/pdp11.c (TARGET_MODES_TIEABLE_P): Redefine.
16766         (pdp11_modes_tieable_p): New function.
16767         * config/powerpcspe/powerpcspe.h (MODES_TIEABLE_P): Delete.
16768         * config/powerpcspe/powerpcspe.c (TARGET_MODES_TIEABLE_P): Redefine.
16769         (rs6000_modes_tieable_p): New function.
16770         (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P.
16771         * config/powerpcspe/powerpcspe.md: Update comment.
16772         * config/riscv/riscv.h (MODES_TIEABLE_P): Delete.
16773         * config/riscv/riscv.c (riscv_modes_tieable_p): New function.
16774         (TARGET_MODES_TIEABLE_P): Redefine.
16775         * config/rl78/rl78.h (MODES_TIEABLE_P): Delete.
16776         * config/rl78/rl78.c (TARGET_MODES_TIEABLE_P): Redefine.
16777         (rl78_modes_tieable_p): New function.
16778         * config/rs6000/rs6000.h (MODES_TIEABLE_P): Delete.
16779         * config/rs6000/rs6000.c (TARGET_MODES_TIEABLE_P): Redefine.
16780         (rs6000_modes_tieable_p): New function.
16781         (rs6000_debug_reg_global): Use it instead of MODES_TIEABLE_P.
16782         * config/rs6000/rs6000.md: Update comment.
16783         * config/rx/rx.h (MODES_TIEABLE_P): Delete.
16784         * config/rx/rx.c (rx_modes_tieable_p): New function.
16785         (TARGET_MODES_TIEABLE_P): Redefine.
16786         * config/s390/s390.h (MODES_TIEABLE_P): Delete.
16787         * config/s390/s390.c (s390_modes_tieable_p): New function.
16788         (TARGET_MODES_TIEABLE_P): Redefine.
16789         * config/sh/sh.h (MODES_TIEABLE_P): Delete.
16790         * config/sh/sh.c (TARGET_MODES_TIEABLE_P): Redefine.
16791         (sh_modes_tieable_p): New function.
16792         * config/sparc/sparc.h (MODES_TIEABLE_P): Delete.
16793         * config/sparc/sparc-protos.h (sparc_modes_tieable_p): Delete.
16794         * config/sparc/sparc.c (TARGET_MODES_TIEABLE_P): Redefine.
16795         (sparc_modes_tieable_p): Make static.
16796         * config/spu/spu.h (MODES_TIEABLE_P): Delete.
16797         * config/spu/spu.c (spu_modes_tieable_p): New function.
16798         (TARGET_MODES_TIEABLE_P): Redefine.
16799         * config/stormy16/stormy16.h (MODES_TIEABLE_P): Delete.
16800         * config/stormy16/stormy16.c (xstormy16_modes_tieable_p): New function.
16801         (TARGET_MODES_TIEABLE_P): Redefine.
16802         * config/tilegx/tilegx.h (MODES_TIEABLE_P): Delete.
16803         * config/tilepro/tilepro.h (MODES_TIEABLE_P): Delete.
16804         * config/v850/v850.h (MODES_TIEABLE_P): Delete.
16805         * config/v850/v850.c (v850_modes_tieable_p): New function.
16806         (TARGET_MODES_TIEABLE_P): Redefine.
16807         * config/vax/vax.h (MODES_TIEABLE_P): Delete.
16808         * config/visium/visium.h (MODES_TIEABLE_P): Delete.
16809         * config/visium/visium.c (TARGET_MODES_TIEABLE_P): Redefine.
16810         (visium_modes_tieable_p): New function.
16811         * config/xtensa/xtensa.h (MODES_TIEABLE_P): Delete.
16812         * config/xtensa/xtensa.c (TARGET_MODES_TIEABLE_P): Redefine.
16813         (xtensa_modes_tieable_p): New function.
16814         * system.h (MODES_TIEABLE_P): Poison.
16815
16816 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
16817             Alan Hayward  <alan.hayward@arm.com>
16818             David Sherwood  <david.sherwood@arm.com>
16819
16820         * target.def (hard_regno_mode_ok): New hook.
16821         * doc/tm.texi (HARD_REGNO_MODE_OK): Replace with...
16822         (TARGET_HARD_REGNO_MODE_OK): ...this.
16823         * doc/tm.texi.in: Regenerate.
16824         * hooks.h (hook_bool_uint_mode_true): Declare.
16825         * hooks.c (hook_bool_uint_mode_true): New function.
16826         * doc/md.texi: Refer to targetm.hard_regno_mode_ok instead of
16827         HARD_REGNO_MODE_OK.
16828         * genpreds.c (write_insn_preds_c): Add an include of target.h.
16829         * alias.c (init_alias_target): Use targetm.hard_regno_mode_ok
16830         instead of HARD_REGNO_MODE_OK.
16831         * caller-save.c: Include target.h.
16832         (reg_save_code): Use targetm.hard_regno_mode_ok instead of
16833         HARD_REGNO_MODE_OK.
16834         * combine.c (can_combine_p): Likewise.
16835         (combinable_i3pat): Likewise.
16836         (can_change_dest_mode): Likewise.
16837         * expr.c (init_expr_target): Likewise.
16838         (convert_move): Likewise.
16839         (convert_modes): Likewise.
16840         * ira.c (setup_prohibited_class_mode_regs): Likewise.
16841         (setup_prohibited_mode_move_regs): Likewise.
16842         * ira.h (target_ira): Likewise.
16843         * lra-assigns.c (find_hard_regno_for_1): Likewise.
16844         * lra-constraints.c (process_alt_operands): Likewise.
16845         (split_reg): Likewise.
16846         * recog.c (peep2_find_free_register): Likewise.
16847         * ree.c (combine_reaching_defs): Likewise.
16848         * regcprop.c (maybe_mode_change): Likewise.
16849         * reginfo.c (init_reg_sets_1): Likewise.
16850         (choose_hard_reg_mode): Likewise.
16851         (simplifiable_subregs): Likewise.
16852         * regrename.c (check_new_reg_p): Likewise.
16853         * reload.c (find_valid_class): Likewise.
16854         (find_valid_class_1): Likewise.
16855         (reload_inner_reg_of_subreg): Likewise.
16856         (push_reload): Likewise.
16857         (combine_reloads): Likewise.
16858         (find_dummy_reload): Likewise.
16859         (find_reloads): Likewise.
16860         * reload1.c (find_reg): Likewise.
16861         (set_reload_reg): Likewise.
16862         (allocate_reload_reg): Likewise.
16863         (choose_reload_regs): Likewise.
16864         (reload_adjust_reg_for_temp): Likewise.
16865         * rtlanal.c (subreg_size_offset_from_lsb): Likewise.
16866         (simplify_subreg_regno): Likewise.
16867         * sel-sched.c (init_regs_for_mode): Likewise.
16868         * varasm.c (make_decl_rtl): Likewise.
16869         * config/aarch64/aarch64.h (HARD_REGNO_MODE_OK): Delete.
16870         (MODES_TIEABLE_P): Use targetm.hard_regno_mode_ok instead of
16871         HARD_REGNO_MODE_OK.
16872         * config/aarch64/aarch64-protos.h (aarch64_hard_regno_mode_ok): Delete.
16873         * config/aarch64/aarch64.c (aarch64_hard_regno_mode_ok): Make static.
16874         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16875         * config/alpha/alpha.h (HARD_REGNO_MODE_OK): Delete.
16876         * config/alpha/alpha.c (alpha_hard_regno_mode_ok): New function.
16877         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16878         * config/arc/arc.h (arc_hard_regno_mode_ok): Delete.
16879         (arc_mode_class): Delete.
16880         (HARD_REGNO_MODE_OK): Delete.
16881         * config/arc/arc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16882         (arc_hard_regno_mode_ok): Rename old array to...
16883         (arc_hard_regno_mode_ok_modes): ...this.
16884         (arc_conditional_register_usage): Update accordingly.
16885         (arc_mode_class): Make static.
16886         (arc_hard_regno_mode_ok): New function.
16887         * config/arm/arm.h (HARD_REGNO_MODE_OK): Delete.
16888         * config/arm/arm-protos.h (arm_hard_regno_mode_ok): Delete.
16889         * config/arm/arm.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16890         (arm_hard_regno_mode_ok): Make static.
16891         * config/arm/arm.md (movdi): Use targetm.hard_regno_mode_ok instead of
16892         HARD_REGNO_MODE_OK.
16893         * config/avr/avr-protos.h (avr_hard_regno_mode_ok): Delete.
16894         * config/avr/avr.h (HARD_REGNO_MODE_OK): Delete.
16895         * config/avr/avr.c (avr_hard_regno_mode_ok): Make static and
16896         return a bool.
16897         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16898         * config/bfin/bfin-protos.h (hard_regno_mode_ok): Delete.
16899         * config/bfin/bfin.h (HARD_REGNO_MODE_OK): Delete.
16900         * config/bfin/bfin.c (hard_regno_mode_ok): Rename to...
16901         (bfin_hard_regno_mode_ok): ...this.  Make static and return a bool.
16902         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16903         * config/bfin/predicates.md (valid_reg_operand): Use
16904         targetm.hard_regno_mode_ok instead of HARD_REGNO_MODE_OK.
16905         * config/c6x/c6x.h (HARD_REGNO_MODE_OK): Delete.
16906         * config/c6x/c6x.c (c6x_hard_regno_mode_ok): New function.
16907         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16908         * config/cr16/cr16.h (HARD_REGNO_MODE_OK): Delete.
16909         * config/cr16/cr16-protos.h (cr16_hard_regno_mode_ok): Delete.
16910         * config/cr16/cr16.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16911         (cr16_hard_regno_mode_ok): Make static and return a bool.
16912         * config/cris/cris.h (HARD_REGNO_MODE_OK): Delete.
16913         * config/cris/cris.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16914         (cris_hard_regno_mode_ok): New function.
16915         * config/epiphany/epiphany.h (epiphany_hard_regno_mode_ok): Delete.
16916         (epiphany_mode_class): Delete.
16917         (HARD_REGNO_MODE_OK): Delete.
16918         * config/epiphany/epiphany-protos.h (hard_regno_mode_ok): Delete.
16919         * config/epiphany/epiphany.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16920         (hard_regno_mode_ok): Rename to...
16921         (epiphany_hard_regno_mode_ok): ...this.  Make static and return a bool.
16922         * config/fr30/fr30.h (HARD_REGNO_MODE_OK): Delete.
16923         * config/fr30/fr30.md: Refer to targetm.hard_regno_mode_ok instead of
16924         HARD_REGNO_MODE_OK.
16925         * config/frv/frv.h (HARD_REGNO_MODE_OK): Delete.
16926         * config/frv/frv-protos.h (frv_hard_regno_mode_ok): Delete.
16927         * config/frv/frv.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16928         (frv_hard_regno_mode_ok): Make static and return a bool.
16929         * config/frv/frv.md: Refer to targetm.hard_regno_mode_ok instead of
16930         HARD_REGNO_MODE_OK.
16931         * config/ft32/ft32.h (HARD_REGNO_MODE_OK): Delete.
16932         * config/h8300/h8300.h (HARD_REGNO_MODE_OK): Delete.
16933         * config/h8300/h8300-protos.h (h8300_hard_regno_mode_ok): Delete.
16934         * config/h8300/h8300.c (h8300_hard_regno_mode_ok): Make static
16935         and return a bool.
16936         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16937         * config/i386/i386.h (HARD_REGNO_MODE_OK): Delete.
16938         * config/i386/i386-protos.h (ix86_hard_regno_mode_ok): Delete.
16939         * config/i386/i386.c (ix86_hard_regno_mode_ok): Make static and
16940         return a bool.
16941         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16942         * config/ia64/ia64.h (HARD_REGNO_MODE_OK): Delete.
16943         * config/ia64/ia64.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16944         (ia64_hard_regno_mode_ok): New function.
16945         * config/iq2000/iq2000.h (HARD_REGNO_MODE_OK): Delete.
16946         * config/iq2000/iq2000.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16947         (iq2000_hard_regno_mode_ok): New function.
16948         * config/lm32/lm32.h (HARD_REGNO_MODE_OK): Delete.
16949         * config/lm32/lm32.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16950         (lm32_hard_regno_mode_ok): New function.
16951         * config/m32c/m32c.h (HARD_REGNO_MODE_OK): Delete.
16952         * config/m32c/m32c-protos.h (m32c_hard_regno_ok): Delete.
16953         * config/m32c/m32c.c (class_can_hold_mode): Use m32c_hard_regno_mode_ok
16954         instead of HARD_REGNO_MODE_OK.
16955         (m32c_hard_regno_ok): Rename to...
16956         (m32c_hard_regno_mode_ok): ...this.  Make static and return a bool.
16957         (m32c_cannot_change_mode_class): Update accordingly.
16958         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16959         * config/m32r/m32r.h (m32r_hard_regno_mode_ok): Delete.
16960         (m32r_mode_class): Delete.
16961         (HARD_REGNO_MODE_OK): Delete.
16962         * config/m32r/m32r.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16963         (m32r_hard_regno_mode_ok): Rename to...
16964         (m32r_hard_regno_modes): ...this.
16965         (m32r_mode_class): Make static.
16966         (m32r_hard_regno_mode_ok): New function.
16967         * config/m68k/m68k.h (HARD_REGNO_MODE_OK): Delete.
16968         * config/m68k/m68k-protos.h (m68k_regno_mode_ok): Delete.
16969         * config/m68k/m68k.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16970         (m68k_hard_regno_mode_ok): Make static.
16971         * config/mcore/mcore.h (HARD_REGNO_MODE_OK): Delete.
16972         * config/mcore/mcore.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
16973         (mcore_hard_regno_mode_ok): New function.
16974         * config/microblaze/microblaze.h (microblaze_hard_regno_mode_ok)
16975         (HARD_REGNO_MODE_OK): Delete.
16976         * config/microblaze/microblaze.c (microblaze_hard_regno_mode_ok):
16977         Rename to...
16978         (microblaze_hard_regno_mode_ok_p): ...this and make static.
16979         (microblaze_hard_regno_mode_ok): New function.
16980         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16981         * config/mips/mips.h (HARD_REGNO_MODE_OK): Delete.
16982         (mips_hard_regno_mode_ok): Delete.
16983         * config/mips/mips.c (mips_hard_regno_mode_ok): Rename to...
16984         (mips_hard_regno_mode_ok_p): ...this and make static.
16985         (mips_hard_regno_mode_ok_p): Rename to...
16986         (mips_hard_regno_mode_ok_uncached): ...this.
16987         (mips_hard_regno_mode_ok): New function.
16988         (mips_class_max_nregs): Use mips_hard_regno_mode_ok instead
16989         of HARD_REGNO_MODE_OK.
16990         (mips_option_override): Update after above name changes.
16991         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16992         * config/mmix/mmix.h (HARD_REGNO_MODE_OK): Delete.
16993         * config/mn10300/mn10300.h (HARD_REGNO_MODE_OK): Delete.
16994         * config/mn10300/mn10300-protos.h (mn10300_hard_regno_mode_ok): Delete.
16995         * config/mn10300/mn10300.c (mn10300_hard_regno_mode_ok): Make static.
16996         (TARGET_HARD_REGNO_MODE_OK): Redefine.
16997         * config/moxie/moxie.h (HARD_REGNO_MODE_OK): Delete.
16998         * config/msp430/msp430.h (HARD_REGNO_MODE_OK): Delete.
16999         * config/msp430/msp430-protos.h (msp430_hard_regno_mode_ok): Delete.
17000         * config/msp430/msp430.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17001         (msp430_hard_regno_mode_ok): Make static and return a bool.
17002         * config/nds32/nds32.h (HARD_REGNO_MODE_OK): Delete.
17003         * config/nds32/nds32-protos.h (nds32_hard_regno_mode_ok): Delete.
17004         * config/nds32/nds32.c (nds32_hard_regno_mode_ok): Make static
17005         and return a bool.
17006         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17007         * config/nios2/nios2.h (HARD_REGNO_MODE_OK): Delete.
17008         * config/nvptx/nvptx.h (HARD_REGNO_MODE_OK): Delete.
17009         * config/pa/pa.h (MODES_TIEABLE_P): Update commentary.
17010         * config/pa/pa32-regs.h (HARD_REGNO_MODE_OK): Rename to...
17011         (PA_HARD_REGNO_MODE_OK): ...this
17012         * config/pa/pa64-regs.h (HARD_REGNO_MODE_OK): Rename to...
17013         (PA_HARD_REGNO_MODE_OK): ...this.
17014         * config/pa/pa.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17015         (pa_hard_regno_mode_ok): New function.
17016         * config/pdp11/pdp11.h (HARD_REGNO_MODE_OK): Delete.
17017         * config/pdp11/pdp11.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17018         (pdp11_hard_regno_mode_ok): New function.
17019         * config/powerpcspe/powerpcspe.h (HARD_REGNO_MODE_OK): Delete.
17020         * config/powerpcspe/powerpcspe-protos.h (rs6000_hard_regno_mode_ok_p):
17021         Delete.
17022         * config/powerpcspe/powerpcspe.c (rs6000_hard_regno_mode_ok_p):
17023         Make static.
17024         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17025         (rs6000_hard_regno_mode_ok): Rename to...
17026         (rs6000_hard_regno_mode_ok_uncached): ...this.
17027         (rs6000_init_hard_regno_mode_ok): Update accordingly.
17028         (rs6000_hard_regno_mode_ok): New function.
17029         * config/riscv/riscv.h (HARD_REGNO_MODE_OK): Delete.
17030         * config/riscv/riscv-protos.h (riscv_hard_regno_mode_ok_p): Delete.
17031         * config/riscv/riscv.c (riscv_hard_regno_mode_ok_p): Rename to...
17032         (riscv_hard_regno_mode_ok): ...this and make static.
17033         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17034         * config/rl78/rl78.h (HARD_REGNO_MODE_OK): Delete.
17035         * config/rl78/rl78-protos.h (rl78_hard_regno_mode_ok): Delete.
17036         * config/rl78/rl78.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17037         (rl78_hard_regno_mode_ok): Make static and return bool.
17038         * config/rs6000/rs6000.h (HARD_REGNO_MODE_OK): Delete.
17039         * config/rs6000/rs6000-protos.h (rs6000_hard_regno_mode_ok_p):
17040         Delete.
17041         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok_p): Make static.
17042         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17043         (rs6000_hard_regno_mode_ok): Rename to...
17044         (rs6000_hard_regno_mode_ok_uncached): ...this.
17045         (rs6000_init_hard_regno_mode_ok): Update accordingly.
17046         (rs6000_hard_regno_mode_ok): New function.
17047         * config/rx/rx.h (HARD_REGNO_MODE_OK): Delete.
17048         * config/rx/rx.c (rx_hard_regno_mode_ok): New function.
17049         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17050         * config/s390/s390.h (HARD_REGNO_MODE_OK): Delete.
17051         * config/s390/s390-protos.h (s390_hard_regno_mode_ok): Delete.
17052         * config/s390/s390.c (s390_hard_regno_mode_ok): Make static.
17053         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17054         * config/sh/sh.h (HARD_REGNO_MODE_OK): Delete.
17055         * config/sh/sh-protos.h (sh_hard_regno_mode_ok): Delete.
17056         * config/sh/sh.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17057         (sh_hard_regno_mode_ok): Make static.
17058         * config/sparc/constraints.md: Refer to targetm.hard_regno_mode_ok
17059         instead of HARD_REGNO_MODE_OK.
17060         * config/sparc/sparc.h (hard_regno_mode_classes): Delete.
17061         (sparc_mode_class): Delete.
17062         (HARD_REGNO_MODE_OK): Delete.
17063         * config/sparc/sparc.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17064         (hard_regno_mode_classes): Make static.
17065         (sparc_mode_class): Likewise.
17066         (sparc_hard_regno_mode_ok): New function.
17067         * config/spu/spu.h (HARD_REGNO_MODE_OK): Delete.
17068         * config/stormy16/stormy16.h (HARD_REGNO_MODE_OK): Delete.
17069         * config/stormy16/stormy16.c (xstormy16_hard_regno_mode_ok): New
17070         function.
17071         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17072         * config/tilegx/tilegx.h (HARD_REGNO_MODE_OK): Delete.
17073         * config/tilepro/tilepro.h (HARD_REGNO_MODE_OK): Delete.
17074         * config/v850/v850.h (HARD_REGNO_MODE_OK): Delete.
17075         * config/v850/v850.c (v850_hard_regno_mode_ok): New function.
17076         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17077         * config/vax/vax.h (HARD_REGNO_MODE_OK): Delete.
17078         * config/visium/visium.h (HARD_REGNO_MODE_OK): Delete.
17079         * config/visium/visium.c (TARGET_HARD_REGNO_MODE_OK): Redefine.
17080         (visium_hard_regno_mode_ok): New function.
17081         * config/visium/visium.md: Refer to targetm.hard_regno_mode_ok
17082         instead of HARD_REGNO_MODE_OK.
17083         * config/xtensa/xtensa.h (xtensa_hard_regno_mode_ok): Delete.
17084         (HARD_REGNO_MODE_OK): Delete.
17085         * config/xtensa/xtensa.c (xtensa_hard_regno_mode_ok): Rename to...
17086         (xtensa_hard_regno_mode_ok_p): ...this and make static.
17087         (xtensa_option_override): Update accordingly.
17088         (TARGET_HARD_REGNO_MODE_OK): Redefine.
17089         (xtensa_hard_regno_mode_ok): New function.
17090         * system.h (HARD_REGNO_MODE_OK): Poison.
17091
17092 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
17093             Alan Hayward  <alan.hayward@arm.com>
17094             David Sherwood  <david.sherwood@arm.com>
17095
17096         * target.def (hard_regno_call_part_clobbered): New hook.
17097         * doc/tm.texi.in (HARD_REGNO_CALL_PART_CLOBBERED): Replace with...
17098         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): ...this hook.
17099         * doc/tm.texi: Regenerate.
17100         * hooks.h (hook_bool_uint_mode_false): Declare.
17101         * hooks.c (hook_bool_uint_mode_false): New function.
17102         * regs.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17103         * cselib.c (cselib_process_insn): Use
17104         targetm.hard_regno_call_part_clobbered instead of
17105         HARD_REGNO_CALL_PART_CLOBBERED.
17106         * ira-conflicts.c (ira_build_conflicts): Likewise.
17107         * ira-costs.c (ira_tune_allocno_costs): Likewise.
17108         * lra-constraints.c (need_for_call_save_p): Likewise.
17109         * lra-lives.c: Include target.h.
17110         (check_pseudos_live_through_calls): Use
17111         targetm.hard_regno_call_part_clobbered instead of
17112         HARD_REGNO_CALL_PART_CLOBBERED.
17113         * regcprop.c: Include target.h.
17114         (copyprop_hardreg_forward_1): Use
17115         targetm.hard_regno_call_part_clobbered instead of
17116         HARD_REGNO_CALL_PART_CLOBBERED.
17117         * reginfo.c (choose_hard_reg_mode): Likewise.
17118         * regrename.c (check_new_reg_p): Likewise.
17119         * reload.c (find_equiv_reg): Likewise.
17120         * reload1.c (emit_reload_insns): Likewise.
17121         * sched-deps.c (deps_analyze_insn): Likewise.
17122         * sel-sched.c (init_regs_for_mode): Likewise.
17123         (mark_unavailable_hard_regs): Likewise.
17124         * targhooks.c (default_dwarf_frame_reg_mode): Likewise.
17125         * config/aarch64/aarch64.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17126         * config/aarch64/aarch64.c (aarch64_hard_regno_call_part_clobbered):
17127         New function.
17128         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17129         * config/avr/avr.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17130         * config/avr/avr-protos.h (avr_hard_regno_call_part_clobbered):
17131         Delete.
17132         * config/avr/avr.c (avr_hard_regno_call_part_clobbered): Make static
17133         and return a bool.
17134         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17135         * config/i386/i386.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17136         * config/i386/i386.c (ix86_hard_regno_call_part_clobbered): New
17137         function.
17138         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17139         * config/mips/mips.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17140         * config/mips/mips.c (mips_hard_regno_call_part_clobbered): New
17141         function.
17142         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17143         * config/powerpcspe/powerpcspe.h (HARD_REGNO_CALL_PART_CLOBBERED):
17144         Delete.
17145         * config/powerpcspe/powerpcspe.c
17146         (rs6000_hard_regno_call_part_clobbered): New function.
17147         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17148         * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17149         * config/rs6000/rs6000.c (rs6000_hard_regno_call_part_clobbered):
17150         New function.
17151         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17152         * config/s390/s390.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17153         * config/s390/s390.c (s390_hard_regno_call_part_clobbered): New
17154         function.
17155         (TARGET_HARD_REGNO_CALL_PART_CLOBBERED): Redefine.
17156         * config/sh/sh.h (HARD_REGNO_CALL_PART_CLOBBERED): Delete.
17157         * system.h (HARD_REGNO_CALL_PART_CLOBBERED): Poison.
17158
17159 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
17160             Alan Hayward  <alan.hayward@arm.com>
17161             David Sherwood  <david.sherwood@arm.com>
17162
17163         * rtl.h (subreg_memory_offset): Declare.
17164         * emit-rtl.c (subreg_memory_offset): New function.
17165         * expmed.c (store_bit_field_1): Use it.
17166         * expr.c (undefined_operand_subword_p): Likewise.
17167         * simplify-rtx.c (simplify_subreg): Likewise.
17168
17169 2017-09-04  Alexander Monakov  <amonakov@ispras.ru>
17170
17171         PR rtl-optimization/57448
17172         PR target/67458
17173         PR target/81316
17174         * optabs.c (expand_atomic_load): Place compiler memory barriers if
17175         using atomic_load pattern.
17176         (expand_atomic_store): Likewise.
17177
17178 2017-09-04  Jakub Jelinek  <jakub@redhat.com>
17179
17180         PR sanitizer/81981
17181         * gimple-fold.c (gimple_fold_call): Optimize away useless UBSAN_PTR
17182         and UBSAN_BOUNDS internal calls.  Clean up IFN_UBSAN_OBJECT_SIZE
17183         handling.  Use replace_call_with_value with NULL instead of
17184         gsi_replace, unlink_stmt_vdef and release_defs.
17185
17186         * gdbhooks.py (OptMachineModePrinter.to_string): Use 8 spaces
17187         instead of tab.
17188
17189         * lra-remat.c (reg_overlap_for_remat_p): Fix a pasto.
17190
17191 2017-09-04  Richard Sandiford  <richard.sandiford@linaro.org>
17192
17193         PR bootstrap/82045
17194         * rtl.h (emit_library_call_value_1): Declare.
17195         (emit_library_call): Replace declaration with a series of overloads.
17196         Remove the parameter count argument.
17197         (emit_library_call_value): Likewise.
17198         * calls.c (emit_library_call_value_1): Make global.  Replace varargs
17199         with an "rtx_mode_t *".
17200         (emit_library_call_value): Delete.
17201         (emit_library_call): Likewise.
17202         * asan.c (asan_emit_stack_protection): Update calls accordingly.
17203         (asan_emit_allocas_unpoison): Likewise.
17204         * builtins.c (expand_builtin_powi): Likewise.
17205         (expand_asan_emit_allocas_unpoison): Likewise.
17206         * cfgexpand.c (expand_main_function): Likewise.
17207         * config/aarch64/aarch64.c (aarch64_trampoline_init): Likewise.
17208         * config/aarch64/aarch64.h (PROFILE_HOOK): Likewise.
17209         * config/alpha/alpha.c (alpha_trampoline_init): Likewise.
17210         * config/arm/arm.c (arm_trampoline_init): Likewise.
17211         (arm_call_tls_get_addr): Likewise.
17212         (arm_expand_divmod_libfunc): Likewise.
17213         * config/bfin/bfin.md (umulsi3_highpart): Likewise.
17214         (smulsi3_highpart): Likewise.
17215         * config/c6x/c6x.c (c6x_initialize_trampoline): Likewise.
17216         (c6x_expand_compare): Likewise.
17217         (c6x_expand_movmem): Likewise.
17218         * config/frv/frv.c (frv_trampoline_init): Likewise.
17219         * config/i386/i386.c (ix86_trampoline_init): Likewise.
17220         (ix86_expand_divmod_libfunc): Likewise.
17221         * config/ia64/ia64.c (ia64_expand_tls_address): Likewise.
17222         (ia64_expand_compare): Likewise.
17223         (ia64_profile_hook): Likewise.
17224         * config/ia64/ia64.md (save_stack_nonlocal): Likewise.
17225         (nonlocal_goto): Likewise.
17226         (restore_stack_nonlocal): Likewise.
17227         * config/m32r/m32r.c (block_move_call): Likewise.
17228         (m32r_trampoline_init): Likewise.
17229         * config/m68k/linux.h (FINALIZE_TRAMPOLINE): Likewise.
17230         * config/m68k/m68k.c (m68k_call_tls_get_addr): Likewise.
17231         (m68k_call_m68k_read_tp): Likewise.
17232         * config/microblaze/microblaze.c (microblaze_call_tls_get_addr)
17233         (microblaze_expand_divide): Likewise.
17234         * config/mips/mips.h (mips_args): Likewise.
17235         * config/mips/sdemtk.h (mips_sync_icache): Likewise.
17236         (MIPS_ICACHE_SYNC): Likewise.
17237         * config/nios2/nios2.c (nios2_emit_expensive_div): Likewise.
17238         (nios2_trampoline_init): Likewise.
17239         * config/pa/pa.c (hppa_tls_call): Likewise.
17240         (pa_trampoline_init): Likewise.
17241         * config/pa/pa.md (canonicalize_funcptr_for_compare): Likewise.
17242         * config/powerpcspe/powerpcspe.c (rs6000_legitimize_tls_address)
17243         (expand_strn_compare): Likewise.
17244         (rs6000_generate_compare): Likewise.
17245         (rs6000_expand_float128_convert): Likewise.
17246         (output_profile_hook): Likewise.
17247         (rs6000_trampoline_init): Likewise.
17248         * config/powerpcspe/powerpcspe.md (neg<mode>2): Likewise.
17249         * config/riscv/riscv.h (PROFILE_HOOK): Likewise.
17250         * config/rs6000/rs6000-string.c (expand_strn_compare): Likewise.
17251         * config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Likewise.
17252         (rs6000_generate_compare): Likewise.
17253         (rs6000_expand_float128_convert): Likewise.
17254         (output_profile_hook): Likewise.
17255         (rs6000_trampoline_init): Likewise.
17256         * config/rs6000/rs6000.md (neg<mode>2): Likewise.
17257         * config/sh/sh.c (sh_trampoline_init): Likewise.
17258         * config/sparc/sparc.c (emit_soft_tfmode_libcall): Likewise.
17259         (sparc_emit_float_lib_cmp): Likewise.
17260         (sparc32_initialize_trampoline): Likewise.
17261         (sparc64_initialize_trampoline): Likewise.
17262         (sparc_profile_hook): Likewise.
17263         * config/spu/spu.c (ea_load_store): Likewise.
17264         * config/spu/spu.md (floatunssidf2): Likewise.
17265         * config/tilegx/tilegx.c (tilegx_trampoline_init): Likewise.
17266         * config/tilepro/tilepro.c (tilepro_trampoline_init): Likewise.
17267         * config/visium/visium.c (expand_block_move_4): Likewise.
17268         (expand_block_move_2): Likewise.
17269         (expand_block_move_1): Likewise.
17270         (expand_block_set_4): Likewise.
17271         (expand_block_set_2): Likewise.
17272         (expand_block_set_1): Likewise.
17273         (visium_trampoline_init): Likewise.
17274         (visium_profile_hook): Likewise.
17275         * config/xtensa/xtensa.c (xtensa_expand_nonlocal_goto): Likewise.
17276         (xtensa_setup_frame_addresses): Likewise.
17277         (xtensa_trampoline_init): Likewise.
17278         * except.c (sjlj_emit_function_enter): Likewise.
17279         (sjlj_emit_function_exit): Likewise.
17280         * explow.c (allocate_dynamic_stack_space): Likewise.
17281         (probe_stack_range): Likewise.
17282         * expr.c (convert_mode_scalar): Likewise.
17283         * optabs.c (expand_binop): Likewise.
17284         (expand_twoval_binop_libfunc): Likewise.
17285         (expand_unop): Likewise.
17286         (prepare_cmp_insn): Likewise.
17287         (prepare_float_lib_cmp): Likewise.
17288         (expand_float): Likewise.
17289         (expand_fix): Likewise.
17290         (expand_fixed_convert): Likewise.
17291         (maybe_emit_sync_lock_test_and_set): Likewise.
17292         (expand_atomic_compare_and_swap): Likewise.
17293         (expand_mem_thread_fence): Likewise.
17294         (expand_atomic_fetch_op): Likewise.
17295
17296 2017-09-03  Gerald Pfeifer  <gerald@pfeifer.com>
17297
17298         * doc/generic.texi (OpenACC): Adjust URL.
17299         * doc/invoke.texi (C Dialect Options): Ditto.
17300
17301 2017-09-03  Uros Bizjak  <ubizjak@gmail.com>
17302
17303         * config/i386/i386.md (*bt<mode>): Use nonimmediate_operand
17304         predicate for operand 1.  Add (m,<S>) constraint.
17305         (*jcc_bt<mode>): Use nonimmediate_operand predicate for operand 1.
17306         Prevent memory operand 1 with register operand 2.
17307
17308 2017-09-01  Segher Boessenkool  <segher@kernel.crashing.org>
17309
17310         PR rtl-optimization/82024
17311         * combine.c (try_combine): If the combination result is a PARALLEL,
17312         and we only need to retain the SET in there that would be placed
17313         at I2, check that we can place that at I3 instead, before doing so.
17314
17315 2017-09-01  Jakub Jelinek  <jakub@redhat.com>
17316
17317         PR target/81766
17318         * config/i386/i386.c (ix86_init_large_pic_reg): Return label
17319         instead of void.
17320         (ix86_init_pic_reg): Remember label from ix86_init_large_pic_reg,
17321         if non-NULL and preceded by NOTE_INSN_BASIC_BLOCK, swap the note
17322         and label.
17323
17324 2017-09-01  Joerg Sonnenberger  <joerg@bec.de>
17325             Jeff Law  <law@redhat.com>
17326
17327         * varasm.c (bss_initializer_p): Do not put constants into .bss
17328         (categorize_decl_for_section): Handle bss_initializer_p returning
17329         false when DECL_INITIAL is NULL.
17330
17331 2017-09-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
17332
17333         PR target/82012
17334         * config/s390/s390.c (s390_can_inline_p): New function.
17335
17336 2017-09-01  Jeff Law  <law@redhat.com>
17337
17338         PR tree-optimization/82052
17339         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
17340         Always initialize the returned slot after a hash table miss
17341         when INSERT is true.
17342
17343 2017-09-01  Alexander Monakov  <amonakov@ispras.ru>
17344
17345         * config/s390/s390.md (mem_signal_fence): Remove.
17346         * doc/md.texi (mem_signal_fence): Remove.
17347         * optabs.c (expand_mem_signal_fence): Remove uses of mem_signal_fence.
17348         Update comments.
17349         * target-insns.def (mem_signal_fence): Remove.
17350
17351 2017-09-01  Jakub Jelinek  <jakub@redhat.com>
17352
17353         PR sanitizer/81902
17354         * doc/invoke.texi: Document -fsanitize=pointer-overflow.
17355
17356         PR sanitizer/81923
17357         * asan.c (create_odr_indicator): Strip name encoding from assembler
17358         name before appending it after __odr_asan_.
17359
17360 2017-09-01  Martin Liska  <mliska@suse.cz>
17361
17362         PR tree-optimization/82059
17363         * gimple-ssa-isolate-paths.c (isolate_path): Add profile and
17364         frequency only when an edge is redirected.
17365
17366 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
17367
17368         * config/arc/arc-c.c (__ARC_LPC_WIDTH__): Add builtin define.
17369         * config/arc/arc.c (ARC_MAX_LOOP_LENGTH): Define.
17370         (arc_conditional_register_usage): Remove ARC600 lp_count
17371         exception.
17372         (arc_file_start): Emit Tag_ARC_CPU_variation.
17373         (arc_can_use_doloop_p): New conditions to use ZOLs.
17374         (hwloop_fail): New function.
17375         (hwloop_optimize): Likewise.
17376         (hwloop_pattern_reg): Likewise.
17377         (arc_doloop_hooks): New struct, to be used with reorg_loops.
17378         (arc_reorg_loops): New function, calls reorg_loops.
17379         (arc_reorg): Call arc_reorg_loops.  Remove old ZOL handling.
17380         (arc600_corereg_hazard): Remove ZOL checking, case handled by
17381         hwloop_optimize.
17382         (arc_loop_hazard): Remove function, functionality moved into
17383         hwloop_optimize.
17384         (arc_hazard): Remove arc_loop_hazard call.
17385         (arc_adjust_insn_length): Remove ZOL handling, functionality moved
17386         into hwloop_optimize.
17387         (arc_label_align): Remove ZOL handling.
17388         * config/arc/arc.h (LOOP_ALIGN): Changed to 0.
17389         * config/arc/arc.md (doloop_begin): Remove pattern.
17390         (doloop_begin_i): Likewise.
17391         (doloop_end_i): Likewise.
17392         (doloop_fallback): Likewise.
17393         (doloop_fallback_m): Likewise.
17394         (doloop_end): Reimplement expand.
17395         (arc_lp): New pattern for LP instruction.
17396         (loop_end): New pattern.
17397         (loop_fail): Likewise.
17398         (decrement_and_branch_until_zero): Likewise.
17399         * config/arc/arc.opt (mlpc-width): New option.
17400         * doc/invoke.texi (mlpc-width): Document option.
17401
17402 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
17403
17404         * config/arc/arc.c (arc_ifcvt): Remove use of merge_blocks call.
17405         (arc_ccfsm_advance): Fix checking for delay slots.
17406         (arc_reorg): Add rtl dump after each call to arc_ifcvt.
17407
17408 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
17409
17410         * config/arc/arc.md (movqi_insn): Add stores to save constant long
17411         immediates.
17412         (movhi_insn): Update store instruction constraint which are saving
17413         6-bit short immediates.
17414         (movsi_insn): Consider also short scaled load operations.
17415         (zero_extendhisi2_i): Use Usd constraint instead of T.
17416         (extendhisi2_i): Add q constraint.
17417         (arc_clzsi2): Add type and length attributes.
17418         (arc_ctzsi2): Likewise.
17419         * config/arc/constraints.md (Usc): Update constraint, the
17420         assembler can parse two relocations for a single instruction.
17421
17422 2017-09-01  Claudiu Zissulescu  <claziss@synopsys.com>
17423
17424         * config/arc/arc.c (arc_use_anchors_for_symbol_p): New function.
17425         (TARGET_USE_ANCHORS_FOR_SYMBOL_P): Define.
17426
17427 2017-08-31  Olivier Hainque  <hainque@adacore.com>
17428
17429         * config.gcc (powerpc-wrs-vxworks|vxworksae|vxworksmils): Now
17430         match as powerpc-wrs-vxworks*.
17431
17432 2017-08-31  James Greenhalgh  <james.greenhalgh@arm.com>
17433
17434         * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge<mode>): Fix
17435         register constraint for by-element operand.
17436         (aarch64_mls_elt_merge<mode>): Likewise.
17437
17438 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
17439
17440         * config/arc/arc.c (arc_can_follow_jump): Check for short
17441         branches.
17442
17443 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
17444
17445         * config.gcc: Use g.opt for arc.
17446         * config/arc/arc.c (LEGITIMATE_SCALED_ADDRESS_P): Deleted,
17447         functionality moved to ...
17448         (legitimate_scaled_address_p): New function, ...here.
17449         (LEGITIMATE_SMALL_DATA_OFFSET_P): New define.
17450         (LEGITIMATE_SMALL_DATA_ADDRESS_P): Use the above define.
17451         (legitimate_offset_address_p): Delete TARGET_NO_SDATA_SET
17452         condition.
17453         (arc_override_options): Handle G option.
17454         (arc_output_pic_addr_const): Correct function definition.
17455         (arc_legitimate_address_p): Use legitimate_scaled_address_p.
17456         (arc_decl_anon_ns_mem_p): Delete.
17457         (arc_in_small_data_p): Overhaul this function to take into
17458         consideration the value given via G option.
17459         (arc_rewrite_small_data_1): Renamed and corrected old
17460         arc_rewrite_small_data function.
17461         (arc_rewrite_small_data): New function.
17462         (small_data_pattern): Don't use pic_offset_table_rtx.
17463         * config/arc/arc.h (CC1_SPEC): Recognize G option.
17464         * config/arc/simdext.md (movmisalignv2hi): Use
17465         prepare_move_operands function.
17466         (mov*): Likewise.
17467         (movmisalign*): Likewise.
17468         * doc/invoke.texi (ARC options): Document -G option.
17469
17470 2017-08-31  Claudiu Zissulescu  <claziss@synopsys.com>
17471
17472         * config/arc/arc-protos.h (compact_sda_memory_operand): Update
17473         prototype.
17474         * config/arc/arc.c (arc_print_operand): Output scalled address for
17475         sdata whenever is possible.
17476         (arc_in_small_data_p): Allow sdata for 64bit datum when double
17477         load/stores are available.
17478         (compact_sda_memory_operand): Check for the alignment required by
17479         code density instructions.
17480         * config/arc/arc.md (movsi_insn): Use newly introduced Us0
17481         constraint.
17482         * config/arc/constraints.md (Usd): Update constraint.
17483         (Us0): New constraint.
17484         (Usc): Update constraint.
17485
17486 2017-08-31  Richard Biener  <rguenther@suse.de>
17487
17488         PR middle-end/82054
17489         * dwarf2out.c (dwarf2out_early_global_decl): Process each
17490         function only once.
17491
17492 2017-08-31  Tamar Christina  <tamar.christina@arm.com>
17493
17494         * config/aarch64/aarch64-builtins.c (aarch64_init_simd_builtins):
17495         Resize type_signature.
17496
17497 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
17498             Alan Hayward  <alan.hayward@arm.com>
17499             David Sherwood  <david.sherwood@arm.com>
17500
17501         * config/aarch64/aarch64.c (aarch64_base_register_rtx_p): Only allow
17502         subregs whose inner modes can be stored in GPRs.
17503         (aarch64_classify_index): Likewise.
17504
17505 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
17506             Alan Hayward  <alan.hayward@arm.com>
17507             David Sherwood  <david.sherwood@arm.com>
17508
17509         * config/aarch64/iterators.md (V_cmp_result): Rename to...
17510         (V_INT_EQUIV): ...this.
17511         (v_cmp_result): Rename to...
17512         (v_int_equiv): ...this.
17513         * config/aarch64/aarch64.md (xorsign<mode>3): Update accordingly.
17514         * config/aarch64/aarch64-simd.md (xorsign<mode>3): Likewise.
17515         (copysign<mode>3): Likewise.
17516         (aarch64_simd_bsl<mode>_internal): Likewise.
17517         (aarch64_simd_bsl<mode>): Likewise.
17518         (vec_cmp<mode><mode>): Likewise.
17519         (vcond<mode><mode>): Likewise.
17520         (vcond<v_cmp_mixed><mode>): Likewise.
17521         (vcondu<mode><v_cmp_mixed>): Likewise.
17522         (aarch64_cm<optab><mode>): Likewise.
17523         (aarch64_cmtst<mode>): Likewise.
17524         (aarch64_fac<optab><mode>): Likewise.
17525         (vec_perm_const<mode>): Likewise.
17526         (vcond_mask_<mode><v_cmp_result>): Rename to...
17527         (vcond_mask_<mode><v_int_equiv>): ...this.
17528         (vec_cmp<mode><v_cmp_result>): Rename to...
17529         (vec_cmp<mode><v_int_equiv>): ...this.
17530
17531 2017-08-31  Richard Sandiford  <richard.sandiford@linaro.org>
17532             Alan Hayward  <alan.hayward@arm.com>
17533             David Sherwood  <david.sherwood@arm.com>
17534
17535         * config/aarch64/aarch64-modes.def: Remove 32-, 48- and 64-byte
17536         vector modes.
17537         * config/aarch64/iterators.md (VRL2, VRL3, VRL4): Delete.
17538         * config/aarch64/aarch64.md (UNSPEC_LD2_DREG, UNSPEC_LD3_DREG)
17539         (UNSPEC_LD4_DREG): New unspecs.
17540         * config/aarch64/aarch64-simd.md (aarch64_ld2<mode>_dreg_le)
17541         (aarch64_ld2<mode>_dreg_be): Replace with...
17542         (aarch64_ld2<mode>_dreg): ...this pattern and use the new DREG
17543         unspec.
17544         (aarch64_ld3<mode>_dreg_le)
17545         (aarch64_ld3<mode>_dreg_be): Replace with...
17546         (aarch64_ld3<mode>_dreg): ...this pattern and use the new DREG
17547         unspec.
17548         (aarch64_ld4<mode>_dreg_le)
17549         (aarch64_ld4<mode>_dreg_be): Replace with...
17550         (aarch64_ld4<mode>_dreg): ...this pattern and use the new DREG
17551         unspec.
17552
17553 2017-08-30  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
17554
17555         PR tree-optimization/81987
17556         * gimple-ssa-strength-reduction.c (insert_initializers): Don't
17557         insert an initializer in a location not dominated by the stride
17558         definition.
17559
17560 2017-08-30  Eric Botcazou  <ebotcazou@adacore.com>
17561
17562         * tree-eh.c (lower_try_finally_switch): Set the location of the finally
17563         on the entire header of the finally block in the fallthru case.
17564
17565 2017-08-30  Eric Botcazou  <ebotcazou@adacore.com>
17566
17567         * varasm.c (decode_addr_const): Deal with INDIRECT_REF <INTEGER_CST>.
17568
17569 2017-08-30  Pat Haugen  <pthaugen@us.ibm.com>
17570
17571         * config/rs6000/rs6000.c (rs6000_emit_prologue_move_from_cr): Rename from
17572         rs6000_emit_move_from_cr and call renamed function.
17573         (rs6000_emit_prologue): Call renamed functions.
17574         * config/rs6000/rs6000.md (prologue_movesi_from_cr): Rename from
17575         movesi_from_cr, remove volatile CRs.
17576
17577 2017-08-30  Jon Beniston  <jon@beniston.com>
17578             Richard Biener  <rguenther@suse.de>
17579
17580         * tree-vect-patterns.c (vect_pattern_recog_1): Use VECTOR_TYPE_P instead
17581         of VECTOR_MODE_P check.
17582         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Allow single
17583         element vector types.
17584
17585 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17586
17587         * df.h (df_read_modify_subreg_p): Remove in favor of...
17588         * rtl.h (read_modify_subreg_p): ...this new function.  Take a
17589         const_rtx instead of an rtx.
17590         * cprop.c (local_cprop_find_used_regs): Update accordingly.
17591         * df-problems.c (df_word_lr_mark_ref): Likewise.
17592         * ira-lives.c (mark_pseudo_reg_live): Likewise.
17593         (mark_pseudo_reg_dead): Likewise.
17594         (mark_ref_dead): Likewise.
17595         * reginfo.c (init_subregs_of_mode): Likewise.
17596         * sched-deps.c (sched_analyze_1): Likewise.
17597         * df-scan.c (df_def_record_1): Likewise.
17598         (df_uses_record): Likewise.
17599         (df_read_modify_subreg_p): Remove in favor of...
17600         * rtlanal.c (read_modify_subreg_p): ...this new function.  Take a
17601         const_rtx instead of an rtx.
17602
17603 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17604             Alan Hayward  <alan.hayward@arm.com>
17605             David Sherwood  <david.sherwood@arm.com>
17606
17607         * rtl.h (partial_subreg_p): New function.
17608         * caller-save.c (save_call_clobbered_regs): Use it.
17609         * calls.c (expand_call): Likewise.
17610         * combine.c (combinable_i3pat): Likewise.
17611         (simplify_set): Likewise.
17612         (make_extraction): Likewise.
17613         (make_compound_operation_int): Likewise.
17614         (gen_lowpart_or_truncate): Likewise.
17615         (force_to_mode): Likewise.
17616         (make_field_assignment): Likewise.
17617         (reg_truncated_to_mode): Likewise.
17618         (record_truncated_value): Likewise.
17619         (move_deaths): Likewise.
17620         * cse.c (record_jump_cond): Likewise.
17621         (cse_insn): Likewise.
17622         * cselib.c (cselib_lookup_1): Likewise.
17623         * expmed.c (extract_bit_field_using_extv): Likewise.
17624         * function.c (assign_parm_setup_reg): Likewise.
17625         * ifcvt.c (noce_convert_multiple_sets): Likewise.
17626         * ira-build.c (create_insn_allocnos): Likewise.
17627         * lra-coalesce.c (merge_pseudos): Likewise.
17628         * lra-constraints.c (match_reload): Likewise.
17629         (simplify_operand_subreg): Likewise.
17630         (curr_insn_transform): Likewise.
17631         * lra-lives.c (process_bb_lives): Likewise.
17632         * lra.c (new_insn_reg): Likewise.
17633         (lra_substitute_pseudo): Likewise.
17634         * regcprop.c (mode_change_ok): Likewise.
17635         (maybe_mode_change): Likewise.
17636         (copyprop_hardreg_forward_1): Likewise.
17637         * reload.c (push_reload): Likewise.
17638         (find_reloads): Likewise.
17639         (find_reloads_subreg_address): Likewise.
17640         * reload1.c (alter_reg): Likewise.
17641         (eliminate_regs_1): Likewise.
17642         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
17643
17644 2017-08-30  David Edelsohn  <dje.gcc@gmail.com>
17645
17646         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Revert
17647         back to if statements, including unpack.
17648
17649 2017-08-30  Martin Liska  <mliska@suse.cz>
17650
17651         PR inline-asm/82001
17652         * ipa-icf-gimple.c (func_checker::compare_tree_list_operand):
17653         Rename to ...
17654         (func_checker::compare_asm_inputs_outputs): ... this function.
17655         (func_checker::compare_gimple_asm): Use the function to compare
17656         also ASM constrains.
17657         * ipa-icf-gimple.h: Rename the function.
17658
17659 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17660             Alan Hayward  <alan.hayward@arm.com>
17661             David Sherwood  <david.sherwood@arm.com>
17662
17663         * coretypes.h (complex_mode): New type.
17664         * gdbhooks.py (build_pretty_printer): Handle it.
17665         * machmode.h (complex_mode): New class.
17666         (complex_mode::includes_p): New function.
17667         (is_complex_int_mode): Likewise.
17668         (is_complex_float_mode): Likewise.
17669         * genmodes.c (get_mode_class): Handle complex mode classes.
17670         * function.c (expand_function_end): Use is_complex_int_mode.
17671
17672 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17673             Alan Hayward  <alan.hayward@arm.com>
17674             David Sherwood  <david.sherwood@arm.com>
17675
17676         * coretypes.h (scalar_mode_pod): New typedef.
17677         * gdbhooks.py (build_pretty_printer): Handle it.
17678         * machmode.h (gt_ggc_mx, gt_pch_nx): New functions.
17679         * fixed-value.h (fixed_value::mode): Change type to scalar_mode_pod.
17680         * fold-const.c (fold_convert_const_int_from_fixed): Use scalar_mode.
17681         * tree-streamer-in.c (unpack_ts_fixed_cst_value_fields): Use
17682         as_a <scalar_mode>.
17683
17684 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17685             Alan Hayward  <alan.hayward@arm.com>
17686             David Sherwood  <david.sherwood@arm.com>
17687
17688         * machmode.h (mode_for_vector): Take a scalar_mode instead
17689         of a machine_mode.
17690         * stor-layout.c (mode_for_vector): Likewise.
17691         * explow.c (promote_mode): Use as_a <scalar_mode>.
17692         * sdbout.c (sdbout_parms): Use is_a <scalar_mode>.
17693
17694 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17695             Alan Hayward  <alan.hayward@arm.com>
17696             David Sherwood  <david.sherwood@arm.com>
17697
17698         * target.def (preferred_simd_mode): Take a scalar_mode
17699         instead of a machine_mode.
17700         * targhooks.h (default_preferred_simd_mode): Likewise.
17701         * targhooks.c (default_preferred_simd_mode): Likewise.
17702         * config/arc/arc.c (arc_preferred_simd_mode): Likewise.
17703         * config/arm/arm.c (arm_preferred_simd_mode): Likewise.
17704         * config/c6x/c6x.c (c6x_preferred_simd_mode): Likewise.
17705         * config/epiphany/epiphany.c (epiphany_preferred_simd_mode): Likewise.
17706         * config/i386/i386.c (ix86_preferred_simd_mode): Likewise.
17707         * config/mips/mips.c (mips_preferred_simd_mode): Likewise.
17708         * config/nvptx/nvptx.c (nvptx_preferred_simd_mode): Likewise.
17709         * config/powerpcspe/powerpcspe.c (rs6000_preferred_simd_mode):
17710         Likewise.
17711         * config/rs6000/rs6000.c (rs6000_preferred_simd_mode): Likewise.
17712         * config/s390/s390.c (s390_preferred_simd_mode): Likewise.
17713         * config/sparc/sparc.c (sparc_preferred_simd_mode): Likewise.
17714         * config/aarch64/aarch64.c (aarch64_preferred_simd_mode): Likewise.
17715         (aarch64_simd_scalar_immediate_valid_for_move): Update accordingly.
17716         * doc/tm.texi: Regenerate.
17717         * optabs-query.c (can_vec_mask_load_store_p): Return false for
17718         non-scalar modes.
17719
17720 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17721             Alan Hayward  <alan.hayward@arm.com>
17722             David Sherwood  <david.sherwood@arm.com>
17723
17724         * target.def (scalar_mode_supported_p): Take a scalar_mode
17725         instead of a machine_mode.
17726         * targhooks.h (default_scalar_mode_supported_p): Likewise.
17727         * targhooks.c (default_scalar_mode_supported_p): Likewise.
17728         * config/aarch64/aarch64.c (aarch64_scalar_mode_supported_p): Likewise.
17729         * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
17730         * config/arm/arm.c (arm_scalar_mode_supported_p): Likewise.
17731         * config/avr/avr.c (avr_scalar_mode_supported_p): Likewise.
17732         * config/c6x/c6x.c (c6x_scalar_mode_supported_p): Likewise.
17733         * config/i386/i386.c (ix86_scalar_mode_supported_p): Likewise.
17734         * config/ia64/ia64.c (ia64_scalar_mode_supported_p): Likewise.
17735         * config/mips/mips.c (mips_scalar_mode_supported_p): Likewise.
17736         * config/msp430/msp430.c (msp430_scalar_mode_supported_p): Likewise.
17737         * config/pa/pa.c (pa_scalar_mode_supported_p): Likewise.
17738         * config/pdp11/pdp11.c (pdp11_scalar_mode_supported_p): Likewise.
17739         * config/powerpcspe/powerpcspe.c (rs6000_scalar_mode_supported_p):
17740         Likewise.
17741         * config/rs6000/rs6000.c (rs6000_scalar_mode_supported_p): Likewise.
17742         * config/s390/s390.c (s390_scalar_mode_supported_p): Likewise.
17743         * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
17744         * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
17745         * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p):
17746         Likewise.
17747         * doc/tm.texi: Regenerate.
17748
17749 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17750             Alan Hayward  <alan.hayward@arm.com>
17751             David Sherwood  <david.sherwood@arm.com>
17752
17753         * coretypes.h (opt_scalar_mode): New typedef.
17754         * gdbhooks.py (build_pretty_printers): Handle it.
17755         * machmode.h (mode_iterator::get_2xwider): Add overload for
17756         opt_mode<T>.
17757         * emit-rtl.c (init_emit_once): Use opt_scalar_mode when iterating
17758         over scalar modes.
17759         * expr.c (convert_mode_scalar): Likewise.
17760         * omp-low.c (omp_clause_aligned_alignment): Likewise.
17761         * optabs.c (expand_float): Likewise.
17762         (expand_fix): Likewise.
17763         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
17764
17765 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17766             Alan Hayward  <alan.hayward@arm.com>
17767             David Sherwood  <david.sherwood@arm.com>
17768
17769         * optabs.c (expand_float): Explicitly check for scalars before
17770         using a branching expansion.
17771         (expand_fix): Likewise.
17772
17773 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17774             Alan Hayward  <alan.hayward@arm.com>
17775             David Sherwood  <david.sherwood@arm.com>
17776
17777         * expr.c (convert_mode): Split scalar handling out into...
17778         (convert_mode_scalar): ...this new function.  Treat the modes
17779         as scalar_modes.
17780
17781 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17782             Alan Hayward  <alan.hayward@arm.com>
17783             David Sherwood  <david.sherwood@arm.com>
17784
17785         * omp-expand.c (expand_omp_atomic): Use is_int_mode, is_float_mode
17786         and scalar_mode.
17787         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Likewise.
17788
17789 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17790             Alan Hayward  <alan.hayward@arm.com>
17791             David Sherwood  <david.sherwood@arm.com>
17792
17793         * fixed-value.h (fixed_from_double_int): Take a scalar_mode
17794         rather than a machine_mode.
17795         (fixed_from_string): Likewise.
17796         (fixed_convert): Likewise.
17797         (fixed_convert_from_int): Likewise.
17798         (fixed_convert_from_real): Likewise.
17799         (real_convert_from_fixed): Likewise.
17800         * fixed-value.c (fixed_from_double_int): Likewise.
17801         (fixed_from_string): Likewise.
17802         (fixed_convert): Likewise.
17803         (fixed_convert_from_int): Likewise.
17804         (fixed_convert_from_real): Likewise.
17805         (real_convert_from_fixed): Likewise.
17806         * config/avr/avr.c (avr_out_round): Use as_a <scalar_mode>.
17807
17808 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17809             Alan Hayward  <alan.hayward@arm.com>
17810             David Sherwood  <david.sherwood@arm.com>
17811
17812         * emit-rtl.c (immed_double_const): Use is_a <scalar_mode> instead
17813         of separate mode class checks.  Do not allow vector modes here.
17814         (immed_wide_int_const): Use as_a <scalar_mode>.
17815         * explow.c (trunc_int_for_mode): Likewise.
17816         * rtl.h (wi::int_traits<rtx_mode_t>::get_precision): Likewise.
17817         (wi::shwi): Likewise.
17818         (wi::min_value): Likewise.
17819         (wi::max_value): Likewise.
17820         * dwarf2out.c (loc_descriptor): Likewise.
17821         * simplify-rtx.c (simplify_immed_subreg): Fix rtx_mode_t argument
17822         for CONST_WIDE_INT.
17823
17824 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17825             Alan Hayward  <alan.hayward@arm.com>
17826             David Sherwood  <david.sherwood@arm.com>
17827
17828         * tree.h (SCALAR_TYPE_MODE): New macro.
17829         * expr.c (expand_expr_addr_expr_1): Use it.
17830         (expand_expr_real_2): Likewise.
17831         * fold-const.c (fold_convert_const_fixed_from_fixed): Likeise.
17832         (fold_convert_const_fixed_from_int): Likewise.
17833         (fold_convert_const_fixed_from_real): Likewise.
17834         (native_encode_fixed): Likewise
17835         (native_encode_complex): Likewise
17836         (native_encode_vector): Likewise.
17837         (native_interpret_fixed): Likewise.
17838         (native_interpret_real): Likewise.
17839         (native_interpret_complex): Likewise.
17840         (native_interpret_vector): Likewise.
17841         * omp-simd-clone.c (simd_clone_adjust_return_type): Likewise.
17842         (simd_clone_adjust_argument_types): Likewise.
17843         (simd_clone_init_simd_arrays): Likewise.
17844         (simd_clone_adjust): Likewise.
17845         * stor-layout.c (layout_type): Likewise.
17846         * tree.c (build_minus_one_cst): Likewise.
17847         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
17848         * tree-inline.c (estimate_move_cost): Likewise.
17849         * tree-ssa-math-opts.c (convert_plusminus_to_widen): Likewise.
17850         * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
17851         (vectorizable_reduction): Likewise.
17852         * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Likewise.
17853         (vect_recog_mixed_size_cond_pattern): Likewise.
17854         (check_bool_pattern): Likewise.
17855         (adjust_bool_pattern): Likewise.
17856         (search_type_for_mask_1): Likewise.
17857         * tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
17858         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
17859         (vectorizable_load): Likewise.
17860         (vectorizable_store): Likewise.
17861         * ubsan.c (ubsan_encode_value): Likewise.
17862         * varasm.c (output_constant): Likewise.
17863
17864 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17865             Alan Hayward  <alan.hayward@arm.com>
17866             David Sherwood  <david.sherwood@arm.com>
17867
17868         * coretypes.h (scalar_mode): New class.
17869         * machmode.h (scalar_mode): Likewise.
17870         (scalar_mode::includes_p): New function.
17871         (mode_to_inner): Return a scalar_mode rather than a machine_mode.
17872         * gdbhooks.py (build_pretty_printers): Handle scalar_mode.
17873         * genmodes.c (get_mode_class): Handle remaining scalar modes.
17874         * cfgexpand.c (expand_debug_expr): Use scalar_mode.
17875         * expmed.c (store_bit_field_1): Likewise.
17876         (extract_bit_field_1): Likewise.
17877         * expr.c (write_complex_part): Likewise.
17878         (read_complex_part): Likewise.
17879         (emit_move_complex_push): Likewise.
17880         (expand_expr_real_2): Likewise.
17881         * function.c (assign_parm_setup_reg): Likewise.
17882         (assign_parms_unsplit_complex): Likewise.
17883         * optabs.c (expand_binop): Likewise.
17884         * rtlanal.c (subreg_get_info): Likewise.
17885         * simplify-rtx.c (simplify_immed_subreg): Likewise.
17886         * varasm.c (output_constant_pool_2): Likewise.
17887
17888 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17889             Alan Hayward  <alan.hayward@arm.com>
17890             David Sherwood  <david.sherwood@arm.com>
17891
17892         * expmed.c (extract_high_half): Use scalar_int_mode and remove
17893         assertion.
17894         (expmed_mult_highpart_optab): Likewise.
17895         (expmed_mult_highpart): Likewise.
17896
17897 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
17898             Alan Hayward  <alan.hayward@arm.com>
17899             David Sherwood  <david.sherwood@arm.com>
17900
17901         * builtins.h (builtin_strncpy_read_str): Take a scalar_int_mode
17902         instead of a machine_mode.
17903         (builtin_memset_read_str): Likewise.
17904         * builtins.c (c_readstr): Likewise.
17905         (builtin_memcpy_read_str): Likewise.
17906         (builtin_strncpy_read_str): Likewise.
17907         (builtin_memset_read_str): Likewise.
17908         (builtin_memset_gen_str): Likewise.
17909         (expand_builtin_signbit): Use scalar_int_mode for local variables.
17910         * cfgexpand.c (convert_debug_memory_address): Take a scalar_int_mode
17911         instead of a machine_mode.
17912         * combine.c (simplify_if_then_else): Use scalar_int_mode for local
17913         variables.
17914         (make_extraction): Likewise.
17915         (try_widen_shift_mode): Take and return scalar_int_modes instead
17916         of machine_modes.
17917         * config/aarch64/aarch64.c (aarch64_libgcc_cmp_return_mode): Return
17918         a scalar_int_mode instead of a machine_mode.
17919         * config/avr/avr.c (avr_addr_space_address_mode): Likewise.
17920         (avr_addr_space_pointer_mode): Likewise.
17921         * config/cr16/cr16.c (cr16_unwind_word_mode): Likewise.
17922         * config/msp430/msp430.c (msp430_addr_space_pointer_mode): Likewise.
17923         (msp430_unwind_word_mode): Likewise.
17924         * config/spu/spu.c (spu_unwind_word_mode): Likewise.
17925         (spu_addr_space_pointer_mode): Likewise.
17926         (spu_addr_space_address_mode): Likewise.
17927         (spu_libgcc_cmp_return_mode): Likewise.
17928         (spu_libgcc_shift_count_mode): Likewise.
17929         * config/rl78/rl78.c (rl78_addr_space_address_mode): Likewise.
17930         (rl78_addr_space_pointer_mode): Likewise.
17931         (fl78_unwind_word_mode): Likewise.
17932         (rl78_valid_pointer_mode): Take a scalar_int_mode instead of a
17933         machine_mode.
17934         * config/alpha/alpha.c (vms_valid_pointer_mode): Likewise.
17935         * config/ia64/ia64.c (ia64_vms_valid_pointer_mode): Likewise.
17936         * config/mips/mips.c (mips_mode_rep_extended): Likewise.
17937         (mips_valid_pointer_mode): Likewise.
17938         * config/tilegx/tilegx.c (tilegx_mode_rep_extended): Likewise.
17939         * config/ft32/ft32.c (ft32_valid_pointer_mode): Likewise.
17940         (ft32_addr_space_pointer_mode): Return a scalar_int_mode instead
17941         of a machine_mode.
17942         (ft32_addr_space_address_mode): Likewise.
17943         * config/m32c/m32c.c (m32c_valid_pointer_mode): Take a
17944         scalar_int_mode instead of a machine_mode.
17945         (m32c_addr_space_pointer_mode): Return a scalar_int_mode instead
17946         of a machine_mode.
17947         (m32c_addr_space_address_mode): Likewise.
17948         * config/powerpcspe/powerpcspe.c (rs6000_abi_word_mode): Likewise.
17949         (rs6000_eh_return_filter_mode): Likewise.
17950         * config/rs6000/rs6000.c (rs6000_abi_word_mode): Likewise.
17951         (rs6000_eh_return_filter_mode): Likewise.
17952         * config/s390/s390.c (s390_libgcc_cmp_return_mode): Likewise.
17953         (s390_libgcc_shift_count_mode): Likewise.
17954         (s390_unwind_word_mode): Likewise.
17955         (s390_valid_pointer_mode): Take a scalar_int_mode rather than a
17956         machine_mode.
17957         * target.def (mode_rep_extended): Likewise.
17958         (valid_pointer_mode): Likewise.
17959         (addr_space.valid_pointer_mode): Likewise.
17960         (eh_return_filter_mode): Return a scalar_int_mode rather than
17961         a machine_mode.
17962         (libgcc_cmp_return_mode): Likewise.
17963         (libgcc_shift_count_mode): Likewise.
17964         (unwind_word_mode): Likewise.
17965         (addr_space.pointer_mode): Likewise.
17966         (addr_space.address_mode): Likewise.
17967         * doc/tm.texi: Regenerate.
17968         * dojump.c (prefer_and_bit_test): Take a scalar_int_mode rather than
17969         a machine_mode.
17970         (do_jump): Use scalar_int_mode for local variables.
17971         * dwarf2cfi.c (init_return_column_size): Take a scalar_int_mode
17972         rather than a machine_mode.
17973         * dwarf2out.c (convert_descriptor_to_mode): Likewise.
17974         (scompare_loc_descriptor_wide): Likewise.
17975         (scompare_loc_descriptor_narrow): Likewise.
17976         * emit-rtl.c (adjust_address_1): Use scalar_int_mode for local
17977         variables.
17978         * except.c (sjlj_emit_dispatch_table): Likewise.
17979         (expand_builtin_eh_copy_values): Likewise.
17980         * explow.c (convert_memory_address_addr_space_1): Likewise.
17981         Take a scalar_int_mode rather than a machine_mode.
17982         (convert_memory_address_addr_space): Take a scalar_int_mode rather
17983         than a machine_mode.
17984         (memory_address_addr_space): Use scalar_int_mode for local variables.
17985         * expmed.h (expand_mult_highpart_adjust): Take a scalar_int_mode
17986         rather than a machine_mode.
17987         * expmed.c (mask_rtx): Likewise.
17988         (init_expmed_one_conv): Likewise.
17989         (expand_mult_highpart_adjust): Likewise.
17990         (extract_high_half): Likewise.
17991         (expmed_mult_highpart_optab): Likewise.
17992         (expmed_mult_highpart): Likewise.
17993         (expand_smod_pow2): Likewise.
17994         (expand_sdiv_pow2): Likewise.
17995         (emit_store_flag_int): Likewise.
17996         (adjust_bit_field_mem_for_reg): Use scalar_int_mode for local
17997         variables.
17998         (extract_low_bits): Likewise.
17999         * expr.h (by_pieces_constfn): Take a scalar_int_mode rather than
18000         a machine_mode.
18001         * expr.c (pieces_addr::adjust):  Likewise.
18002         (can_store_by_pieces): Likewise.
18003         (store_by_pieces): Likewise.
18004         (clear_by_pieces_1): Likewise.
18005         (expand_expr_addr_expr_1): Likewise.
18006         (expand_expr_addr_expr): Use scalar_int_mode for local variables.
18007         (expand_expr_real_1): Likewise.
18008         (try_casesi): Likewise.
18009         * final.c (shorten_branches): Likewise.
18010         * fold-const.c (fold_convert_const_int_from_fixed): Change the
18011         type of "mode" to machine_mode.
18012         * internal-fn.c (expand_arith_overflow_result_store): Take a
18013         scalar_int_mode rather than a machine_mode.
18014         (expand_mul_overflow): Use scalar_int_mode for local variables.
18015         * loop-doloop.c (doloop_modify): Likewise.
18016         (doloop_optimize): Likewise.
18017         * optabs.c (expand_subword_shift): Take a scalar_int_mode rather
18018         than a machine_mode.
18019         (expand_doubleword_shift_condmove): Likewise.
18020         (expand_doubleword_shift): Likewise.
18021         (expand_doubleword_clz): Likewise.
18022         (expand_doubleword_popcount): Likewise.
18023         (expand_doubleword_parity): Likewise.
18024         (expand_absneg_bit): Use scalar_int_mode for local variables.
18025         (prepare_float_lib_cmp): Likewise.
18026         * rtl.h (convert_memory_address_addr_space_1): Take a scalar_int_mode
18027         rather than a machine_mode.
18028         (convert_memory_address_addr_space): Likewise.
18029         (get_mode_bounds): Likewise.
18030         (get_address_mode): Return a scalar_int_mode rather than a
18031         machine_mode.
18032         * rtlanal.c (get_address_mode): Likewise.
18033         * stor-layout.c (get_mode_bounds): Take a scalar_int_mode rather
18034         than a machine_mode.
18035         * targhooks.c (default_mode_rep_extended): Likewise.
18036         (default_valid_pointer_mode): Likewise.
18037         (default_addr_space_valid_pointer_mode): Likewise.
18038         (default_eh_return_filter_mode): Return a scalar_int_mode rather
18039         than a machine_mode.
18040         (default_libgcc_cmp_return_mode): Likewise.
18041         (default_libgcc_shift_count_mode): Likewise.
18042         (default_unwind_word_mode): Likewise.
18043         (default_addr_space_pointer_mode): Likewise.
18044         (default_addr_space_address_mode): Likewise.
18045         * targhooks.h (default_eh_return_filter_mode): Likewise.
18046         (default_libgcc_cmp_return_mode): Likewise.
18047         (default_libgcc_shift_count_mode): Likewise.
18048         (default_unwind_word_mode): Likewise.
18049         (default_addr_space_pointer_mode): Likewise.
18050         (default_addr_space_address_mode): Likewise.
18051         (default_mode_rep_extended): Take a scalar_int_mode rather than
18052         a machine_mode.
18053         (default_valid_pointer_mode): Likewise.
18054         (default_addr_space_valid_pointer_mode): Likewise.
18055         * tree-ssa-address.c (addr_for_mem_ref): Use scalar_int_mode for
18056         local variables.
18057         * tree-ssa-loop-ivopts.c (get_shiftadd_cost): Take a scalar_int_mode
18058         rather than a machine_mode.
18059         * tree-switch-conversion.c (array_value_type): Use scalar_int_mode
18060         for local variables.
18061         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
18062         * var-tracking.c (use_narrower_mode): Take a scalar_int_mode rather
18063         than a machine_mode.
18064
18065 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18066             Alan Hayward  <alan.hayward@arm.com>
18067             David Sherwood  <david.sherwood@arm.com>
18068
18069         * dojump.c (do_jump_by_parts_greater_rtx): Change the type of
18070         the mode argument to scalar_int_mode.
18071         (do_jump_by_parts_zero_rtx): Likewise.
18072         (do_jump_by_parts_equality_rtx): Likewise.
18073         (do_jump_by_parts_greater): Take a mode argument.
18074         (do_jump_by_parts_equality): Likewise.
18075         (do_jump_1): Update calls accordingly.
18076
18077 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18078             Alan Hayward  <alan.hayward@arm.com>
18079             David Sherwood  <david.sherwood@arm.com>
18080
18081         * is-a.h (safe_dyn_cast): New function.
18082         * rtl.h (rtx_jump_table_data::get_data_mode): New function.
18083         (jump_table_for_label): Likewise.
18084         * final.c (final_addr_vec_align): Take an rtx_jump_table_data *
18085         instead of an rtx_insn *.
18086         (shorten_branches): Use dyn_cast instead of LABEL_P and
18087         JUMP_TABLE_DATA_P.  Use jump_table_for_label and
18088         rtx_jump_table_data::get_data_mode.
18089         (final_scan_insn): Likewise.
18090
18091 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18092             Alan Hayward  <alan.hayward@arm.com>
18093             David Sherwood  <david.sherwood@arm.com>
18094
18095         * combine.c (try_combine): Use is_a <scalar_int_mode> when
18096         trying to combine a full-register integer set with a subreg
18097         integer set.
18098
18099 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18100             Alan Hayward  <alan.hayward@arm.com>
18101             David Sherwood  <david.sherwood@arm.com>
18102
18103         * expr.c (expand_expr_addr_expr): Add a new_tmode local variable
18104         that is always either address_mode or pointer_mode.
18105
18106 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18107             Alan Hayward  <alan.hayward@arm.com>
18108             David Sherwood  <david.sherwood@arm.com>
18109
18110         * expr.c (expand_expr_real_2): Use word_mode instead of innermode
18111         when the two are known to be equal.
18112
18113 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18114             Alan Hayward  <alan.hayward@arm.com>
18115             David Sherwood  <david.sherwood@arm.com>
18116
18117         * simplify-rtx.c (simplify_const_unary_operation): Use
18118         is_a <scalar_int_mode> instead of checking for a nonzero
18119         precision.  Forcibly convert op_mode to a scalar_int_mode
18120         in that case.  More clearly differentiate the operand and
18121         result modes and use the former when deciding what the value
18122         of a count-bits operation should be.  Use is_int_mode instead
18123         of checking for a MODE_INT.  Remove redundant check for whether
18124         this mode has a zero precision.
18125
18126 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18127             Alan Hayward  <alan.hayward@arm.com>
18128             David Sherwood  <david.sherwood@arm.com>
18129
18130         * optabs.c (widen_leading): Change the type of the mode argument
18131         to scalar_int_mode.  Use opt_scalar_int_mode for the mode iterator.
18132         (widen_bswap): Likewise.
18133         (expand_parity): Likewise.
18134         (expand_ctz): Change the type of the mode argument to scalar_int_mode.
18135         (expand_ffs): Likewise.
18136         (epand_unop): Check for scalar integer modes before calling the
18137         above routines.
18138
18139 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18140             Alan Hayward  <alan.hayward@arm.com>
18141             David Sherwood  <david.sherwood@arm.com>
18142
18143         * expr.c (const_scalar_mask_from_tree): Add a mode argument.
18144         Expand commentary.
18145         (expand_expr_real_1): Update call accordingly.
18146
18147 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18148             Alan Hayward  <alan.hayward@arm.com>
18149             David Sherwood  <david.sherwood@arm.com>
18150
18151         * expmed.c (store_bit_field_using_insv): Add op0_mode and
18152         value_mode arguments.  Use scalar_int_mode internally.
18153         (store_bit_field_1): Rename the new integer mode from imode
18154         to op0_mode and use it instead of GET_MODE (op0).  Update calls
18155         to store_split_bit_field, store_bit_field_using_insv and
18156         store_fixed_bit_field.
18157         (store_fixed_bit_field): Add op0_mode and value_mode arguments.
18158         Use scalar_int_mode internally.  Use a bit count rather than a mode
18159         when calculating the largest bit size for get_best_mode.
18160         Update calls to store_split_bit_field and store_fixed_bit_field_1.
18161         (store_fixed_bit_field_1): Add mode and value_mode arguments.
18162         Remove assertion that OP0 has a scalar integer mode.
18163         (store_split_bit_field): Add op0_mode and value_mode arguments.
18164         Update calls to extract_fixed_bit_field.
18165         (extract_bit_field_using_extv): Add an op0_mode argument.
18166         Use scalar_int_mode internally.
18167         (extract_bit_field_1): Rename the new integer mode from imode to
18168         op0_mode and use it instead of GET_MODE (op0).  Update calls to
18169         extract_split_bit_field, extract_bit_field_using_extv and
18170         extract_fixed_bit_field.
18171         (extract_fixed_bit_field): Add an op0_mode argument.  Update calls
18172         to extract_split_bit_field and extract_fixed_bit_field_1.
18173         (extract_fixed_bit_field_1): Add a mode argument.  Remove assertion
18174         that OP0 has a scalar integer mode.  Use as_a <scalar_int_mode>
18175         on the target mode.
18176         (extract_split_bit_field): Add an op0_mode argument.  Update call
18177         to extract_fixed_bit_field.
18178
18179 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18180             Alan Hayward  <alan.hayward@arm.com>
18181             David Sherwood  <david.sherwood@arm.com>
18182
18183         * cse.c (cse_insn): Use opt_scalar_int_mode for the mode iterator.
18184         * explow.c (hard_function_value): Likewise.
18185         * expmed.c (extract_fixed_bit_field_1): Likewise.  Move the
18186         convert_to_mode call outside the loop.
18187         * expr.c (alignment_for_piecewise_move): Use opt_scalar_int_mode
18188         for the mode iterator.  Require the mode specified by max_pieces
18189         to exist.
18190         (emit_block_move_via_movmem): Use opt_scalar_int_mode for the
18191         mode iterator.
18192         (copy_blkmode_to_reg): Likewise.
18193         (set_storage_via_setmem): Likewise.
18194         * optabs.c (prepare_cmp_insn): Likewise.
18195         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
18196         * stor-layout.c (finish_bitfield_representative): Likewise.
18197
18198 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18199             Alan Hayward  <alan.hayward@arm.com>
18200             David Sherwood  <david.sherwood@arm.com>
18201
18202         * rtl.h (subreg_unpromoted_mode, subreg_promoted_mode): New functions.
18203         * expr.c (convert_move): Use them.
18204         (convert_modes): Likewise.
18205         (store_expr_with_bounds): Likewise.
18206
18207 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18208             Alan Hayward  <alan.hayward@arm.com>
18209             David Sherwood  <david.sherwood@arm.com>
18210
18211         * rtl.h (rtl_hooks::reg_nonzero_bits): Add a scalar_int_mode
18212         parameter for the mode of "x".  Remove the "known_x", "known_mode"
18213         and "known_ret" arguments.  Change the type of the mode argument
18214         to scalar_int_mode.
18215         (rtl_hooks:reg_num_sign_bit_copies): Likewise.
18216         * combine.c (reg_nonzero_bits_for_combine): Update accordingly.
18217         (reg_num_sign_bit_copies_for_combine): Likewise.
18218         * rtlanal.c (nonzero_bits1): Likewise.
18219         (num_sign_bit_copies1): Likewise.
18220         * rtlhooks-def.h (reg_nonzero_bits_general): Likewise.
18221         (reg_num_sign_bit_copies_general): Likewise.
18222         * rtlhooks.c (reg_num_sign_bit_copies_general): Likewise.
18223         (reg_nonzero_bits_general): Likewise.
18224
18225 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18226             Alan Hayward  <alan.hayward@arm.com>
18227             David Sherwood  <david.sherwood@arm.com>
18228
18229         * rtlanal.c (num_sign_bit_copies): Handle VOIDmode here rather
18230         than in subroutines.  Return 1 for non-integer modes.
18231         (cached_num_sign_bit_copies): Change the type of the mode parameter
18232         to scalar_int_mode.
18233         (num_sign_bit_copies1): Likewise.  Remove early exit for other mode
18234         classes.  Handle CONST_INT_P first and then check whether X also
18235         has a scalar integer mode.  Check the same thing for inner registers
18236         of a SUBREG and for values that are being extended or truncated.
18237
18238 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18239             Alan Hayward  <alan.hayward@arm.com>
18240             David Sherwood  <david.sherwood@arm.com>
18241
18242         * rtlanal.c (nonzero_bits): Handle VOIDmode here rather than
18243         in subroutines.  Return the mode mask for non-integer modes.
18244         (cached_nonzero_bits): Change the type of the mode parameter
18245         to scalar_int_mode.
18246         (nonzero_bits1): Likewise.  Remove early exit for other mode
18247         classes.  Handle CONST_INT_P first and then check whether X
18248         also has a scalar integer mode.
18249
18250 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18251             Alan Hayward  <alan.hayward@arm.com>
18252             David Sherwood  <david.sherwood@arm.com>
18253
18254         * expr.c (widest_int_mode_for_size): Make the comment match the code.
18255         Return a scalar_int_mode and assert that the size is greater than
18256         one byte.
18257         (by_pieces_ninsns): Update accordingly and remove VOIDmode handling.
18258         (op_by_pieces_d::op_by_pieces_d): Likewise.
18259         (op_by_pieces_d::run): Likewise.
18260         (can_store_by_pieces): Likewise.
18261
18262 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18263             Alan Hayward  <alan.hayward@arm.com>
18264             David Sherwood  <david.sherwood@arm.com>
18265
18266         * combine.c (extract_left_shift): Add a mode argument and update
18267         recursive calls.
18268         (make_compound_operation_int): Change the type of the mode parameter
18269         to scalar_int_mode and update the call to extract_left_shift.
18270
18271 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18272             Alan Hayward  <alan.hayward@arm.com>
18273             David Sherwood  <david.sherwood@arm.com>
18274
18275         * combine.c (simplify_and_const_int): Change the type of the mode
18276         parameter to scalar_int_mode.
18277         (simplify_and_const_int_1): Likewise.  Update recursive call.
18278
18279 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18280             Alan Hayward  <alan.hayward@arm.com>
18281             David Sherwood  <david.sherwood@arm.com>
18282
18283         * combine.c (simplify_compare_const): Check that the mode is a
18284         scalar_int_mode (rather than VOIDmode) before testing its
18285         precision.
18286         (simplify_comparison): Move COMPARISON_P handling out of the
18287         loop and restrict the latter part of the loop to scalar_int_modes.
18288         Check is_a <scalar_int_mode> before calling HWI_COMPUTABLE_MODE_P
18289         and when considering SUBREG_REGs.  Use is_int_mode instead of
18290         checking GET_MODE_CLASS against MODE_INT.
18291
18292 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18293             Alan Hayward  <alan.hayward@arm.com>
18294             David Sherwood  <david.sherwood@arm.com>
18295
18296         * combine.c (try_widen_shift_mode): Move check for equal modes to...
18297         (simplify_shift_const_1): ...here.  Use scalar_int_mode for
18298         shift_unit_mode and for modes involved in scalar shifts.
18299
18300 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18301             Alan Hayward  <alan.hayward@arm.com>
18302             David Sherwood  <david.sherwood@arm.com>
18303
18304         * combine.c (force_int_to_mode): New function, split out from...
18305         (force_to_mode): ...here.  Keep xmode up-to-date and use it
18306         instead of GET_MODE (x).
18307
18308 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18309             Alan Hayward  <alan.hayward@arm.com>
18310             David Sherwood  <david.sherwood@arm.com>
18311
18312         * optabs-query.h (extraction_insn::struct_mode): Change type to
18313         opt_scalar_int_mode and update comment.
18314         (extraction_insn::field_mode): Change type to scalar_int_mode.
18315         (extraction_insn::pos_mode): Likewise.
18316         * combine.c (make_extraction): Update accordingly.
18317         * optabs-query.c (get_traditional_extraction_insn): Likewise.
18318         (get_optab_extraction_insn): Likewise.
18319         * recog.c (simplify_while_replacing): Likewise.
18320         * expmed.c (narrow_bit_field_mem): Change the type of the mode
18321         parameter to opt_scalar_int_mode.
18322
18323 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18324             Alan Hayward  <alan.hayward@arm.com>
18325             David Sherwood  <david.sherwood@arm.com>
18326
18327         * machmode.h (bit_field_mode_iterator::next_mode): Take a pointer
18328         to a scalar_int_mode instead of a machine_mode.
18329         (bit_field_mode_iterator::m_mode): Change type to opt_scalar_int_mode.
18330         (get_best_mode): Return a boolean and use a pointer argument to store
18331         the selected mode.  Replace the limit mode parameter with a bit limit.
18332         * expmed.c (adjust_bit_field_mem_for_reg): Use scalar_int_mode
18333         for the values returned by bit_field_mode_iterator::next_mode.
18334         (store_bit_field): Update call to get_best_mode.
18335         (store_fixed_bit_field): Likewise.
18336         (extract_fixed_bit_field): Likewise.
18337         * expr.c (optimize_bitfield_assignment_op): Likewise.
18338         * fold-const.c (optimize_bit_field_compare): Likewise.
18339         (fold_truth_andor_1): Likewise.
18340         * stor-layout.c (bit_field_mode_iterator::next_mode): As above.
18341         Update for new type of m_mode.
18342         (get_best_mode): As above.
18343
18344 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18345             Alan Hayward  <alan.hayward@arm.com>
18346             David Sherwood  <david.sherwood@arm.com>
18347
18348         * expmed.c (strict_volatile_bitfield_p): Change the type of fieldmode
18349         to scalar_int_mode.  Remove check for SCALAR_INT_MODE_P.
18350         (store_bit_field): Check is_a <scalar_int_mode> before calling
18351         strict_volatile_bitfield_p.
18352         (extract_bit_field): Likewise.
18353
18354 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18355             Alan Hayward  <alan.hayward@arm.com>
18356             David Sherwood  <david.sherwood@arm.com>
18357
18358         * target.def (cstore_mode): Return a scalar_int_mode.
18359         * doc/tm.texi: Regenerate.
18360         * config/sparc/sparc.c (sparc_cstore_mode): Return a scalar_int_mode.
18361         * targhooks.h (default_cstore_mode): Likewise.
18362         * targhooks.c (default_cstore_mode): Likewise, using a forced
18363         conversion.
18364         * expmed.c (emit_cstore): Expect the target of the cstore to be
18365         a scalar_int_mode.
18366
18367 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18368             Alan Hayward  <alan.hayward@arm.com>
18369             David Sherwood  <david.sherwood@arm.com>
18370
18371         * cfgloop.h (rtx_iv): Change type of extend_mode and mode to
18372         scalar_int_mode.
18373         (niter_desc): Likewise mode.
18374         (iv_analyze): Add a mode parameter.
18375         (biv_p): Likewise.
18376         (iv_analyze_expr): Pass the mode paraeter before the rtx it describes
18377         and change its type to scalar_int_mode.
18378         * loop-iv.c: Update commentary at head of file.
18379         (iv_constant): Pass the mode paraeter before the rtx it describes
18380         and change its type to scalar_int_mode.  Remove VOIDmode handling.
18381         (iv_subreg): Change the type of the mode parameter to scalar_int_mode.
18382         (iv_extend): Likewise.
18383         (shorten_into_mode): Likewise.
18384         (iv_add): Use scalar_int_mode.
18385         (iv_mult): Likewise.
18386         (iv_shift): Likewise.
18387         (canonicalize_iv_subregs): Likewise.
18388         (get_biv_step_1): Pass the outer_mode parameter before the rtx
18389         it describes and change its mode to scalar_int_mode.   Also change
18390         the type of the returned inner_mode to scalar_int_mode.
18391         (get_biv_step): Likewise, turning outer_mode from a pointer
18392         into a direct parameter.  Update call to get_biv_step_1.
18393         (iv_analyze_biv): Add an outer_mode parameter.  Update calls to
18394         iv_constant and get_biv_step.
18395         (iv_analyze_expr): Pass the mode parameter before the rtx it describes
18396         and change its type to scalar_int_mode.  Don't initialise iv->mode
18397         to VOIDmode and remove later checks for its still being VOIDmode.
18398         Update calls to iv_analyze_op and iv_analyze_expr.  Check
18399         is_a <scalar_int_mode> when changing the mode under consideration.
18400         (iv_analyze_def): Ignore registers that don't have a scalar_int_mode.
18401         Update call to iv_analyze_expr.
18402         (iv_analyze_op): Add a mode parameter.  Reject subregs whose
18403         inner register is not also a scalar_int_mode.  Update call to
18404         iv_analyze_biv.
18405         (iv_analyze): Add a mode parameter.  Update call to iv_analyze_op.
18406         (biv_p): Add a mode parameter.  Update call to iv_analyze_biv.
18407         (iv_number_of_iterations): Use is_a <scalar_int_mode> instead of
18408         separate mode class checks.  Update calls to iv_analyze.  Remove
18409         fix-up of VOIDmodes after iv_analyze_biv.
18410         * loop-unroll.c (analyze_iv_to_split_insn): Reject registers that
18411         don't have a scalar_int_mode.  Update call to biv_p.
18412
18413 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18414             Alan Hayward  <alan.hayward@arm.com>
18415             David Sherwood  <david.sherwood@arm.com>
18416
18417         * cfgexpand.c (convert_debug_memory_address): Use
18418         as_a <scalar_int_mode>.
18419         * combine.c (expand_compound_operation): Likewise.
18420         (make_extraction): Likewise.
18421         (change_zero_ext): Likewise.
18422         (simplify_comparison): Likewise.
18423         * cse.c (cse_insn): Likewise.
18424         * dwarf2out.c (minmax_loc_descriptor): Likewise.
18425         (mem_loc_descriptor): Likewise.
18426         (loc_descriptor): Likewise.
18427         * expmed.c (init_expmed_one_mode): Likewise.
18428         (synth_mult): Likewise.
18429         (emit_store_flag_1): Likewise.
18430         (expand_divmod): Likewise.  Use HWI_COMPUTABLE_MODE_P instead
18431         of a comparison with size.
18432         * expr.c (expand_assignment): Use as_a <scalar_int_mode>.
18433         (reduce_to_bit_field_precision): Likewise.
18434         * function.c (expand_function_end): Likewise.
18435         * internal-fn.c (expand_arith_overflow_result_store): Likewise.
18436         * loop-doloop.c (doloop_modify): Likewise.
18437         * optabs.c (expand_binop): Likewise.
18438         (expand_unop): Likewise.
18439         (expand_copysign_absneg): Likewise.
18440         (prepare_cmp_insn): Likewise.
18441         (maybe_legitimize_operand): Likewise.
18442         * recog.c (const_scalar_int_operand): Likewise.
18443         * rtlanal.c (get_address_mode): Likewise.
18444         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18445         (simplify_cond_clz_ctz): Likewise.
18446         * tree-nested.c (get_nl_goto_field): Likewise.
18447         * tree.c (build_vector_type_for_mode): Likewise.
18448         * var-tracking.c (use_narrower_mode): Likewise.
18449
18450 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18451             Alan Hayward  <alan.hayward@arm.com>
18452             David Sherwood  <david.sherwood@arm.com>
18453
18454         * tree.h (SCALAR_INT_TYPE_MODE): New macro.
18455         * builtins.c (expand_builtin_signbit): Use it.
18456         * cfgexpand.c (expand_debug_expr): Likewise.
18457         * dojump.c (do_jump): Likewise.
18458         (do_compare_and_jump): Likewise.
18459         * dwarf2cfi.c (expand_builtin_init_dwarf_reg_sizes): Likewise.
18460         * expmed.c (make_tree): Likewise.
18461         * expr.c (expand_expr_real_2): Likewise.
18462         (expand_expr_real_1): Likewise.
18463         (try_casesi): Likewise.
18464         * fold-const-call.c (fold_const_call_ss): Likewise.
18465         * fold-const.c (unextend): Likewise.
18466         (extract_muldiv_1): Likewise.
18467         (fold_single_bit_test): Likewise.
18468         (native_encode_int): Likewise.
18469         (native_encode_string): Likewise.
18470         (native_interpret_int): Likewise.
18471         * gimple-fold.c (gimple_fold_builtin_memset): Likewise.
18472         * internal-fn.c (expand_addsub_overflow): Likewise.
18473         (expand_neg_overflow): Likewise.
18474         (expand_mul_overflow): Likewise.
18475         (expand_arith_overflow): Likewise.
18476         * match.pd: Likewise.
18477         * stor-layout.c (layout_type): Likewise.
18478         * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
18479         * tree-ssa-math-opts.c (convert_mult_to_widen): Likewise.
18480         * tree-ssanames.c (get_range_info): Likewise.
18481         * tree-switch-conversion.c (array_value_type) Likewise.
18482         * tree-vect-patterns.c (vect_recog_rotate_pattern): Likewise.
18483         (vect_recog_divmod_pattern): Likewise.
18484         (vect_recog_mixed_size_cond_pattern): Likewise.
18485         * tree-vrp.c (extract_range_basic): Likewise.
18486         (simplify_float_conversion_using_ranges): Likewise.
18487         * tree.c (int_fits_type_p): Likewise.
18488         * ubsan.c (instrument_bool_enum_load): Likewise.
18489         * varasm.c (mergeable_string_section): Likewise.
18490         (narrowing_initializer_constant_valid_p): Likewise.
18491         (output_constant): Likewise.
18492
18493 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18494             Alan Hayward  <alan.hayward@arm.com>
18495             David Sherwood  <david.sherwood@arm.com>
18496
18497         * machmode.h (NARROWEST_INT_MODE): New macro.
18498         * expr.c (alignment_for_piecewise_move): Use it instead of
18499         GET_CLASS_NARROWEST_MODE (MODE_INT).
18500         (push_block): Likewise.
18501         * stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
18502         Likewise.
18503         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
18504
18505 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18506             Alan Hayward  <alan.hayward@arm.com>
18507             David Sherwood  <david.sherwood@arm.com>
18508
18509         * postreload.c (move2add_valid_value_p): Change the type of the
18510         mode parameter to scalar_int_mode.
18511         (move2add_use_add2_insn): Add a mode parameter and use it instead
18512         of GET_MODE (reg).
18513         (move2add_use_add3_insn): Likewise.
18514         (reload_cse_move2add): Update accordingly.
18515
18516 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18517             Alan Hayward  <alan.hayward@arm.com>
18518             David Sherwood  <david.sherwood@arm.com>
18519
18520         * expr.c (expand_expr_real_2): Use scalar_int_mode for the
18521         double-word mode.
18522         * lower-subreg.c (resolve_shift_zext): Use is_a <scalar_int_mode>.
18523         * optabs.c (expand_unop): Likewise.
18524
18525 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18526             Alan Hayward  <alan.hayward@arm.com>
18527             David Sherwood  <david.sherwood@arm.com>
18528
18529         * dwarf2out.c (typed_binop): Change mode parameter to scalar_int_mode.
18530         (clz_loc_descriptor): Likewise.  Remove SCALAR_INT_MODE_P check.
18531         (popcount_loc_descriptor): Likewise.
18532         (bswap_loc_descriptor): Likewise.
18533         (rotate_loc_descriptor): Likewise.
18534         (mem_loc_descriptor): Add is_a <scalar_int_mode> checks before
18535         calling the functions above.
18536
18537 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18538             Alan Hayward  <alan.hayward@arm.com>
18539             David Sherwood  <david.sherwood@arm.com>
18540
18541         * combine.c (sign_extend_short_imm): Add is_a <scalar_int_mode>
18542         checks.
18543         (try_combine): Likewise.
18544         (simplify_if_then_else): Likewise.
18545         * cse.c (cse_insn): Likewise.
18546         * dwarf2out.c (mem_loc_descriptor): Likewise.
18547         * emit-rtl.c (gen_lowpart_common): Likewise.
18548         * simplify-rtx.c (simplify_truncation): Likewise.
18549         (simplify_binary_operation_1): Likewise.
18550         (simplify_const_relational_operation): Likewise.
18551         (simplify_ternary_operation): Likewise.
18552         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
18553
18554 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18555             Alan Hayward  <alan.hayward@arm.com>
18556             David Sherwood  <david.sherwood@arm.com>
18557
18558         * cse.c (cse_insn): Add is_a <scalar_int_mode> checks.
18559         * reload.c (push_reload): Likewise.
18560         (find_reloads): Likewise.
18561
18562 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18563             Alan Hayward  <alan.hayward@arm.com>
18564             David Sherwood  <david.sherwood@arm.com>
18565
18566         * combine.c (find_split_point): Add is_a <scalar_int_mode> checks.
18567         (make_compound_operation_int): Likewise.
18568         (change_zero_ext): Likewise.
18569         * expr.c (convert_move): Likewise.
18570         (convert_modes): Likewise.
18571         * fwprop.c (forward_propagate_subreg): Likewise.
18572         * loop-iv.c (get_biv_step_1): Likewise.
18573         * optabs.c (widen_operand): Likewise.
18574         * postreload.c (move2add_valid_value_p): Likewise.
18575         * recog.c (simplify_while_replacing): Likewise.
18576         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18577         (simplify_binary_operation_1): Likewise.  Remove redundant
18578         mode equality check.
18579
18580 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18581             Alan Hayward  <alan.hayward@arm.com>
18582             David Sherwood  <david.sherwood@arm.com>
18583
18584         * combine.c (combine_simplify_rtx): Add checks for
18585         is_a <scalar_int_mode>.
18586         (simplify_if_then_else): Likewise.
18587         (make_field_assignment): Likewise.
18588         (simplify_comparison): Likewise.
18589         * ifcvt.c (noce_try_bitop): Likewise.
18590         * loop-invariant.c (canonicalize_address_mult): Likewise.
18591         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18592
18593 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18594             Alan Hayward  <alan.hayward@arm.com>
18595             David Sherwood  <david.sherwood@arm.com>
18596
18597         * gimple-fold.c (gimple_fold_builtin_memory_op): Use
18598         is_a <scalar_int_mode> instead of != BLKmode.
18599
18600 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18601             Alan Hayward  <alan.hayward@arm.com>
18602             David Sherwood  <david.sherwood@arm.com>
18603
18604         * cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>
18605         instead of != VOIDmode.
18606         * combine.c (if_then_else_cond): Likewise.
18607         (change_zero_ext): Likewise.
18608         * dwarf2out.c (mem_loc_descriptor): Likewise.
18609         (loc_descriptor): Likewise.
18610         * rtlanal.c (canonicalize_condition): Likewise.
18611         * simplify-rtx.c (simplify_relational_operation_1): Likewise.
18612
18613 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18614             Alan Hayward  <alan.hayward@arm.com>
18615             David Sherwood  <david.sherwood@arm.com>
18616
18617         * simplify-rtx.c (simplify_binary_operation_1): Use
18618         is_a <scalar_int_mode> instead of !VECTOR_MODE_P.
18619
18620 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18621             Alan Hayward  <alan.hayward@arm.com>
18622             David Sherwood  <david.sherwood@arm.com>
18623
18624         * wide-int.h (int_traits<unsigned char>) New class.
18625         (int_traits<unsigned short>) Likewise.
18626         * cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>.
18627         Use GET_MODE_UNIT_PRECISION and remove redundant test for
18628         SCALAR_INT_MODE_P.
18629         * combine.c (set_nonzero_bits_and_sign_copies): Use
18630         is_a <scalar_int_mode>.
18631         (find_split_point): Likewise.
18632         (combine_simplify_rtx): Likewise.
18633         (simplify_logical): Likewise.
18634         (expand_compound_operation): Likewise.
18635         (expand_field_assignment): Likewise.
18636         (make_compound_operation): Likewise.
18637         (extended_count): Likewise.
18638         (change_zero_ext): Likewise.
18639         (simplify_comparison): Likewise.
18640         * dwarf2out.c (scompare_loc_descriptor): Likewise.
18641         (ucompare_loc_descriptor): Likewise.
18642         (minmax_loc_descriptor): Likewise.
18643         (mem_loc_descriptor): Likewise.
18644         (loc_descriptor): Likewise.
18645         * expmed.c (init_expmed_one_mode): Likewise.
18646         * lra-constraints.c (lra_constraint_offset): Likewise.
18647         * optabs.c (prepare_libcall_arg): Likewise.
18648         * postreload.c (move2add_note_store): Likewise.
18649         * reload.c (operands_match_p): Likewise.
18650         * rtl.h (load_extend_op): Likewise.
18651         * rtlhooks.c (gen_lowpart_general): Likewise.
18652         * simplify-rtx.c (simplify_truncation): Likewise.
18653         (simplify_unary_operation_1): Likewise.
18654         (simplify_binary_operation_1): Likewise.
18655         (simplify_const_binary_operation): Likewise.
18656         (simplify_const_relational_operation): Likewise.
18657         (simplify_subreg): Likewise.
18658         * stor-layout.c (bitwise_mode_for_mode): Likewise.
18659         * var-tracking.c (adjust_mems): Likewise.
18660         (prepare_call_arguments): Likewise.
18661
18662 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18663             Alan Hayward  <alan.hayward@arm.com>
18664             David Sherwood  <david.sherwood@arm.com>
18665
18666         * machmode.h (is_int_mode): New fuction.
18667         * combine.c (find_split_point): Use it.
18668         (combine_simplify_rtx): Likewise.
18669         (simplify_if_then_else): Likewise.
18670         (simplify_set): Likewise.
18671         (simplify_shift_const_1): Likewise.
18672         (simplify_comparison): Likewise.
18673         * config/aarch64/aarch64.c (aarch64_rtx_costs): Likewise.
18674         * cse.c (notreg_cost): Likewise.
18675         (cse_insn): Likewise.
18676         * cselib.c (cselib_lookup_1): Likewise.
18677         * dojump.c (do_jump_1): Likewise.
18678         (do_compare_rtx_and_jump): Likewise.
18679         * dse.c (get_call_args): Likewise.
18680         * dwarf2out.c (rtl_for_decl_init): Likewise.
18681         (native_encode_initializer): Likewise.
18682         * expmed.c (emit_store_flag_1): Likewise.
18683         (emit_store_flag): Likewise.
18684         * expr.c (convert_modes): Likewise.
18685         (store_field): Likewise.
18686         (expand_expr_real_1): Likewise.
18687         * fold-const.c (fold_read_from_constant_string): Likewise.
18688         * gimple-ssa-sprintf.c (get_format_string): Likewise.
18689         * optabs-libfuncs.c (gen_int_libfunc): Likewise.
18690         * optabs.c (expand_binop): Likewise.
18691         (expand_unop): Likewise.
18692         (expand_abs_nojump): Likewise.
18693         (expand_one_cmpl_abs_nojump): Likewise.
18694         * simplify-rtx.c (mode_signbit_p): Likewise.
18695         (val_signbit_p): Likewise.
18696         (val_signbit_known_set_p): Likewise.
18697         (val_signbit_known_clear_p): Likewise.
18698         (simplify_relational_operation_1): Likewise.
18699         * tree.c (vector_type_mode): Likewise.
18700
18701 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18702             Alan Hayward  <alan.hayward@arm.com>
18703             David Sherwood  <david.sherwood@arm.com>
18704
18705         * machmode.h (smallest_mode_for_size): Fix formatting.
18706         (smallest_int_mode_for_size): New function.
18707         * cfgexpand.c (expand_debug_expr): Use smallest_int_mode_for_size
18708         instead of smallest_mode_for_size.
18709         * combine.c (make_extraction): Likewise.
18710         * config/arc/arc.c (arc_expand_movmem): Likewise.
18711         * config/arm/arm.c (arm_expand_divmod_libfunc): Likewise.
18712         * config/i386/i386.c (ix86_get_mask_mode): Likewise.
18713         * config/s390/s390.c (s390_expand_insv): Likewise.
18714         * config/sparc/sparc.c (assign_int_registers): Likewise.
18715         * config/spu/spu.c (spu_function_value): Likewise.
18716         (spu_function_arg): Likewise.
18717         * coverage.c (get_gcov_type): Likewise.
18718         (get_gcov_unsigned_t): Likewise.
18719         * dse.c (find_shift_sequence): Likewise.
18720         * expmed.c (store_bit_field_1): Likewise.
18721         * expr.c (convert_move): Likewise.
18722         (store_field): Likewise.
18723         * internal-fn.c (expand_arith_overflow): Likewise.
18724         * optabs-query.c (get_best_extraction_insn): Likewise.
18725         * optabs.c (expand_twoval_binop_libfunc): Likewise.
18726         * stor-layout.c (layout_type): Likewise.
18727         (initialize_sizetypes): Likewise.
18728         * targhooks.c (default_get_mask_mode): Likewise.
18729         * tree-ssa-loop-manip.c (canonicalize_loop_ivs): Likewise.
18730
18731 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18732             Alan Hayward  <alan.hayward@arm.com>
18733             David Sherwood  <david.sherwood@arm.com>
18734
18735         * machmode.h (opt_mode::else_blk): New function.
18736         (int_mode_for_mode): Declare.
18737         * stor-layout.c (int_mode_for_mode): Return an opt_scalar_int_mode.
18738         * builtins.c (expand_builtin_signbit): Adjust for new int_mode_for_mode
18739         return type.
18740         * cfgexpand.c (expand_debug_expr): Likewise.
18741         * combine.c (gen_lowpart_or_truncate): Likewise.
18742         (gen_lowpart_for_combine): Likewise.
18743         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Likewise.
18744         * config/avr/avr.c (avr_to_int_mode): Likewise.
18745         (avr_out_plus_1): Likewise.
18746         (avr_out_plus): Likewise.
18747         (avr_out_round): Likewise.
18748         * config/i386/i386.c (ix86_split_to_parts): Likewise.
18749         * config/s390/s390.c (s390_expand_vec_compare_cc): Likewise.
18750         (s390_expand_vcond): Likewise.
18751         * config/spu/spu.c (spu_split_immediate): Likewise.
18752         (spu_expand_mov): Likewise.
18753         * dse.c (get_stored_val): Likewise.
18754         * expmed.c (store_bit_field_1): Likewise.
18755         (convert_extracted_bit_field): Use int_mode_for_mode instead of
18756         int_mode_for_size.
18757         (extract_bit_field_1): Adjust for new int_mode_for_mode return type.
18758         (extract_low_bits): Likewise.
18759         * expr.c (emit_group_load_1): Likewise.  Separate out the BLKmode
18760         handling rather than repeating the check.
18761         (emit_group_store): Likewise.
18762         (emit_move_via_integer): Adjust for new int_mode_for_mode return type.
18763         * optabs.c (expand_absneg_bit): Likewise.
18764         (expand_copysign_absneg): Likewise.
18765         (expand_copysign_bit): Likewise.
18766         * tree-if-conv.c (ifcvt_can_use_mask_load_store): Likewise.
18767         * tree-vect-slp.c (vect_transform_slp_perm_load): Likewise.
18768         * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise.
18769         * var-tracking.c (prepare_call_arguments):  Likewise.
18770         * config/powerpcspe/powerpcspe.c (rs6000_do_expand_vec_perm): Use
18771         int_mode_for_mode instead of mode_for_size.
18772         * config/rs6000/rs6000.c (rs6000_do_expand_vec_perm): Likewise.
18773
18774 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18775             Alan Hayward  <alan.hayward@arm.com>
18776             David Sherwood  <david.sherwood@arm.com>
18777
18778         * machmode.h (int_mode_for_size): New function.
18779         * builtins.c (set_builtin_user_assembler_name): Use int_mode_for_size
18780         instead of mode_for_size.
18781         * calls.c (save_fixed_argument_area): Likewise.  Make use of BLKmode
18782         explicit.
18783         * combine.c (expand_field_assignment): Use int_mode_for_size
18784         instead of mode_for_size.
18785         (make_extraction): Likewise.
18786         (simplify_shift_const_1): Likewise.
18787         (simplify_comparison): Likewise.
18788         * dojump.c (do_jump): Likewise.
18789         * dwarf2out.c (mem_loc_descriptor): Likewise.
18790         * emit-rtl.c (init_derived_machine_modes): Likewise.
18791         * expmed.c (flip_storage_order): Likewise.
18792         (convert_extracted_bit_field): Likewise.
18793         * expr.c (copy_blkmode_from_reg): Likewise.
18794         * graphite-isl-ast-to-gimple.c (max_mode_int_precision): Likewise.
18795         * internal-fn.c (expand_mul_overflow): Likewise.
18796         * lower-subreg.c (simple_move): Likewise.
18797         * optabs-libfuncs.c (init_optabs): Likewise.
18798         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
18799         * tree.c (vector_type_mode): Likewise.
18800         * tree-ssa-strlen.c (handle_builtin_memcmp): Likewise.
18801         * tree-vect-data-refs.c (vect_lanes_optab_supported_p): Likewise.
18802         * tree-vect-generic.c (expand_vector_parallel): Likewise.
18803         * tree-vect-stmts.c (vectorizable_load): Likewise.
18804         (vectorizable_store): Likewise.
18805
18806 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18807             Alan Hayward  <alan.hayward@arm.com>
18808             David Sherwood  <david.sherwood@arm.com>
18809
18810         * coretypes.h (pod_mode): New type.
18811         (scalar_int_mode_pod): New typedef.
18812         * machmode.h (pod_mode): New class.
18813         (int_n_data_t::m): Change type to scalar_int_mode_pod.
18814         * genmodes.c (emit_mode_int_n): Update accordingly.
18815         * lower-subreg.h (target_lower_subreg): Change type to
18816         scalar_int_mode_pod.
18817         * gdbhooks.py (build_pretty_printer): Handle pod_mode and
18818         scalar_int_mode_pod.
18819
18820 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18821             Alan Hayward  <alan.hayward@arm.com>
18822             David Sherwood  <david.sherwood@arm.com>
18823
18824         * config/powerpcspe/powerpcspe.h (rs6000_pmode): Change type from
18825         machine_mode to scalar_int_mode.
18826         * config/powerpcspe/powerpcspe.c (rs6000_pmode): Likewise.
18827         (rs6000_option_override_internal): Remove cast to int.
18828         * config/rs6000/rs6000.h (rs6000_pmode): Change type from
18829         machine_mode to scalar_int_mode.
18830         * config/rs6000/rs6000.c (rs6000_pmode): Likewise.
18831         (rs6000_option_override_internal): Remove cast to int.
18832         * config/s390/s390.h (Pmode): Remove cast to machine_mode.
18833         * config/epiphany/epiphany.h (RTX_OK_FOR_OFFSET_P): Add cast
18834         to machine_mode.
18835         * config/s390/s390.c (s390_expand_builtin): Likewise.
18836         * coretypes.h (scalar_int_mode): New type.
18837         (opt_scalar_int_mode): New typedef.
18838         * machmode.h (scalar_int_mode): New class.
18839         (scalar_int_mode::includes_p): New function.
18840         (byte_mode): Change type to scalar_int_mode.
18841         (word_mode): Likewise.
18842         (ptr_mode): Likewise.
18843         * emit-rtl.c (byte_mode): Likewise.
18844         (word_mode): Likewise.
18845         (ptr_mode): Likewise.
18846         (init_derived_machine_modes): Update accordingly.
18847         * genmodes.c (get_mode_class): Return scalar_int_mode for MODE_INT
18848         and MODE_PARTIAL_INT.
18849         * gdbhooks.py (build_pretty_printer): Handle scalar_int_mode and
18850         opt_scalar_int_mode.
18851
18852 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18853             Alan Hayward  <alan.hayward@arm.com>
18854             David Sherwood  <david.sherwood@arm.com>
18855
18856         * target.def (libgcc_floating_mode_supported_p): Take a
18857         scalar_float_mode.
18858         * doc/tm.texi: Regenerate.
18859         * targhooks.h (default_libgcc_floating_mode_supported_p): Take a
18860         scalar_float_mode.
18861         * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
18862         * config/aarch64/aarch64.c (aarch64_libgcc_floating_mode_supported_p):
18863         Likewise.
18864
18865 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18866             Alan Hayward  <alan.hayward@arm.com>
18867             David Sherwood  <david.sherwood@arm.com>
18868
18869         * target.def (default_floatn_mode): Return an opt_scalar_float_mode.
18870         * doc/tm.texi: Regenerate.
18871         * config/arm/arm.c (arm_floatn_mode): Return an opt_scalar_float_mode.
18872         * config/powerpcspe/powerpcspe.c (rs6000_floatn_mode): Likewise.
18873         * config/rs6000/rs6000.c (rs6000_floatn_mode): Likewise.
18874         * targhooks.h (default_floatn_mode): Likewise.
18875         * targhooks.c (default_floatn_mode): Likewise.
18876         * tree.c (build_common_tree_nodes): Update accordingly.
18877
18878 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18879             Alan Hayward  <alan.hayward@arm.com>
18880             David Sherwood  <david.sherwood@arm.com>
18881
18882         * machmode.h (mode_iterator::start): Provide overload for opt_modes.
18883         (mode_iterator::iterate_p): Likewise.
18884         (mode_iterator::get_wider): Likewise.
18885         * expr.c (init_expr_target): Use opt_scalar_float_mode.
18886
18887 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18888             Alan Hayward  <alan.hayward@arm.com>
18889             David Sherwood  <david.sherwood@arm.com>
18890
18891         * coretypes.h (opt_scalar_float_mode): New typedef.
18892         * machmode.h (float_mode_for_size): New function.
18893         * emit-rtl.c (double_mode): Delete.
18894         (init_emit_once): Use float_mode_for_size.
18895         * stor-layout.c (layout_type): Likewise.
18896         * gdbhooks.py (build_pretty_printer): Handle opt_scalar_float_mode.
18897
18898 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18899             Alan Hayward  <alan.hayward@arm.com>
18900             David Sherwood  <david.sherwood@arm.com>
18901
18902         * output.h (assemble_real): Take a scalar_float_mode.
18903         * config/arm/arm.c (arm_assemble_integer): Update accordingly.
18904         * config/arm/arm.md (consttable_4): Likewise.
18905         (consttable_8): Likewise.
18906         (consttable_16): Likewise.
18907         * config/mips/mips.md (consttable_float): Likewise.
18908         * config/s390/s390.c (s390_output_pool_entry): Likewise.
18909         * varasm.c (assemble_real): Take a scalar_float_mode.
18910         (output_constant_pool_2): Update accordingly.
18911         (output_constant): Likewise.
18912
18913 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18914             Alan Hayward  <alan.hayward@arm.com>
18915             David Sherwood  <david.sherwood@arm.com>
18916
18917         * tree.h (SCALAR_FLOAT_TYPE_MODE): New macro.
18918         * builtins.c (expand_builtin_signbit): Use it instead of TYPE_MODE.
18919         * fold-const.c (fold_convert_const_real_from_fixed): Likewise.
18920         (native_encode_real): Likewise.
18921         (native_interpret_real): Likewise.
18922         * hsa-brig.c (emit_immediate_scalar_to_buffer): Likewise.
18923         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
18924
18925 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18926             Alan Hayward  <alan.hayward@arm.com>
18927             David Sherwood  <david.sherwood@arm.com>
18928
18929         * optabs-libfuncs.c (gen_trunc_conv_libfunc): Use is_a
18930         <scalar_float_mode>.  Simplify.
18931         (gen_extend_conv_libfunc): Likewise.
18932
18933 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18934             Alan Hayward  <alan.hayward@arm.com>
18935             David Sherwood  <david.sherwood@arm.com>
18936
18937         * coretypes.h (scalar_float_mode): New type.
18938         * machmode.h (mode_traits::from_int): Use machine_mode if
18939         USE_ENUM_MODES is defined.
18940         (is_a): New function.
18941         (as_a): Likewise.
18942         (dyn_cast): Likewise.
18943         (scalar_float_mode): New class.
18944         (scalar_float_mode::includes_p): New function.
18945         (is_float_mode): Likewise.
18946         * gdbhooks.py (MachineModePrinter): New class.
18947         (build_pretty_printer): Use it for scalar_float_mode.
18948         * real.h (FLOAT_MODE_FORMAT): Use as_a <scalar_float_mode>.
18949         (format_helper::format_helper): Turn into a template.
18950         * genmodes.c (get_mode_class): New function.
18951         (emit_insn_modes_h): Give modes the class returned by get_mode_class,
18952         or machine_mode if none.
18953         * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Use
18954         as_a <scalar_float_mode>.
18955         * dwarf2out.c (mem_loc_descriptor): Likewise.
18956         (insert_float): Likewise.
18957         (add_const_value_attribute): Likewise.
18958         * simplify-rtx.c (simplify_immed_subreg): Likewise.
18959         * optabs.c (expand_absneg_bit): Take a scalar_float_mode.
18960         (expand_unop): Update accordingly.
18961         (expand_abs_nojump): Likewise.
18962         (expand_copysign_absneg): Take a scalar_float_mode.
18963         (expand_copysign_bit): Likewise.
18964         (expand_copysign): Update accordingly.
18965
18966 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
18967             Alan Hayward  <alan.hayward@arm.com>
18968             David Sherwood  <david.sherwood@arm.com>
18969
18970         * coretypes.h (opt_mode): New class.
18971         * machmode.h (opt_mode): Likewise.
18972         (opt_mode::else_void): New function.
18973         (opt_mode::require): Likewise.
18974         (opt_mode::exists): Likewise.
18975         (GET_MODE_WIDER_MODE): Turn into a function and return an opt_mode.
18976         (GET_MODE_2XWIDER_MODE): Likewise.
18977         (mode_iterator::get_wider): Update accordingly.
18978         (mode_iterator::get_2xwider): Likewise.
18979         (mode_iterator::get_known_wider): Likewise, turning into a template.
18980         * combine.c (make_extraction): Update use of GET_MODE_WIDER_MODE,
18981         forcing a wider mode to exist.
18982         * config/cr16/cr16.h (LONG_REG_P): Likewise.
18983         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
18984         * config/c6x/c6x.c (c6x_rtx_costs): Update use of
18985         GET_MODE_2XWIDER_MODE, forcing a wider mode to exist.
18986         * lower-subreg.c (init_lower_subreg): Likewise.
18987         * optabs-libfuncs.c (init_sync_libfuncs_1): Likewise, but not
18988         on the final iteration.
18989         * config/i386/i386.c (ix86_expand_set_or_movmem): Check whether
18990         a wider mode exists before asking for a move pattern.
18991         (get_mode_wider_vector): Update use of GET_MODE_WIDER_MODE,
18992         forcing a wider mode to exist.
18993         (expand_vselect_vconcat): Update use of GET_MODE_2XWIDER_MODE,
18994         returning false if no such mode exists.
18995         * config/ia64/ia64.c (expand_vselect_vconcat): Likewise.
18996         * config/mips/mips.c (mips_expand_vselect_vconcat): Likewise.
18997         * expmed.c (init_expmed_one_mode): Update use of GET_MODE_WIDER_MODE.
18998         Avoid checking for a MODE_INT if we already know the mode is not a
18999         SCALAR_INT_MODE_P.
19000         (extract_high_half): Update use of GET_MODE_WIDER_MODE,
19001         forcing a wider mode to exist.
19002         (expmed_mult_highpart_optab): Likewise.
19003         (expmed_mult_highpart): Likewise.
19004         * expr.c (expand_expr_real_2): Update use of GET_MODE_WIDER_MODE,
19005         using else_void.
19006         * lto-streamer-in.c (lto_input_mode_table): Likewise.
19007         * optabs-query.c (find_widening_optab_handler_and_mode): Likewise.
19008         * stor-layout.c (bit_field_mode_iterator::next_mode): Likewise.
19009         * internal-fn.c (expand_mul_overflow): Update use of
19010         GET_MODE_2XWIDER_MODE.
19011         * omp-low.c (omp_clause_aligned_alignment): Likewise.
19012         * tree-ssa-math-opts.c (convert_mult_to_widen): Update use of
19013         GET_MODE_WIDER_MODE.
19014         (convert_plusminus_to_widen): Likewise.
19015         * tree-switch-conversion.c (array_value_type): Likewise.
19016         * var-tracking.c (emit_note_insn_var_location): Likewise.
19017         * tree-vrp.c (simplify_float_conversion_using_ranges): Likewise.
19018         Return false inside rather than outside the loop if no wider mode
19019         exists
19020         * optabs.c (expand_binop): Update use of GET_MODE_WIDER_MODE
19021         and GET_MODE_2XWIDER_MODE
19022         (can_compare_p): Use else_void.
19023         * gdbhooks.py (OptMachineModePrinter): New class.
19024         (build_pretty_printer): Use it for opt_mode.
19025
19026 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19027             Alan Hayward  <alan.hayward@arm.com>
19028             David Sherwood  <david.sherwood@arm.com>
19029
19030         * tree-switch-conversion.c (array_value_type): Only read TYPE_MODE
19031         once.  Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE.
19032
19033 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19034             Alan Hayward  <alan.hayward@arm.com>
19035             David Sherwood  <david.sherwood@arm.com>
19036
19037         * machmode.h (mode_traits): New structure.
19038         (get_narrowest_mode): New function.
19039         (mode_iterator::start): Likewise.
19040         (mode_iterator::iterate_p): Likewise.
19041         (mode_iterator::get_wider): Likewise.
19042         (mode_iterator::get_known_wider): Likewise.
19043         (mode_iterator::get_2xwider): Likewise.
19044         (FOR_EACH_MODE_IN_CLASS): New mode iterator.
19045         (FOR_EACH_MODE): Likewise.
19046         (FOR_EACH_MODE_FROM): Likewise.
19047         (FOR_EACH_MODE_UNTIL): Likewise.
19048         (FOR_EACH_WIDER_MODE): Likewise.
19049         (FOR_EACH_2XWIDER_MODE): Likewise.
19050         * builtins.c (expand_builtin_strlen): Use new mode iterators.
19051         * combine.c (simplify_comparison): Likewise
19052         * config/i386/i386.c (type_natural_mode): Likewise.
19053         * cse.c (cse_insn): Likewise.
19054         * dse.c (find_shift_sequence): Likewise.
19055         * emit-rtl.c (init_derived_machine_modes): Likewise.
19056         (init_emit_once): Likewise.
19057         * explow.c (hard_function_value): Likewise.
19058         * expmed.c (extract_fixed_bit_field_1): Likewise.
19059         (extract_bit_field_1): Likewise.
19060         (expand_divmod): Likewise.
19061         (emit_store_flag_1): Likewise.
19062         * expr.c (init_expr_target): Likewise.
19063         (convert_move): Likewise.
19064         (alignment_for_piecewise_move): Likewise.
19065         (widest_int_mode_for_size): Likewise.
19066         (emit_block_move_via_movmem): Likewise.
19067         (copy_blkmode_to_reg): Likewise.
19068         (set_storage_via_setmem): Likewise.
19069         (compress_float_constant): Likewise.
19070         * omp-low.c (omp_clause_aligned_alignment): Likewise.
19071         * optabs-query.c (get_best_extraction_insn): Likewise.
19072         * optabs.c (expand_binop): Likewise.
19073         (expand_twoval_unop): Likewise.
19074         (expand_twoval_binop): Likewise.
19075         (widen_leading): Likewise.
19076         (widen_bswap): Likewise.
19077         (expand_parity): Likewise.
19078         (expand_unop): Likewise.
19079         (prepare_cmp_insn): Likewise.
19080         (prepare_float_lib_cmp): Likewise.
19081         (expand_float): Likewise.
19082         (expand_fix): Likewise.
19083         (expand_sfix_optab): Likewise.
19084         * postreload.c (move2add_use_add2_insn): Likewise.
19085         * reg-stack.c (reg_to_stack): Likewise.
19086         * reginfo.c (choose_hard_reg_mode): Likewise.
19087         * rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
19088         * stor-layout.c (mode_for_size): Likewise.
19089         (smallest_mode_for_size): Likewise.
19090         (mode_for_vector): Likewise.
19091         (finish_bitfield_representative): Likewise.
19092         * tree-ssa-math-opts.c (target_supports_divmod_p): Likewise.
19093         * tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
19094         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
19095         * var-tracking.c (prepare_call_arguments): Likewise.
19096
19097 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19098             Alan Hayward  <alan.hayward@arm.com>
19099             David Sherwood  <david.sherwood@arm.com>
19100
19101         * genconditions.c (write_header): Add a "#define USE_ENUM_MODES".
19102         * genmodes.c (emit_insn_modes_h): Define FOOmode to E_FOOmode if
19103         USE_ENUM_MODES is defined and to ((void) 0, E_FOOmode) otherwise.
19104         * machmode.h (mode_size): Move earlier in file.
19105         (mode_precision): Likewise.
19106         (mode_inner): Likewise.
19107         (mode_nunits): Likewise.
19108         (mode_unit_size): Likewise.
19109         (unit_unit_precision): Likewise.
19110         (mode_wider): Likewise.
19111         (mode_2xwider): Likewise.
19112         (machine_mode): New class.
19113         (mode_to_bytes): New function.
19114         (mode_to_bits): Likewise.
19115         (mode_to_precision): Likewise.
19116         (mode_to_inner): Likewise.
19117         (mode_to_unit_size): Likewise.
19118         (mode_to_unit_precision): Likewise.
19119         (mode_to_nunits): Likewise.
19120         (GET_MODE_SIZE): Use mode_to_bytes.
19121         (GET_MODE_BITSIZE): Use mode_to_bits.
19122         (GET_MODE_PRECISION): Use mode_to_precision.
19123         (GET_MODE_INNER): Use mode_to_inner.
19124         (GET_MODE_UNIT_SIZE): Use mode_to_unit_size.
19125         (GET_MODE_UNIT_PRECISION): Use mode_to_unit_precision.
19126         (GET_MODE_NUNITS): Use mode_to_nunits.
19127         * system.h (ALWAYS_INLINE): New macro.
19128         * config/powerpcspe/powerpcspe-c.c
19129         (altivec_resolve_overloaded_builtin): Use machine_mode instead of
19130         int for arg1_mode and arg2_mode.
19131
19132 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19133             Alan Hayward  <alan.hayward@arm.com>
19134             David Sherwood  <david.sherwood@arm.com>
19135
19136         * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
19137         Prefix mode names with E_ in case statements.
19138         * config/aarch64/aarch64-elf.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19139         * config/aarch64/aarch64.c (aarch64_split_simd_combine): Likewise.
19140         (aarch64_split_simd_move): Likewise.
19141         (aarch64_gen_storewb_pair): Likewise.
19142         (aarch64_gen_loadwb_pair): Likewise.
19143         (aarch64_gen_store_pair): Likewise.
19144         (aarch64_gen_load_pair): Likewise.
19145         (aarch64_get_condition_code_1): Likewise.
19146         (aarch64_constant_pool_reload_icode): Likewise.
19147         (get_rsqrte_type): Likewise.
19148         (get_rsqrts_type): Likewise.
19149         (get_recpe_type): Likewise.
19150         (get_recps_type): Likewise.
19151         (aarch64_gimplify_va_arg_expr): Likewise.
19152         (aarch64_simd_container_mode): Likewise.
19153         (aarch64_emit_load_exclusive): Likewise.
19154         (aarch64_emit_store_exclusive): Likewise.
19155         (aarch64_expand_compare_and_swap): Likewise.
19156         (aarch64_gen_atomic_cas): Likewise.
19157         (aarch64_emit_bic): Likewise.
19158         (aarch64_emit_atomic_swap): Likewise.
19159         (aarch64_emit_atomic_load_op): Likewise.
19160         (aarch64_evpc_trn): Likewise.
19161         (aarch64_evpc_uzp): Likewise.
19162         (aarch64_evpc_zip): Likewise.
19163         (aarch64_evpc_ext): Likewise.
19164         (aarch64_evpc_rev): Likewise.
19165         (aarch64_evpc_dup): Likewise.
19166         (aarch64_gen_ccmp_first): Likewise.
19167         (aarch64_gen_ccmp_next): Likewise.
19168         * config/alpha/alpha.c (alpha_scalar_mode_supported_p): Likewise.
19169         (alpha_emit_xfloating_libcall): Likewise.
19170         (emit_insxl): Likewise.
19171         (alpha_arg_type): Likewise.
19172         * config/arc/arc.c (arc_vector_mode_supported_p): Likewise.
19173         (arc_preferred_simd_mode): Likewise.
19174         (arc_secondary_reload): Likewise.
19175         (get_arc_condition_code): Likewise.
19176         (arc_print_operand): Likewise.
19177         (arc_legitimate_constant_p): Likewise.
19178         * config/arc/arc.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19179         * config/arc/arc.md (casesi_load): Likewise.
19180         (casesi_compact_jump): Likewise.
19181         * config/arc/predicates.md (proper_comparison_operator): Likewise.
19182         (cc_use_register): Likewise.
19183         * config/arm/aout.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19184         * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
19185         (arm_init_iwmmxt_builtins): Likewise.
19186         * config/arm/arm.c (thumb1_size_rtx_costs): Likewise.
19187         (neon_expand_vector_init): Likewise.
19188         (arm_attr_length_move_neon): Likewise.
19189         (maybe_get_arm_condition_code): Likewise.
19190         (arm_emit_vector_const): Likewise.
19191         (arm_preferred_simd_mode): Likewise.
19192         (arm_output_iwmmxt_tinsr): Likewise.
19193         (thumb1_output_casesi): Likewise.
19194         (thumb2_output_casesi): Likewise.
19195         (arm_emit_load_exclusive): Likewise.
19196         (arm_emit_store_exclusive): Likewise.
19197         (arm_expand_compare_and_swap): Likewise.
19198         (arm_evpc_neon_vuzp): Likewise.
19199         (arm_evpc_neon_vzip): Likewise.
19200         (arm_evpc_neon_vrev): Likewise.
19201         (arm_evpc_neon_vtrn): Likewise.
19202         (arm_evpc_neon_vext): Likewise.
19203         (arm_validize_comparison): Likewise.
19204         * config/arm/neon.md (neon_vc<cmp_op><mode>): Likewise.
19205         * config/avr/avr-c.c (avr_resolve_overloaded_builtin): Likewise.
19206         * config/avr/avr.c (avr_rtx_costs_1): Likewise.
19207         * config/c6x/c6x.c (c6x_vector_mode_supported_p): Likewise.
19208         (c6x_preferred_simd_mode): Likewise.
19209         * config/epiphany/epiphany.c (get_epiphany_condition_code): Likewise.
19210         (epiphany_rtx_costs): Likewise.
19211         * config/epiphany/predicates.md (proper_comparison_operator):
19212         Likewise.
19213         * config/frv/frv.c (condexec_memory_operand): Likewise.
19214         (frv_emit_move): Likewise.
19215         (output_move_single): Likewise.
19216         (output_condmove_single): Likewise.
19217         (frv_hard_regno_mode_ok): Likewise.
19218         (frv_matching_accg_mode): Likewise.
19219         * config/h8300/h8300.c (split_adds_subs): Likewise.
19220         (h8300_rtx_costs): Likewise.
19221         (h8300_print_operand): Likewise.
19222         (compute_mov_length): Likewise.
19223         (output_logical_op): Likewise.
19224         (compute_logical_op_length): Likewise.
19225         (compute_logical_op_cc): Likewise.
19226         (h8300_shift_needs_scratch_p): Likewise.
19227         (output_a_shift): Likewise.
19228         (compute_a_shift_length): Likewise.
19229         (compute_a_shift_cc): Likewise.
19230         (expand_a_rotate): Likewise.
19231         (output_a_rotate): Likewise.
19232         * config/i386/i386.c (classify_argument): Likewise.
19233         (function_arg_advance_32): Likewise.
19234         (function_arg_32): Likewise.
19235         (function_arg_64): Likewise.
19236         (function_value_64): Likewise.
19237         (ix86_gimplify_va_arg): Likewise.
19238         (ix86_legitimate_constant_p): Likewise.
19239         (put_condition_code): Likewise.
19240         (split_double_mode): Likewise.
19241         (ix86_avx256_split_vector_move_misalign): Likewise.
19242         (ix86_expand_vector_logical_operator): Likewise.
19243         (ix86_split_idivmod): Likewise.
19244         (ix86_expand_adjust_ufix_to_sfix_si): Likewise.
19245         (ix86_build_const_vector): Likewise.
19246         (ix86_build_signbit_mask): Likewise.
19247         (ix86_match_ccmode): Likewise.
19248         (ix86_cc_modes_compatible): Likewise.
19249         (ix86_expand_branch): Likewise.
19250         (ix86_expand_sse_cmp): Likewise.
19251         (ix86_expand_sse_movcc): Likewise.
19252         (ix86_expand_int_sse_cmp): Likewise.
19253         (ix86_expand_vec_perm_vpermi2): Likewise.
19254         (ix86_expand_vec_perm): Likewise.
19255         (ix86_expand_sse_unpack): Likewise.
19256         (ix86_expand_int_addcc): Likewise.
19257         (ix86_split_to_parts): Likewise.
19258         (ix86_vectorize_builtin_gather): Likewise.
19259         (ix86_vectorize_builtin_scatter): Likewise.
19260         (avx_vpermilp_parallel): Likewise.
19261         (inline_memory_move_cost): Likewise.
19262         (ix86_tieable_integer_mode_p): Likewise.
19263         (x86_maybe_negate_const_int): Likewise.
19264         (ix86_expand_vector_init_duplicate): Likewise.
19265         (ix86_expand_vector_init_one_nonzero): Likewise.
19266         (ix86_expand_vector_init_one_var): Likewise.
19267         (ix86_expand_vector_init_concat): Likewise.
19268         (ix86_expand_vector_init_interleave): Likewise.
19269         (ix86_expand_vector_init_general): Likewise.
19270         (ix86_expand_vector_set): Likewise.
19271         (ix86_expand_vector_extract): Likewise.
19272         (emit_reduc_half): Likewise.
19273         (ix86_emit_i387_round): Likewise.
19274         (ix86_mangle_type): Likewise.
19275         (ix86_expand_round_sse4): Likewise.
19276         (expand_vec_perm_blend): Likewise.
19277         (canonicalize_vector_int_perm): Likewise.
19278         (ix86_expand_vec_one_operand_perm_avx512): Likewise.
19279         (expand_vec_perm_1): Likewise.
19280         (expand_vec_perm_interleave3): Likewise.
19281         (expand_vec_perm_even_odd_pack): Likewise.
19282         (expand_vec_perm_even_odd_1): Likewise.
19283         (expand_vec_perm_broadcast_1): Likewise.
19284         (ix86_vectorize_vec_perm_const_ok): Likewise.
19285         (ix86_expand_vecop_qihi): Likewise.
19286         (ix86_expand_mul_widen_hilo): Likewise.
19287         (ix86_expand_sse2_abs): Likewise.
19288         (ix86_expand_pextr): Likewise.
19289         (ix86_expand_pinsr): Likewise.
19290         (ix86_preferred_simd_mode): Likewise.
19291         (ix86_simd_clone_compute_vecsize_and_simdlen): Likewise.
19292         * config/i386/sse.md (*andnot<mode>3): Likewise.
19293         (<mask_codefor><code><mode>3<mask_name>): Likewise.
19294         (*<code><mode>3): Likewise.
19295         * config/ia64/ia64.c (ia64_expand_vecint_compare): Likewise.
19296         (ia64_expand_atomic_op): Likewise.
19297         (ia64_arg_type): Likewise.
19298         (ia64_mode_to_int): Likewise.
19299         (ia64_scalar_mode_supported_p): Likewise.
19300         (ia64_vector_mode_supported_p): Likewise.
19301         (expand_vec_perm_broadcast): Likewise.
19302         * config/iq2000/iq2000.c (iq2000_move_1word): Likewise.
19303         (iq2000_function_arg_advance): Likewise.
19304         (iq2000_function_arg): Likewise.
19305         * config/m32c/m32c.c (m32c_preferred_reload_class): Likewise.
19306         * config/m68k/m68k.c (output_dbcc_and_branch): Likewise.
19307         (m68k_libcall_value): Likewise.
19308         (m68k_function_value): Likewise.
19309         (sched_attr_op_type): Likewise.
19310         * config/mcore/mcore.c (mcore_output_move): Likewise.
19311         * config/microblaze/microblaze.c (microblaze_function_arg_advance):
19312         Likewise.
19313         (microblaze_function_arg): Likewise.
19314         * config/mips/mips.c (mips16_build_call_stub): Likewise.
19315         (mips_print_operand): Likewise.
19316         (mips_mode_ok_for_mov_fmt_p): Likewise.
19317         (mips_vector_mode_supported_p): Likewise.
19318         (mips_preferred_simd_mode): Likewise.
19319         (mips_expand_vpc_loongson_even_odd): Likewise.
19320         (mips_expand_vec_unpack): Likewise.
19321         (mips_expand_vi_broadcast): Likewise.
19322         (mips_expand_vector_init): Likewise.
19323         (mips_expand_vec_reduc): Likewise.
19324         (mips_expand_msa_cmp): Likewise.
19325         * config/mips/mips.md (casesi_internal_mips16_<mode>): Likewise.
19326         * config/mn10300/mn10300.c (mn10300_print_operand): Likewise.
19327         (cc_flags_for_mode): Likewise.
19328         * config/msp430/msp430.c (msp430_print_operand): Likewise.
19329         * config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Likewise.
19330         (nds32_output_casesi_pc_relative): Likewise.
19331         * config/nds32/nds32.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19332         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Likewise.
19333         (nvptx_gen_unpack): Likewise.
19334         (nvptx_gen_pack): Likewise.
19335         (nvptx_gen_shuffle): Likewise.
19336         (nvptx_gen_wcast): Likewise.
19337         (nvptx_preferred_simd_mode): Likewise.
19338         * config/pa/pa.c (pa_secondary_reload): Likewise.
19339         * config/pa/predicates.md (base14_operand): Likewise.
19340         * config/powerpcspe/powerpcspe-c.c
19341         (altivec_resolve_overloaded_builtin): Likewise.
19342         * config/powerpcspe/powerpcspe.c (rs6000_setup_reg_addr_masks):
19343         Likewise.
19344         (rs6000_preferred_simd_mode): Likewise.
19345         (output_vec_const_move): Likewise.
19346         (rs6000_expand_vector_extract): Likewise.
19347         (rs6000_split_vec_extract_var): Likewise.
19348         (reg_offset_addressing_ok_p): Likewise.
19349         (rs6000_legitimate_offset_address_p): Likewise.
19350         (rs6000_legitimize_address): Likewise.
19351         (rs6000_emit_set_const): Likewise.
19352         (rs6000_const_vec): Likewise.
19353         (rs6000_emit_move): Likewise.
19354         (spe_build_register_parallel): Likewise.
19355         (rs6000_darwin64_record_arg_recurse): Likewise.
19356         (swap_selector_for_mode): Likewise.
19357         (spe_init_builtins): Likewise.
19358         (paired_init_builtins): Likewise.
19359         (altivec_init_builtins): Likewise.
19360         (do_load_for_compare): Likewise.
19361         (rs6000_generate_compare): Likewise.
19362         (rs6000_expand_float128_convert): Likewise.
19363         (emit_load_locked): Likewise.
19364         (emit_store_conditional): Likewise.
19365         (rs6000_output_function_epilogue): Likewise.
19366         (rs6000_handle_altivec_attribute): Likewise.
19367         (rs6000_function_value): Likewise.
19368         (emit_fusion_gpr_load): Likewise.
19369         (emit_fusion_p9_load): Likewise.
19370         (emit_fusion_p9_store): Likewise.
19371         * config/powerpcspe/predicates.md (easy_fp_constant): Likewise.
19372         (fusion_gpr_mem_load): Likewise.
19373         (fusion_addis_mem_combo_load): Likewise.
19374         (fusion_addis_mem_combo_store): Likewise.
19375         * config/rs6000/predicates.md (easy_fp_constant): Likewise.
19376         (fusion_gpr_mem_load): Likewise.
19377         (fusion_addis_mem_combo_load): Likewise.
19378         (fusion_addis_mem_combo_store): Likewise.
19379         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19380         Likewise.
19381         * config/rs6000/rs6000-string.c (do_load_for_compare): Likewise.
19382         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
19383         (rs6000_preferred_simd_mode): Likewise.
19384         (output_vec_const_move): Likewise.
19385         (rs6000_expand_vector_extract): Likewise.
19386         (rs6000_split_vec_extract_var): Likewise.
19387         (reg_offset_addressing_ok_p): Likewise.
19388         (rs6000_legitimate_offset_address_p): Likewise.
19389         (rs6000_legitimize_address): Likewise.
19390         (rs6000_emit_set_const): Likewise.
19391         (rs6000_const_vec): Likewise.
19392         (rs6000_emit_move): Likewise.
19393         (rs6000_darwin64_record_arg_recurse): Likewise.
19394         (swap_selector_for_mode): Likewise.
19395         (paired_init_builtins): Likewise.
19396         (altivec_init_builtins): Likewise.
19397         (rs6000_expand_float128_convert): Likewise.
19398         (emit_load_locked): Likewise.
19399         (emit_store_conditional): Likewise.
19400         (rs6000_output_function_epilogue): Likewise.
19401         (rs6000_handle_altivec_attribute): Likewise.
19402         (rs6000_function_value): Likewise.
19403         (emit_fusion_gpr_load): Likewise.
19404         (emit_fusion_p9_load): Likewise.
19405         (emit_fusion_p9_store): Likewise.
19406         * config/rx/rx.c (rx_gen_move_template): Likewise.
19407         (flags_from_mode): Likewise.
19408         * config/s390/predicates.md (s390_alc_comparison): Likewise.
19409         (s390_slb_comparison): Likewise.
19410         * config/s390/s390.c (s390_handle_vectorbool_attribute): Likewise.
19411         (s390_vector_mode_supported_p): Likewise.
19412         (s390_cc_modes_compatible): Likewise.
19413         (s390_match_ccmode_set): Likewise.
19414         (s390_canonicalize_comparison): Likewise.
19415         (s390_emit_compare_and_swap): Likewise.
19416         (s390_branch_condition_mask): Likewise.
19417         (s390_rtx_costs): Likewise.
19418         (s390_secondary_reload): Likewise.
19419         (__SECONDARY_RELOAD_CASE): Likewise.
19420         (s390_expand_cs): Likewise.
19421         (s390_preferred_simd_mode): Likewise.
19422         * config/s390/vx-builtins.md (vec_packsu_u<mode>): Likewise.
19423         * config/sh/sh.c (sh_print_operand): Likewise.
19424         (dump_table): Likewise.
19425         (sh_secondary_reload): Likewise.
19426         * config/sh/sh.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19427         * config/sh/sh.md (casesi_worker_1): Likewise.
19428         (casesi_worker_2): Likewise.
19429         * config/sparc/predicates.md (icc_comparison_operator): Likewise.
19430         (fcc_comparison_operator): Likewise.
19431         * config/sparc/sparc.c (sparc_expand_move): Likewise.
19432         (emit_soft_tfmode_cvt): Likewise.
19433         (sparc_preferred_simd_mode): Likewise.
19434         (output_cbranch): Likewise.
19435         (sparc_print_operand): Likewise.
19436         (sparc_expand_vec_perm_bmask): Likewise.
19437         (vector_init_bshuffle): Likewise.
19438         * config/spu/spu.c (spu_scalar_mode_supported_p): Likewise.
19439         (spu_vector_mode_supported_p): Likewise.
19440         (spu_expand_insv): Likewise.
19441         (spu_emit_branch_or_set): Likewise.
19442         (spu_handle_vector_attribute): Likewise.
19443         (spu_builtin_splats): Likewise.
19444         (spu_builtin_extract): Likewise.
19445         (spu_builtin_promote): Likewise.
19446         (spu_expand_sign_extend): Likewise.
19447         * config/tilegx/tilegx.c (tilegx_scalar_mode_supported_p): Likewise.
19448         (tilegx_simd_int): Likewise.
19449         * config/tilepro/tilepro.c (tilepro_scalar_mode_supported_p): Likewise.
19450         (tilepro_simd_int): Likewise.
19451         * config/v850/v850.c (const_double_split): Likewise.
19452         (v850_print_operand): Likewise.
19453         (ep_memory_offset): Likewise.
19454         * config/vax/vax.c (vax_rtx_costs): Likewise.
19455         (vax_output_int_move): Likewise.
19456         (vax_output_int_add): Likewise.
19457         (vax_output_int_subtract): Likewise.
19458         * config/visium/predicates.md (visium_branch_operator): Likewise.
19459         * config/visium/visium.c (rtx_ok_for_offset_p): Likewise.
19460         (visium_print_operand_address): Likewise.
19461         * config/visium/visium.h (ASM_OUTPUT_ADDR_DIFF_ELT): Likewise.
19462         * config/xtensa/xtensa.c (xtensa_mem_offset): Likewise.
19463         (xtensa_expand_conditional_branch): Likewise.
19464         (xtensa_copy_incoming_a7): Likewise.
19465         (xtensa_output_literal): Likewise.
19466         * dfp.c (decimal_real_maxval): Likewise.
19467         * targhooks.c (default_libgcc_floating_mode_supported_p): Likewise.
19468
19469 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19470             Alan Hayward  <alan.hayward@arm.com>
19471             David Sherwood  <david.sherwood@arm.com>
19472
19473         * genmodes.c (mode_size_inline): Add an E_ prefix to mode names.
19474         (mode_nunits_inline): Likewise.
19475         (mode_inner_inline): Likewise.
19476         (mode_unit_size_inline): Likewise.
19477         (mode_unit_precision_inline): Likewise.
19478         (emit_insn_modes_h): Likewise.  Also emit a #define of the
19479         unprefixed name.
19480         (emit_mode_wider): Add an E_ prefix to mode names.
19481         (emit_mode_complex): Likewise.
19482         (emit_mode_inner): Likewise.
19483         (emit_mode_adjustments): Likewise.
19484         (emit_mode_int_n): Likewise.
19485         * config/aarch64/aarch64-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP)
19486         (v2si_UP, v2sf_UP, v1df_UP, di_UP, df_UP, v16qi_UP, v8hi_UP, v8hf_UP)
19487         (v4si_UP, v4sf_UP, v2di_UP, v2df_UP, ti_UP, oi_UP, ci_UP, xi_UP)
19488         (si_UP, sf_UP, hi_UP, hf_UP, qi_UP): Likewise.
19489         (CRC32_BUILTIN, ENTRY): Likewise.
19490         * config/aarch64/aarch64.c (aarch64_push_regs): Likewise.
19491         (aarch64_pop_regs): Likewise.
19492         (aarch64_process_components): Likewise.
19493         * config/alpha/alpha.c (alpha_emit_conditional_move): Likewise.
19494         * config/arm/arm-builtins.c (v8qi_UP, v4hi_UP, v4hf_UP, v2si_UP)
19495         (v2sf_UP, di_UP, v16qi_UP, v8hi_UP, v8hf_UP, v4si_UP, v4sf_UP)
19496         (v2di_UP, ti_UP, ei_UP, oi_UP, hf_UP, si_UP, void_UP): Likewise.
19497         * config/arm/arm.c (arm_init_libfuncs): Likewise.
19498         * config/i386/i386-builtin-types.awk (ix86_builtin_type_vect_mode):
19499         Likewise.
19500         * config/i386/i386-builtin.def (pcmpestr): Likewise.
19501         (pcmpistr): Likewise.
19502         * config/microblaze/microblaze.c (double_memory_operand): Likewise.
19503         * config/mmix/mmix.c (mmix_output_condition): Likewise.
19504         * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
19505         Likewise.
19506         * config/rl78/rl78.c (mduc_regs): Likewise.
19507         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
19508         (htm_expand_builtin): Likewise.
19509         * config/sh/sh.h (REGISTER_NATURAL_MODE): Likewise.
19510         * config/sparc/sparc.c (emit_save_or_restore_regs): Likewise.
19511         * config/xtensa/xtensa.c (print_operand): Likewise.
19512         * expmed.h (NUM_MODE_PARTIAL_INT): Likewise.
19513         (NUM_MODE_VECTOR_INT): Likewise.
19514         * genoutput.c (null_operand): Likewise.
19515         (output_operand_data): Likewise.
19516         * genrecog.c (print_parameter_value): Likewise.
19517         * lra.c (debug_operand_data): Likewise.
19518
19519 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19520
19521         * dwarf2out.c (scompare_loc_descriptor_wide)
19522         (scompare_loc_descriptor_narrow): New functions, split out from...
19523         (scompare_loc_descriptor): ...here.
19524         * expmed.c (emit_store_flag_int): New function, split out from...
19525         (emit_store_flag): ...here.
19526
19527 2017-08-30  Richard Biener  <rguenther@suse.de>
19528
19529         * dwarf2out.c (dwarf2out_finish): Remove setting AT_pubnames.
19530         (dwarf2out_early_finish): Move setting of AT_pubnames from
19531         early debug output to early finish.
19532
19533 2017-08-30  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
19534
19535         * gcc/config/msp430/msp430.h: Pass -mcode/data-region to the linker
19536         and -mdata-region to the assembler.
19537
19538 2017-08-30  Richard Biener  <rguenther@suse.de>
19539
19540         * dwarf2out.c (add_dwarf_attr): Check we don't add duplicate
19541         attributes.
19542         (gen_subprogram_die): Add DW_AT_object_pointer only early.
19543         (dwarf2out_early_global_decl): Only generate a DIE for the
19544         abstract origin if it doesn't already exist or is a declaration DIE.
19545         (resolve_addr): Do not add the linkage name twice when
19546         generating a stub DIE for the DW_TAG_GNU_call_site target.
19547
19548 2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
19549
19550         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
19551         Use machine_mode rather than int for arg1_mode.
19552
19553 2017-08-29  Michael Meissner  <meissner@linux.vnet.ibm.com>
19554
19555         PR target/82015
19556         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Insure
19557         that the second argument of the built-in functions to unpack
19558         128-bit scalar types to 64-bit values is 0 or 1.  Change to use a
19559         switch statement instead a lot of if statements.
19560         * config/rs6000/rs6000.md (unpack<mode>, FMOVE128_VSX iterator):
19561         Allow 64-bit values to be in Altivec registers as well as
19562         traditional floating point registers.
19563         (pack<mode>, FMOVE128_VSX iterator): Likewise.
19564
19565 2017-08-29  Alexander Monakov  <amonakov@ispras.ru>
19566
19567         * ira-costs.c (record_address_regs): Handle both operands of PLUS for
19568         MAX_REGS_PER_ADDRESS == 1.
19569
19570 2017-08-29  Uros Bizjak  <ubizjak@gmail.com>
19571
19572         * config/i386/i386.opt (flag_fentry): Do not init to -1.
19573         * config/i386/i386.c (ix86_option_override_internal): Simplify
19574         setting of opts->x_flag_entry.
19575
19576 2017-08-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19577             Jakub Jelinek  <jakub@redhat.com>
19578             Richard Biener  <rguenther@suse.de>
19579
19580         PR tree-optimization/81503
19581         * gimple-ssa-strength-reduction.c (replace_mult_candidate): Ensure
19582         folded constant fits in the target type; reorder tests for clarity.
19583
19584 2017-08-29  Martin Liska  <mliska@suse.cz>
19585
19586         * passes.def: Include pass_lower_switch.
19587         * stmt.c (dump_case_nodes): Remove and move to
19588         tree-switch-conversion.
19589         (case_values_threshold): Likewise.
19590         (expand_switch_as_decision_tree_p): Likewise.
19591         (emit_case_decision_tree): Likewise.
19592         (expand_case): Likewise.
19593         (balance_case_nodes): Likewise.
19594         (node_has_low_bound): Likewise.
19595         (node_has_high_bound): Likewise.
19596         (node_is_bounded): Likewise.
19597         (emit_case_nodes): Likewise.
19598         (struct simple_case_node): New struct.
19599         (add_case_node): Remove.
19600         (emit_case_dispatch_table): Use vector instead of case_list.
19601         (reset_out_edges_aux): Remove.
19602         (compute_cases_per_edge): Likewise.
19603         (expand_case): Build list of simple_case_node.
19604         (expand_sjlj_dispatch_table): Use it.
19605         * tree-switch-conversion.c (struct case_node): Moved from
19606         stmt.c and adjusted.
19607         (emit_case_nodes): Likewise.
19608         (node_has_low_bound): Likewise.
19609         (node_has_high_bound): Likewise.
19610         (node_is_bounded): Likewise.
19611         (case_values_threshold): Likewise.
19612         (reset_out_edges_aux): Likewise.
19613         (compute_cases_per_edge): Likewise.
19614         (add_case_node): Likewise.
19615         (dump_case_nodes): Likewise.
19616         (balance_case_nodes): Likewise.
19617         (expand_switch_as_decision_tree_p): Likewise.
19618         (emit_jump): Likewise.
19619         (emit_case_decision_tree): Likewise.
19620         (try_switch_expansion): Likewise.
19621         (do_jump_if_equal): Likewise.
19622         (emit_cmp_and_jump_insns): Likewise.
19623         (fix_phi_operands_for_edge): New function.
19624         (record_phi_operand_mapping): Likewise.
19625         (class pass_lower_switch): New pass.
19626         (pass_lower_switch::execute): New function.
19627         (make_pass_lower_switch): Likewise.
19628         (conditional_probability):
19629         * timevar.def: Add TV_TREE_SWITCH_LOWERING.
19630         * tree-pass.h: Add make_pass_lower_switch.
19631
19632 2017-08-29  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
19633
19634         PR target/80993
19635         * gcc/config/msp430/msp430.c (msp430_attr): Mark interrupt
19636         handlers as used.
19637
19638 2017-08-29  Richard Biener  <rguenther@suse.de>
19639
19640         * dwarf2out.c (add_dwarf_attr): When checking is enabled verify
19641         we do not add a DW_AT_inline attribute twice.
19642         (gen_subprogram_die): Remove code setting DW_AT_inline on
19643         DECL_ABSTRACT_P nodes.
19644
19645 2017-08-29  Richard Sandiford  <richard.sandiford@linaro.org>
19646
19647         * gimplify.c (gimplify_call_expr): Copy the nothrow flag to
19648         calls to internal functions.
19649         (gimplify_modify_expr): Likewise.
19650         * tree-call-cdce.c (use_internal_fn): Likewise.
19651         * tree-ssa-math-opts.c (pass_cse_reciprocals::execute): Likewise.
19652         (convert_to_divmod): Set the nothrow flag.
19653         * tree-if-conv.c (predicate_mem_writes):  Likewise.
19654         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
19655         (vectorizable_call): Likewise.
19656         (vectorizable_store): Likewise.
19657         (vectorizable_load): Likewise.
19658         * tree-vect-patterns.c (vect_recog_pow_pattern): Likewise.
19659         (vect_recog_mask_conversion_pattern): Likewise.
19660
19661 2017-08-29  Martin Liska  <mliska@suse.cz>
19662
19663         PR other/39851
19664         * gcc.c (driver_handle_option): Add new argument.
19665         * opts-common.c (handle_option): Pass
19666         target_option_override_hook.
19667         * opts-global.c (lang_handle_option): Add new option.
19668         (set_default_handlers):  Add new argument.
19669         (decode_options): Likewise.
19670         * opts.c (target_handle_option): Likewise.
19671         (common_handle_option): Call target_option_override_hook.
19672         * opts.h (struct cl_option_handler_func): Add hook for
19673         target option override.
19674         (struct cl_option_handlers): Likewise.
19675         (set_default_handlers): Add new argument.
19676         (decode_options): Likewise.
19677         (common_handle_option): Likewise.
19678         (target_handle_option): Likewise.
19679         * toplev.c (toplev::main): Pass targetm.target_option.override
19680         hook.
19681
19682 2017-08-29  Richard Biener  <rguenther@suse.de>
19683         Dominik Infuehr <dominik.infuehr@theobroma-systems.com>
19684
19685         * tree-vect-slp.c (vect_bb_slp_scalar_cost): Properly confine
19686         life to the active subtree.
19687
19688 2017-08-28  Jeff Law  <law@redhat.com>
19689
19690         * tree-ssa-dom.c (edge_info::record_simple_equiv): Call
19691         derive_equivalences.
19692         (derive_equivalences_from_bit_ior, record_temporary_equivalences):
19693         Code moved into....
19694         (edge_info::derive_equivalences): New private member function
19695
19696         * tree-ssa-dom.c (class edge_info): Changed from a struct
19697         to a class.  Add ctor/dtor, methods and data members.
19698         (edge_info::edge_info): Renamed from allocate_edge_info.
19699         Initialize additional members.
19700         (edge_info::~edge_info): New.
19701         (free_dom_edge_info): Delete the edge info.
19702         (record_edge_info): Use new class & associated member functions.
19703         Tighten forms for testing for edge equivalences.
19704         (record_temporary_equivalences): Iterate over the simple
19705         equivalences rather than assuming there's only one per edge.
19706         (cprop_into_successor_phis): Iterate over the simple
19707         equivalences rather than assuming there's only one per edge.
19708         (optimize_stmt): Use operand_equal_p rather than pointer
19709         equality for mini-DSE code.
19710
19711 2017-08-28  Nathan Sidwell  <nathan@acm.org>
19712
19713         * gcc.c (execute): Fold SIGPIPE handling into switch
19714         statement.  Adjust internal error message.
19715
19716 2017-08-28  Richard Biener  <rguenther@suse.de>
19717
19718         PR debug/81993
19719         * dwarf2out.c (gen_remaining_tmpl_value_param_die_attributes):
19720         Do nothing for removed DIEs.
19721
19722 2017-08-28  Richard Biener  <rguenther@suse.de>
19723
19724         PR tree-optimization/81977
19725         * tree-ssa-sccvn.c (vn_reference_lookup_3): Fix look through
19726         memcpy.
19727
19728 2017-08-28  Alexander Monakov  <amonakov@ispras.ru>
19729
19730         PR target/80640
19731         * doc/md.texi (mem_thread_fence): Remove mention of mode.  Rewrite.
19732         * optabs.c (expand_mem_thread_fence): Emit a compiler barrier when
19733         using targetm.gen_mem_thread_fence.
19734
19735 2017-08-27  Uros Bizjak  <ubizjak@gmail.com>
19736
19737         PR target/81995
19738         * config/i386/i386.md (*<btsc><mode>): Change operand 2
19739         predicate to register_operand.  Reorder operands.
19740         (*btr<mode>): Ditto.
19741         (*<btsc><mode>_mask): Change operand 3 predicate to register_operand.
19742         (*btr<mode>_mask): Ditto.
19743
19744 2017-08-25  Steven Munroe  <munroesj@gcc.gnu.org>
19745
19746         * config.gcc (powerpc*-*-*): Add xmmintrin.h and mm_malloc.h.
19747         * config/rs6000/xmmintrin.h: New file.
19748         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include xmmintrin.h.
19749
19750 2017-08-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19751
19752         PR target/81504
19753         * config/rs6000/rs6000-p8swap.c (find_alignment_op): Add reference
19754         parameter and_insn and return it.
19755         (recombine_lvx_pattern): Insert a copy to ensure availability of
19756         the base register of the copied masking operation at the point of
19757         the instruction replacement.
19758         (recombine_stvx_pattern): Likewise.
19759
19760 2017-08-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
19761
19762         * config/rs6000/rs6000.opt (-mpower9-dform-scalar): Delete
19763         undocumented switches.
19764         (-mpower9-dform-vector): Likewise.
19765         (-mpower9-dform): Likewise.
19766         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Update
19767         comments to delete references to -mpower9-dform* switches.
19768         * config/rs6000/predicates.md (vsx_quad_dform_memory_operand):
19769         Delete reference to -mpower9-dform* switches, test for
19770         -mpower9-vector instead.
19771         * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Likewise.
19772         (OTHER_P9_VECTOR_MASKS): Likewise.
19773         (POWERPC_MASKS): Likewise.
19774         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Change
19775         tests against -mpower9-dform* to -mpower9-vector.  Delete code
19776         that checked for -mpower9-dform* consistancy with other options.
19777         Add test for -mpower9-misc to enable other power9 switches.
19778         (rs6000_init_hard_regno_mode_ok): Likewise.
19779         (rs6000_option_override_internal): Likewise.
19780         (rs6000_emit_prologue): Likewise.
19781         (rs6000_emit_epilogue): Likewise.
19782         (rs6000_opt_masks): Delete -mpower9-dform-{scalar,vector}.
19783         (rs6000_disable_incompatiable_switches): Delete -mpower9-dform.
19784         (emit_fusion_p9_load): Change tests for -mpower9-dform-scalar
19785         -mpower9-vector.
19786         (emit_fusion_p9_store): Likewise.
19787         * config/rs6000/rs6000.h (TARGET_P9_DFORM_SCALAR): Delete
19788         resetting these macros if the assembler does not support ISA 3.0
19789         instructions.
19790         (TARGET_P9_DFORM_VECTOR): Likewise.
19791         * config/rs6000/rs6000.md (peepholes to optimize altivec memory):
19792         Change to use -mpower9-vector instead of -mpower9-dform-scalar.
19793
19794 2017-08-25  Alan Modra  <amodra@gmail.com>
19795
19796         PR rtl-optimization/81747
19797         * cse.c (cse_extended_basic_block): Don't attempt to record
19798         equivalences for degenerate conditional branches that branch
19799         to their fall-through.
19800
19801 2017-08-24  Martin Sebor  <msebor@redhat.com>
19802
19803         PR middle-end/81908
19804         * gimple-fold.c (size_must_be_zero_p): New function.
19805         (gimple_fold_builtin_memory_op): Call it.
19806
19807 2017-08-24  Steven Munroe  <munroesj@gcc.gnu.org>
19808
19809         * config/rs6000/mm_malloc.h: New file.
19810
19811 2017-08-24  Bin Cheng  <bin.cheng@arm.com>
19812
19813         PR tree-optimization/81913
19814         * tree-ssa-loop-niter.c (number_of_iterations_cond): Skip niter
19815         analysis when either IVs in condition can wrap.
19816
19817 2017-08-24  Uros Bizjak  <ubizjak@gmail.com>
19818
19819         * dwarf2out.c (MAX_ARTIFICIAL_LABEL_BYTES): Increase to 40.
19820         * dwarf2cfi.c (MAX_ARTIFICIAL_LABEL_BYTES): Remove.
19821
19822 2017-08-24  Richard Biener  <rguenther@suse.de>
19823
19824         PR target/81921
19825         * targhooks.c (default_target_can_inline_p): Properly
19826         use target_option_default_node when no DECL_FUNCTION_SPECIFIC_TARGET
19827         is present and always compare.
19828         * config/i386/i386.c (ix86_valid_target_attribute_tree): Do not
19829         infer -mfpmath=sse from TARGET_SSE_P.
19830         (ix86_can_inline_p): Properly use target_option_default_node when
19831         no DECL_FUNCTION_SPECIFIC_TARGET is present and always compare.
19832
19833 2017-08-24  Richard Biener  <rguenther@suse.de>
19834
19835         PR debug/81936
19836         * dwarf2out.c (output_die): Handle flag_generate_offload like
19837         flag_generate_lto.
19838         (output_comp_unit): Likewise.
19839         (gen_array_type_die): Likewise.
19840         (dwarf2out_early_finish): Likewise.
19841         (note_variable_value_in_expr): Likewise.
19842         (dwarf2out_finish): Likewise.  Adjust assert.
19843         * cgraphunit.c (symbol_table::compile): Move setting of
19844         flag_generate_offload earlier ...
19845         (symbol_table::finalize_compilation_unit): ... here, before
19846         early debug finalization.
19847
19848 2017-08-24  Richard Biener  <rguenther@suse.de>
19849
19850         * config/i386/i386.c: Include symbol-summary.h, ipa-prop.h
19851         and ipa-fnsummary.h.
19852         (ix86_can_inline_p): When ix86_fpmath flags do not match
19853         check whether the callee uses FP math at all.
19854
19855 2017-08-24  Aldy Hernandez  <aldyh@redhat.com>
19856
19857         PR middle-end/81931
19858         * tree-ssanames.c (get_nonzero_bits): Use element_precision
19859         instead of TYPE_PRECISION.
19860
19861 2017-08-24  Richard Sandiford  <richard.sandiford@linaro.org>
19862             Alan Hayward  <alan.hayward@arm.com>
19863             David Sherwood  <david.sherwood@arm.com>
19864
19865         * combine.c (make_extraction): Use subreg_offset_from_lsb.
19866
19867 2017-08-23  Daniel Santos  <daniel.santos@pobox.com>
19868
19869         * config/i386/i386.h (ix86_frame::stack_realign_allocate_offset):
19870         Remove field.
19871         (ix86_frame::stack_realign_allocate): New field.
19872         (struct machine_frame_state): Modify comments.
19873         (machine_frame_state::sp_realigned_fp_end): New field.
19874         * config/i386/i386.c (ix86_compute_frame_layout): Rework stack frame
19875         layout calculation.
19876         (sp_valid_at): Add assertion to assure no attempt to access invalid
19877         offset of a realigned stack.
19878         (fp_valid_at): Likewise.
19879         (choose_baseaddr): Modify comments.
19880         (ix86_emit_outlined_ms2sysv_save): Adjust to changes in
19881         ix86_expand_prologue.
19882         (ix86_expand_prologue): Modify stack realignment and allocation.
19883         (ix86_expand_epilogue): Modify comments.
19884         * doc/sourcebuild.texi: Add documentation for target selectors avx2,
19885         avx2_runtime, avx512f, and avx512f_runtime.
19886
19887 2017-08-23  Uros Bizjak  <ubizjak@gmail.com>
19888
19889         * config/i386/i386.opt: Remove unneeded Init(0) initializations.
19890         (mstackrealign): Do not init to -1.
19891         * config/i386/i386.c (ix86_option_override_internal):
19892         Check opts_set, not opts when setting default value of
19893         opts->x_ix86_force_align_arg_pointer.
19894
19895 2017-08-23  Richard Biener  <rguenther@suse.de>
19896
19897         * function.c (fndecl_name): Use verbosity 1 (no arguments) for
19898         lang_hooks.decl_printable_name.
19899         * print-rtl-function.c (print_rtx_function): Likewise.
19900         * tree-pretty-print.c (dump_function_header): Likewise.
19901
19902 2017-08-23  Richard Biener  <rguenther@suse.de>
19903
19904         PR lto/81940
19905         * dwarf2out.c (dwarf2out_abstract_function): Handle LTO with
19906         -g0 at compile-time.
19907
19908 2017-08-23  Tamar Christina  <tamar.christina@arm.com>
19909
19910         PR middle-end/19706
19911         * doc/sourcebuild.texi (Other hardware attributes):
19912         Document xorsign.
19913
19914 2017-08-23  Tamar Christina  <tamar.christina@arm.com>
19915
19916         PR middle-end/19706
19917         * tree-ssa-math-opts.c (convert_expand_mult_copysign):
19918         Fix single-use check.
19919
19920 2017-08-23  Thomas Preud'homme  <thomas.preudhomme@arm.com>
19921
19922         * gcc.c (execute): Only test for SIGKILL and SIGQUIT if available.
19923
19924 2017-08-22  Daniel Santos  <daniel.santos@pobox.com>
19925
19926         * doc/install.texi: Modify to add more details on running selected
19927         tests.
19928
19929 2017-08-22  Daniel Santos  <daniel.santos@pobox.com>
19930
19931         * config/i386/i386.c (ix86_option_override_internal): Error when -mx32
19932         is combined with -mabi=ms.
19933         (ix86_function_type_abi): Limit errors for mixing -mx32 with attribute
19934         ms_abi.
19935
19936 2017-08-22  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
19937
19938         PR tree-optimization/81488
19939         * gimple-ssa-strength-reduction (struct slsr_cand_d): Add visited
19940         and cached_basis fields.
19941         (MAX_SPREAD): New constant.
19942         (alloc_cand_and_find_basis): Initialize new fields.
19943         (clear_visited): New function.
19944         (create_phi_basis_1): Rename from create_phi_basis, set visited
19945         and cached_basis fields.
19946         (create_phi_basis): New wrapper function.
19947         (phi_add_costs_1): Rename from phi_add_costs, add spread
19948         parameter, set visited field, short-circuit when limits reached.
19949         (phi_add_costs): New wrapper function.
19950         (record_phi_increments_1): Rename from record_phi_increments, set
19951         visited field.
19952         (record_phi_increments): New wrapper function.
19953         (phi_incr_cost_1): Rename from phi_incr_cost, set visited field.
19954         (phi_incr_cost): New wrapper function.
19955         (all_phi_incrs_profitable_1): Rename from
19956         all_phi_incrs_profitable, set visited field.
19957         (all_phi_incrs_profitable): New wrapper function.
19958
19959 2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
19960             Alan Hayward  <alan.hayward@arm.com>
19961             David Sherwood  <david.sherwood@arm.com>
19962
19963         * rtl.h (paradoxical_subreg_p): Define inline, and add a version
19964         that takes the outer and inner modes.
19965         * doc/rtl.texi: Use paradoxical_subreg_p instead of a GET_MODE_SIZE
19966         comparison as the canonical test for a paradoxical subreg.
19967         * combine.c (simplify_set): Use paradoxical_subreg_p.
19968         (make_extraction): Likewise.
19969         (force_to_mode): Likewise.
19970         (rtx_equal_for_field_assignment_p): Likewise.
19971         (gen_lowpart_for_combine): Likewise.
19972         (simplify_comparison): Likewise.
19973         * cse.c (equiv_constant): Likewise.
19974         * expmed.c (store_bit_field_1): Likewise.
19975         * final.c (alter_subreg): Likewise.
19976         * fwprop.c (propagate_rtx): Likewise.
19977         (forward_propagate_subreg): Likewise.
19978         * ira-conflicts.c (ira_build_conflicts): Likewise.
19979         * lower-subreg.c (simplify_gen_subreg_concatn): Likewise.
19980         * lra-constraints.c (curr_insn_transform): Likewise.
19981         (split_reg): Likewise.
19982         * lra-eliminations.c (move_plus_up): Likewise.
19983         (lra_eliminate_regs_1): Likewise.
19984         * recog.c (general_operand): Likewise.
19985         * ree.c (combine_reaching_defs): Likewise.
19986         * reload.c (push_reload): Likewise.
19987         (find_reloads): Likewise.
19988         * reload1.c (elimination_effects): Likewise.
19989         (compute_reload_subreg_offset): Likewise.
19990         (choose_reload_regs): Likewise.
19991         * rtlanal.c (subreg_lsb_1): Likewise.
19992         * simplify-rtx.c (simplify_unary_operation_1): Likewise.
19993         (simplify_subreg): Likewise.
19994         * var-tracking.c (track_loc_p): Likewise.
19995         * emit-rtl.c (byte_lowpart_offset): Likewise.
19996         (paradoxical_subreg_p): Delete out-of-line definition.
19997
19998 2017-08-22  Jeff Law  <law@redhat.com>
19999
20000         PR tree-optimization/81741
20001         PR tree-optimization/71947
20002         * tree-ssa-dom.c: Include tree-inline.h.
20003         (record_temporary_equivalences): Only record SSA_NAME = SSA_NAME
20004         equivalences if one is more expensive to compute than the other.
20005         * tree-ssa-scopedtables.h (class const_or_copies): Make
20006         record_const_or_copy_raw method private.
20007         (class avail_exprs_stack): New method simplify_binary_operation.
20008         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr): Call
20009         avail_exprs_stack::simplify_binary_operation as needed.
20010         (avail_exprs_stack::simplify_binary_operation): New function.
20011
20012 2017-08-22  Sebastian Huber  <sebastian.huber@embedded-brains.de>
20013
20014         * config.gcc (powerpc-*-rtems*): Add rs6000/linux64.opt.
20015         * config/rs6000/rtems.h (ASM_PREFERRED_EH_DATA_FORMAT): New define.
20016         (DOT_SYMBOLS): Likewise.
20017         (MINIMAL_TOC_SECTION_ASM_OP): Likewise.
20018         (RELOCATABLE_NEEDS_FIXUP): Likewise.
20019         (RS6000_ABI_NAME): Likewise.
20020         (TARGET_CMODEL): Likewise.
20021         (TOC_SECTION_ASM_OP): Likewise.
20022         (SET_CMODEL): New macro.
20023         (SUBSUBTARGET_OVERRIDE_OPTIONS): Evaluate cmodel options.
20024
20025 2017-08-22  Richard Biener  <rguenther@suse.de>
20026
20027         * tree-inline.c (remap_type_1): Change asserts on TYPE_SIZE[_UNIT]
20028         to allow for free-lang-data replacements similar to verify_type_variant.
20029
20030 2017-08-22  Richard Sandiford  <richard.sandiford@linaro.org>
20031             Alan Hayward  <alan.hayward@arm.com>
20032             David Sherwood  <david.sherwood@arm.com>
20033
20034         * config/aarch64/aarch64.md (casesi): Use DImode rather than
20035         VOIDmode for the LABEL_REF.
20036
20037 2017-08-22  Richard Biener  <rguenther@suse.de>
20038
20039         * tree-cfg.c (gimple_split_edge): Avoid reallocating target PHI nodes.
20040
20041 2017-08-22  Richard Biener  <rguenther@suse.de>
20042
20043         * common.opt (feliminate-dwarf2-dups): Ignore.
20044         * doc/invoke.texi (feliminate-dwarf2-dups): Remove documentation.
20045         * dwarf2out.c (push_new_compile_unit, pop_compile_unit,
20046         same_die_p_wrap, compute_section_prefix,
20047         is_symbol_die, assign_symbol_names, break_out_includes): Remove.
20048         (comdat_symbol_id, comdat_symbol_number): Likewise.
20049         (cu_hash_table_entry, cu_hash_table_entry_hasher, cu_hash_type):
20050         Likewise.
20051         (check_duplicate_cu, record_comdat_symbol_number): Likewise.
20052         (output_die): Mark unreachable path unreachable.
20053         (dwarf2out_start_source_file): Do not create DW_TAG_GNU_BINCL.
20054         (dwarf2out_end_source_file): Do not create DW_TAG_GNU_EINCL.
20055         (dwarf2out_init): Remove code handling flag_eliminate_dwarf2_dups.
20056         (dwarf2out_early_finish): Likewise.
20057
20058 2017-08-22  Aldy Hernandez  <aldyh@redhat.com>
20059
20060         * wide-int.h (hwi_with_prec::hwi_with_prec): Sign extend.
20061
20062 2017-08-22  Georg-Johann Lay  <avr@gjlay.de>
20063
20064         PR target/81910
20065         * config/avr/avr.c (avr_handle_addr_attribute): Early return if
20066         not VAR_P. Filter attribute warnings with OPT_Wattributes.
20067         (avr_attribute_table) <io, io_low, address>: Initialize
20068         .decl_required with true.
20069
20070 2017-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>
20071
20072         * config/rs6000/rs6000-cpus.def (-mvsx-scalar-float): Delete
20073         undocumented debugging options.
20074         (-mvsx-scalar-double): Likewise.
20075         (-mallow-df-permute): Likewise.
20076         (-mvectorize-builtins): Likewise.
20077         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
20078         (rs6000_builtin_vectorized_function): Likewise.
20079         (rs6000_builtin_md_vectorized_function): Likewise.
20080         (rs6000_opt_vars): Likewise.
20081
20082 2017-08-21  Uros Bizjak  <ubizjak@gmail.com>
20083
20084         PR target/46091
20085         * config/i386/i386.md (*btsq_imm): Rename from *btsq.
20086         (*btrq_imm): Rename from *btrq.
20087         (*btcq_imm): Rename from *btcq.
20088         (btsc): New code attribute.
20089         (*<btsc><mode>): New insn pattern.
20090         (*btr<mode>): Ditto.
20091         (*<btsc><mode>_mask): New insn_and_split pattern.
20092         (*btr<mode>_mask): Ditto.
20093
20094 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
20095             Alan Hayward  <alan.hayward@arm.com>
20096             David Sherwood  <david.sherwood@arm.com>
20097
20098         * function.c (pad_below): Simplify padding calculation.
20099
20100 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
20101             Alan Hayward  <alan.hayward@arm.com>
20102             David Sherwood  <david.sherwood@arm.com>
20103
20104         * target.def (function_prologue): Remove frame size argument.
20105         (function_epilogue): Likewise.
20106         * doc/tm.texi: Regenerate.
20107         * final.c (final_start_function): Update call to function_prologue.
20108         (final_end_function): Update call to function_epilogue.
20109         (default_function_pro_epilogue): Remove frame size argument.
20110         * output.h (default_function_pro_epilogue): Likewise.
20111         * config/arm/arm.c (arm_output_function_epilogue): Likewise.
20112         (arm_output_function_prologue): Likewise.
20113         * config/frv/frv.c (frv_function_prologue): Likewise.
20114         (frv_function_epilogue): Likewise.
20115         * config/i386/i386.c (ix86_output_function_epilogue): Likewise.
20116         * config/ia64/ia64.c (ia64_output_function_prologue): Likewise.
20117         (ia64_output_function_epilogue): Likewise.
20118         * config/m32r/m32r.c (m32r_output_function_prologue): Likewise.
20119         (m32r_output_function_epilogue): Likewise.
20120         * config/microblaze/microblaze.c (microblaze_function_prologue)
20121         (microblaze_function_epilogue): Likewise.
20122         * config/mips/mips.c (mips_output_function_prologue): Likewise.
20123         (mips_output_function_epilogue): Likewise.
20124         * config/mmix/mmix.c (mmix_target_asm_function_prologue): Likewise.
20125         (mmix_target_asm_function_epilogue): Likewise.
20126         * config/msp430/msp430.c (msp430_start_function): Likewise.
20127         * config/nds32/nds32.c (nds32_asm_function_prologue): Likewise.
20128         (nds32_asm_function_epilogue): Likewise.
20129         * config/nios2/nios2.c (nios2_asm_function_prologue): Likewise.
20130         * config/pa/pa.c (pa_output_function_prologue): Likewise.
20131         (pa_output_function_epilogue): Likewise.
20132         * config/powerpcspe/powerpcspe.c (rs6000_output_function_prologue)
20133         (rs6000_output_function_epilogue): Likewise.
20134         * config/rl78/rl78.c (rl78_start_function): Likewise.
20135         * config/rs6000/rs6000.c (rs6000_output_function_prologue): Likewise.
20136         (rs6000_output_function_epilogue): Likewise.
20137         * config/rx/rx.c (rx_output_function_prologue): Likewise.
20138         * config/sh/sh.c (sh_output_function_epilogue): Likewise.
20139         * config/sparc/sparc.c (sparc_asm_function_prologue): Likewise.
20140         (sparc_asm_function_epilogue): Likewise.
20141
20142 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
20143
20144         * tree.h (type_has_mode_precision_p): New function.
20145         * convert.c (convert_to_integer_1): Use it.
20146         * expr.c (expand_expr_real_2): Likewise.
20147         (expand_expr_real_1): Likewise.
20148         * fold-const.c (fold_single_bit_test_into_sign_test): Likewise.
20149         * match.pd: Likewise.
20150         * tree-ssa-forwprop.c (simplify_rotate): Likewise.
20151         * tree-ssa-math-opts.c (convert_mult_to_fma): Likewise.
20152         * tree-tailcall.c (process_assignment): Likewise.
20153         * tree-vect-loop.c (vectorizable_reduction): Likewise.
20154         * tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern)
20155         (vect_recog_mult_pattern, vect_recog_divmod_pattern): Likewise.
20156         * tree-vect-stmts.c (vectorizable_conversion): Likewise.
20157         (vectorizable_assignment): Likewise.
20158         (vectorizable_shift): Likewise.
20159         (vectorizable_operation): Likewise.
20160         * tree-vrp.c (register_edge_assert_for_2): Likewise.
20161
20162 2017-08-21  Wilco Dijkstra  <wdijkstr@arm.com>
20163
20164         * match.pd: Add pow (C, x) simplification.
20165
20166 2017-08-21  Richard Biener  <rguenther@suse.de>
20167
20168         PR tree-optimization/81900
20169         * tree-ssa-pre.c (compute_antic_aux): Properly compute changed
20170         for blocks with abnormal predecessors.
20171         (compute_antic): Do not set visited flag prematurely.
20172
20173 2017-08-21  Georg-Johann Lay  <avr@gjlay.de>
20174
20175         PR target/79883
20176         * config/avr/avr.c (avr_set_current_function): Typo in diagnostic.
20177
20178 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
20179
20180         * stor-layout.h (vector_type_mode): Move to...
20181         * tree.h (vector_type_mode): ...here.
20182         * stor-layout.c (vector_type_mode): Move to...
20183         * tree.c (vector_type_mode): ...here.  Include rtl.h and regs.h.
20184
20185 2017-08-21  Richard Biener  <rguenther@suse.de>
20186
20187         * debug.h (struct gcc_debug_hooks): Add die_ref_for_decl and
20188         register_external_die hooks.
20189         (debug_false_tree_charstarstar_uhwistar): Declare.
20190         (debug_nothing_tree_charstar_uhwi): Likewise.
20191         * debug.c (do_nothing_debug_hooks): Adjust.
20192         (debug_false_tree_charstarstar_uhwistar): New do nothing.
20193         (debug_nothing_tree_charstar_uhwi): Likewise.
20194         * dbxout.c (dbx_debug_hooks): Adjust.
20195         (xcoff_debug_hooks): Likewise.
20196         * sdbout.c (sdb_debug_hooks): Likewise.
20197         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
20198         * dwarf2out.c (macinfo_label_base): New global.
20199         (dwarf2out_register_external_die): New function for the
20200         register_external_die hook.
20201         (dwarf2out_die_ref_for_decl): Likewise for die_ref_for_decl.
20202         (dwarf2_debug_hooks): Use them.
20203         (dwarf2_lineno_debug_hooks): Adjust.
20204         (struct die_struct): Add with_offset flag.
20205         (DEBUG_LTO_DWO_INFO_SECTION, DEBUG_LTO_INFO_SECTION,
20206         DEBUG_LTO_DWO_ABBREV_SECTION, DEBUG_LTO_ABBREV_SECTION,
20207         DEBUG_LTO_DWO_MACINFO_SECTION, DEBUG_LTO_MACINFO_SECTION,
20208         DEBUG_LTO_DWO_MACRO_SECTION, DEBUG_LTO_MACRO_SECTION,
20209         DEBUG_LTO_LINE_SECTION, DEBUG_LTO_DWO_STR_OFFSETS_SECTION,
20210         DEBUG_LTO_STR_DWO_SECTION, DEBUG_STR_LTO_SECTION): New macros
20211         defining section names for the early LTO debug variants.
20212         (reset_indirect_string): New helper.
20213         (add_AT_external_die_ref): Helper for dwarf2out_register_external_die.
20214         (print_dw_val): Add support for offsetted symbol references.
20215         (get_ultimate_context): Split out from is_cxx.
20216         (is_cxx): Use get_ultimate_context.
20217         (is_fortran): Add decl overload.
20218         (compute_comp_unit_symbol): Split out worker from
20219         compute_section_prefix.
20220         (compute_section_prefix): Call compute_comp_unit_symbol and
20221         set comdat_type_p here.
20222         (output_die): Skip DIE symbol output for the LTO added one.
20223         Handle DIE symbol references with offset.
20224         (output_comp_unit): Guard section name mangling properly.
20225         For LTO debug sections emit a symbol at the section beginning
20226         which we use to refer to its DIEs.
20227         (add_abstract_origin_attribute): For DIEs registered via
20228         dwarf2out_register_external_die directly refer to the early
20229         DIE rather than indirectly through the shadow one we created.
20230         Remove obsolete call to dwarf2out_abstract_function for
20231         non-function/block origins.
20232         (gen_array_type_die): When generating early LTO debug do
20233         not emit DW_AT_string_length.
20234         (gen_formal_parameter_die): Do not re-create DIEs for PARM_DECLs
20235         late when in LTO.  As suggested place a gcc_unreachable for
20236         the DECL_ABSTRACT_P case.
20237         (gen_subprogram_die): Avoid another specification DIE
20238         for early built declarations/definitions for the late LTO case.
20239         (gen_variable_die): Add type references for late duplicated VLA dies
20240         when in late LTO.
20241         (gen_inlined_subroutine_die): Do not call dwarf2out_abstract_function,
20242         we have the abstract instance already.
20243         (process_scope_var): Adjust decl DIE contexts in LTO which
20244         first puts them in limbo.
20245         (gen_decl_die): Do not generate type DIEs late apart from
20246         types for VLAs or for decls we do not yet have a DIE.  Do not
20247         call dwarf2out_abstract_function late.
20248         (dwarf2out_early_global_decl): Make sure to create DIEs
20249         for abstract instances of a decl first.
20250         (dwarf2out_late_global_decl): Adjust comment.
20251         (output_macinfo_op): With multiple macro sections use
20252         macinfo_label_base to distinguish labels.
20253         (output_macinfo): Likewise.  Update macinfo_label_base.
20254         Pass in the line info label.
20255         (note_variable_value_in_expr): When generating LTO resolve
20256         all variable values here by generating DIEs as needed.
20257         (init_sections_and_labels): Add early LTO debug flag parameter
20258         and generate different sections and names if set.  Add generation
20259         counter for the labels so we can have multiple of them.
20260         (reset_dies): Helper to allow DIEs to be output multiple times.
20261         (dwarf2out_finish): When outputting DIEs to the fat part of an
20262         LTO object first reset DIEs.
20263         (dwarf2out_early_finish): Output early DIEs when generating LTO.
20264         (modified_type_die): Check for decl_ultimate_origin being self
20265         before recursing.
20266         (gen_type_die_with_usage): Likewise.
20267         (gen_typedef_die): Allow decl_ultimate_origin being self.
20268         (set_decl_abstract_flags): Remove.
20269         (set_block_abstract_flags): Likewise.
20270         (dwarf2out_abstract_function): Treat the early generated DIEs
20271         as the abstract copy and only add DW_AT_inline and
20272         DW_AT_artificial here and call set_decl_origin_self.
20273         If the DIE has an abstract origin don't do anything.
20274         * tree.c (free_lang_data): Build a dummy TRANSLATION_UNIT_DECL
20275         if we have none yet (Go fails to build one, PR78628).
20276         (variably_modified_type_p): Prevent endless recursion for Ada
20277         cyclic pointer types.
20278         * lto-streamer-in.c: Include debug.h.
20279         (dref_queue): New global.
20280         (lto_read_tree_1): Stream in DIE references.
20281         (lto_input_tree): Register DIE references.
20282         (input_function): Stream DECL_DEBUG_ARGS.
20283         * lto-streamer-out.c: Include debug.h.
20284         (lto_write_tree_1): Output DIE references.
20285         (DFS::DFS_write_tree_body): Follow DECL_ABSTRACT_ORIGIN.
20286         Force a TRANSLATION_UNIT_DECL DECL_CONTEXT for file-scope decls.
20287         (output_function): Stream DECL_DEBUG_ARGS.
20288         * tree-streamer-in.c (lto_input_ts_decl_common_tree_pointers):
20289         Stream DECL_ABSTRACT_ORIGIN.
20290         * tree-streamer-out.c (write_ts_decl_common_tree_pointers): Likewise.
20291         (write_ts_decl_minimal_tree_pointers): Force a TRANSLATION_UNIT_DECL
20292         DECL_CONTEXT for file-scope decls.
20293         * lto-streamer.h (struct dref_entry): Declare.
20294         (dref_queue): Likewise.
20295         * cfgexpand.c (pass_expand::execute): Do not call the
20296         outlining_inline_function hook here.
20297         * lto-wrapper.c (debug_obj): New global.
20298         (tool_cleanup): Unlink it if required.
20299         (debug_objcopy): New function.
20300         (run_gcc): Handle early debug sections in the IL files by
20301         extracting them to separate files, partially linkin them and
20302         feeding the result back as result to the linker.
20303         * config/darwin.h (DEBUG_LTO_INFO_SECTION, DEBUG_LTO_ABBREV_SECTION,
20304         DEBUG_LTO_MACINFO_SECTION, DEBUG_LTO_LINE_SECTION,
20305         DEBUG_STR_LTO_SECTION, DEBUG_LTO_MACRO_SECTION): Put early debug
20306         sections into a separate segment.
20307         * config/darwin.c (darwin_asm_named_section): Handle __GNU_DWARF_LTO
20308         segments.
20309         (darwin_asm_dwarf_section): Likewise.
20310         (darwin_asm_output_dwarf_offset): Likewise.
20311         * config/i386/i386.c (make_resolver_func): Set DECL_IGNORED_P.
20312
20313 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
20314             Alan Hayward  <alan.hayward@arm.com>
20315             David Sherwood  <david.sherwood@arm.com>
20316
20317         * read-md.h (md_reader::record_potential_iterator_use): Replace
20318         pointer argument with an rtx and an index.
20319         * read-rtl.c (iterator_group::apply_iterator): Likewise.
20320         (apply_mode_iterator): Likewise.
20321         (apply_code_iterator): Likewise.
20322         (apply_int_iterator): Likewise.
20323         (apply_subst_iterator): Likewise.
20324         (record_iterator_use): Likewise.
20325         (record_attribute_use): Likewise.
20326         (md_reader::record_potential_iterator_use): Likewise.  Update calls
20327         to record_iterator_use and apply_iterator.
20328         (iterator_use): Replace ptr with x and index.
20329         (attribute_use): Likewise.
20330         (apply_attribute_uses): Update calls to apply_iterator.
20331         (apply_iterators): Likewise.  Update initialization of iterator_use.
20332         (rtx_reader::read_rtx_code): Update calls to record_iterator_use
20333         and record_potential_iterator_use.
20334         (rtx_reader::read_rtx_operand): Likewise.
20335
20336 2017-08-21  Richard Sandiford  <richard.sandiford@linaro.org>
20337             Alan Hayward  <alan.hayward@arm.com>
20338             David Sherwood  <david.sherwood@arm.com>
20339
20340         * varasm.c (const_rtx_hash_1): Don't hash in the mode of a
20341         CONST_WIDE_INT.
20342
20343 2017-08-21  Richard Biener  <rguenther@suse.de>
20344
20345         PR middle-end/81884
20346         * tree-ssa-alias.c (stmt_kills_ref_p): Handle array accesses
20347         at struct end conservatively when comparing common bases.
20348
20349 2017-08-21  Richard Biener  <rguenther@suse.de>
20350
20351         * tree-ssa-loop-im.c (struct lim_aux_data): Add ref index member.
20352         (mem_ref_in_stmt): Remove.
20353         (determine_max_movement): Use ref index to get at the reference.
20354         (invariantness_dom_walker::before_dom_children): Deal with
20355         lim data already initialized.
20356         (gather_mem_refs_stmt): Initialize lim data and record ref index.
20357
20358 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
20359
20360         * config/i386/i386.h (OPTION_MASK_ISA_ROUND): Remove.
20361         (TARGET_ISA_ROUND): Ditto.
20362         (TARGET_ROUND): Ditto.
20363         * config/i386/i386.c: Substitute TARGET_ROUND with TARGET_SSE4_1.
20364         * config/i386/i386.md: Ditto.
20365         * config/i386/sse.md: Ditto.
20366         * config/i386/i386-builtin.def: Substitute OPTION_MASK_ISA_ROUND
20367         with OPTION_MASK_ISA_SSE4_1.
20368
20369 2017-08-19  Uros Bizjak  <ubizjak@gmail.com>
20370
20371         PR target/81894
20372         * doc/extend.texi (x86 Built-in Functions): Correct the name of
20373         __builtin_ia32_lzcnt_u16.
20374
20375 2017-08-18  Peter Bergner  <bergner@vnet.ibm.com>
20376
20377         PR target/80210
20378         * config/rs6000/rs6000.c (rs6000_activate_target_options): New function.
20379         (rs6000_set_current_function): Rewrite function to use it.
20380
20381 2017-08-18  H.J. Lu  <hongjiu.lu@intel.com>
20382
20383         PR c/53037
20384         * print-tree.c (print_node): Support DECL_WARN_IF_NOT_ALIGN
20385         and TYPE_WARN_IF_NOT_ALIGN.
20386         * stor-layout.c (do_type_align): Merge DECL_WARN_IF_NOT_ALIGN.
20387         (handle_warn_if_not_align): New.
20388         (place_union_field): Call handle_warn_if_not_align.
20389         (place_field): Call handle_warn_if_not_align.
20390         Copy TYPE_WARN_IF_NOT_ALIGN.
20391         (finish_builtin_struct): Copy TYPE_WARN_IF_NOT_ALIGN.
20392         (layout_type): Likewise.
20393         * tree-core.h (tree_type_common): Add warn_if_not_align.  Set
20394         spare to 18.
20395         (tree_decl_common): Add warn_if_not_align.
20396         * tree.c (build_range_type_1): Copy TYPE_WARN_IF_NOT_ALIGN.
20397         * tree.h (TYPE_WARN_IF_NOT_ALIGN): New.
20398         (SET_TYPE_WARN_IF_NOT_ALIGN): Likewise.
20399         (DECL_WARN_IF_NOT_ALIGN): Likewise.
20400         (SET_DECL_WARN_IF_NOT_ALIGN): Likewise.
20401         * doc/extend.texi: Document warn_if_not_aligned attribute.
20402         * doc/invoke.texi: Document -Wif-not-aligned and -Wpacked-not-aligned.
20403
20404 2017-08-17  Martin Liska  <mliska@suse.cz>
20405
20406         PR bootstrap/81864
20407         * tree-loop-distribution.c (ddrs_table): Change type to pointer type.
20408         (get_data_dependence): Use it as pointer type.
20409         (distribute_loop): Likewise.
20410
20411 2017-08-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20412
20413         * config/rs6000/altivec.md (UNSPEC_VMRGOW_DIRECT): New constant.
20414         (p8_vmrgew_v4sf_direct): Generalize to p8_vmrgew_<mode>_direct.
20415         (p8_vmrgow_<mode>_direct): New define_insn.
20416         * config/rs6000/rs6000.c (altivec_expand_vec_perm_const): Properly
20417         handle endianness for vmrgew and vmrgow permute patterns.
20418
20419 2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
20420
20421         * config/rs6000/altivec.md (VParity): Remove TARGET_VSX_TIMODE.
20422         * config/rs6000/rs6000-cpus.def: Remove comment.
20423         (ISA_2_7_MASKS_SERVER): Delete OPTION_MASK_VSX_TIMODE;
20424         (POWERPC_MASKS): Likewise.
20425         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Remove unneeded
20426         use of TARGET_VSX_TIMODE.
20427         (rs6000_setup_reg_addr_masks): Change TARGET_VSX_TIMODE to TARGET_VSX.
20428         (rs6000_init_hard_regno_mode_ok): Remove unneeded uses of
20429         TARGET_VSX_TIMODE.  Change use of TARGET_VSX_TIMODE to TARGET_VSX.
20430         (rs6000_option_override_internal): Remove dead code.
20431         (rs6000_legitimize_address): Change TARGET_VSX_TIMODE to TARGET_VSX.
20432         (rs6000_legitimize_reload_address): Likewise.
20433         (rs6000_legitimate_address_p): Likewise.
20434         (rs6000_opt_masks): Delete "vsx-timode".
20435         (rs6000_disable_incompatible_switches): Remove mention of -mvsx-timode
20436         from function comment.
20437         * config/rs6000/rs6000.h (MASK_VSX_TIMODE): Delete.
20438         * config/rs6000/rs6000.md (FMOVE128_GPR): Remove TARGET_VSX_TIMODE.
20439         (V16QI, V8HI, V4SI, V4SF, V2DI, V2DF, V1TI): Remove useless empty
20440         condition.
20441         * config/rs6000/rs6000.opt (mvsx-timode): Replace with stub.
20442         * config/rs6000/vector.md (VEC_IP): Remove TARGET_VSX_TIMODE.
20443         * config/rs6000/vsx.md (VSX_LE_128): Likewise.
20444         (VSX_TI): Likewise.
20445         (VSX_M): Likewise.
20446         (define_peephole2): Likewise.
20447
20448 2017-08-17  Martin Sebor  <msebor@redhat.com>
20449
20450         PR c/81859
20451         * pretty-print.c (pp_format): Use strnlen in %.*s to avoid reading
20452         past the end of an array.
20453         (test_pp_format): Add test cases.
20454
20455 2017-08-17  Richard Sandiford  <richard.sandiford@linaro.org>
20456
20457         * internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): Add
20458         missing ECF_NOTHROW flags.
20459
20460 2017-08-17  Peter Bergner  <bergner@vnet.ibm.com>
20461
20462         PR target/72804
20463         * config/rs6000/vsx.md (*vsx_le_permute_<mode>): Add support for
20464         operands residing in integer registers.
20465         (*vsx_le_perm_load_<mode>): Likewise.
20466         (*vsx_le_perm_store_<mode>): Likewise.
20467         (define_peephole2): Add peepholes to optimize the above.
20468
20469 2017-08-17  Marek Polacek  <polacek@redhat.com>
20470
20471         PR middle-end/81814
20472         * fold-const.c (operand_equal_for_comparison_p): Remove code that used
20473         to mimic what shorten_compare did.  Change the return type to bool.
20474         (fold_cond_expr_with_comparison): Update call to
20475         operand_equal_for_comparison_p.
20476         (fold_ternary_loc): Likewise.
20477
20478 2017-08-17  Jackson Woodruff  <jackson.woodruff@arm.com>
20479
20480         * aarch64-simd.md (mov<mode>): No longer force zero immediate into
20481         register.
20482         (*aarch64_simd_mov<mode>): Add new case for stp using zero immediate.
20483
20484 2017-08-17  Richard Biener  <rguenther@suse.de>
20485
20486         * tree-ssa-structalias.c (solve_graph): When propagating
20487         to successors update the graphs succ edges and avoid duplicate work.
20488
20489 2017-08-17  Maxim Ostapenko  <m.ostapenko@samsung.com>
20490
20491         PR target/81861
20492         * config/i386/i386.c (ix86_option_override_internal): Save target
20493         specific options after ix86_stack_protector_guard_reg was changed.
20494
20495 2017-08-17  Richard Biener  <rguenther@suse.de>
20496
20497         PR tree-optimization/81827
20498         * tree-ssa-structalias.c (struct variable_info): Add is_reg_var flag.
20499         (new_var_info): Initialize it conservatively.
20500         (get_call_vi): Mark register vars.
20501         (new_scalar_tmp_constraint_exp): Likewise.
20502         (handle_rhs_call): Likewise.
20503         (handle_const_call): Likewise.
20504         (create_function_info_for): Likewise.
20505         (solve_constraints): Sort varinfos to separate register from
20506         non-register vars to pack points-to solution bitmaps during
20507         iteration.
20508
20509 2017-08-17  Marek Polacek  <polacek@redhat.com>
20510
20511         * gimplify.c (gimplify_adjust_omp_clauses): Compare with 0 instead of 1.
20512
20513 2017-08-17  Richard Biener  <rguenther@suse.de>
20514
20515         * tree-vrp.c (vrp_int_const_binop): Do not set *overflow_p
20516         to true when overflow is undefined and we saturated the result.
20517
20518 2017-08-17  Alan Modra  <amodra@gmail.com>
20519
20520         PR target/80938
20521         * config/rs6000/rs6000.c (rs6000_savres_strategy): Revert 2017-08-09.
20522         Don't use store multiple if only one reg needs saving.
20523         (interesting_frame_related_regno): New function.
20524         (rs6000_frame_related): Don't emit frame info for regs that
20525         don't need saving.
20526         (rs6000_emit_epilogue): Likewise.
20527
20528 2017-08-16  Nathan Sidwell  <nathan@acm.org>
20529
20530         * tree-core.h (tree_type_non_common): Rename binfo to lang_1.
20531         * tree.h (TYPE_BINFO): Use type_non_common.maxval.
20532         (TYPE_LANG_SLOT_1): Use type_non_common.lang_1, for any type.
20533         * tree.c (free_lang_data_in_type): Use else-if chain.  Always
20534         clear TYPE_LANG_1.  Remove obsolete member-function stripping.
20535         (find_decls_types_r): Comment about TYPE_MAX_VALUES_RAW.
20536         (verify_type): Adjust for TYPE_BINFO move.
20537         * lto-streamer-out.c (DFS::DFS_write_tree_body): No need to
20538         process TYPE_BINFO directly.
20539         (hash_tree): Likewise.
20540         * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
20541         Likewise.
20542         * tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
20543         Likewise.
20544
20545 2017-08-16  David Malcolm  <dmalcolm@redhat.com>
20546
20547         * diagnostic-show-locus.c (colorizer::m_caret): Remove unused field.
20548
20549 2017-08-16  Uros Bizjak  <ubizjak@gmail.com>
20550
20551         PR target/46091
20552         * config/i386/i386.md (*anddi_1_btr): Change predicates of
20553         operand 0 and operand 1 to nomimmediate_operand. Add "m" constraint.
20554         Add ix86_binary_operator_ok to insn constraint.
20555         (*iordi_1_bts): Ditto.
20556         (*xordi_1_btc): Ditto.
20557         (*btsq): Change predicate of operand 0 to nonimmediate_operand.
20558         Update corresponding peephole2 pattern.
20559         (*btrq): Ditto.
20560         (*btcq): Ditto.
20561
20562 2017-08-16  Bin Cheng  <bin.cheng@arm.com>
20563
20564         PR tree-optimization/81832
20565         * tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Don't
20566         copy loop header which has IFN_LOOP_DIST_ALIAS call.
20567
20568 2017-08-16  Marek Polacek  <polacek@redhat.com>
20569
20570         PR middle/81695
20571         * fold-const.c (fold_indirect_ref_1): Restore original behavior
20572         regarding size_zero_node.
20573
20574 2017-08-16  Martin Liska  <mliska@suse.cz>
20575
20576         PR target/81753
20577         * config.gcc: Respect previously set extra_objs in case
20578         of darwin target.
20579
20580 2017-08-16  Richard Sandiford  <richard.sandiford@linaro.org>
20581
20582         PR tree-optimization/81835
20583         * tree-vect-loop.c (vect_is_simple_reduction): Simply checks for
20584         the phi SSA_NAME.  Check that the condition in a COND_EXPR does
20585         not depend on the phi.
20586
20587 2017-08-16  Alan Modra  <amodra@gmail.com>
20588
20589         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Delete
20590         dead code.
20591
20592 2017-08-16  Alan Modra  <amodra@gmail.com>
20593
20594         * config/rs6000/rs6000.c (rs6000_reg_live_or_pic_offset_p): Merge..
20595         (save_reg_p): ..into this.  Update all callers.
20596         (first_reg_to_save): Simplify.
20597
20598 2017-08-16  Alan Modra  <amodra@gmail.com>
20599
20600         * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't restore
20601         fixed regs.
20602
20603 2017-08-15  Joseph Myers  <joseph@codesourcery.com>
20604
20605         PR target/78460
20606         PR target/67712
20607         * config/sh/sh-mem.cc (sh_expand_cmpnstr): Only unroll for
20608         constant count if that count is less than 32.
20609
20610 2017-08-15  Nathan Sidwell  <nathan@acm.org>
20611
20612         * gcc.c (execute): Emit friendlier message if inferior is killed
20613         by an external cause.
20614
20615 2017-08-15  Richard Biener  <rguenther@suse.de>
20616
20617         PR tree-optimization/81790
20618         * tree-ssa-sccvn.c (vn_lookup_simplify_result): Handle both
20619         CONSTRUCTORs from simplifying and VN.
20620
20621 2017-08-14  Martin Sebor  <msebor@redhat.com>
20622
20623         * builtin-attrs.def: Add comments.
20624
20625 2017-08-14  Martin Sebor  <msebor@redhat.com>
20626
20627         PR c/81117
20628         * doc/extend.texi (attribute nonstring): Document new attribute.
20629
20630 2017-08-14  Martin Sebor  <msebor@redhat.com>
20631
20632         PR c/81117
20633         * tree-diagnostic.c (default_tree_printer): Handle %G.
20634         * gimple-pretty-print.h (percent_G_format): Declare new function.
20635         * gimple-pretty-print.c (percent_G_format): Define.
20636         * tree-pretty-print.c (percent_K_format): Add argument.
20637
20638 2017-08-14  Martin Sebor  <msebor@redhat.com>
20639
20640         PR translation/79998
20641         * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call):
20642         Remove a stray space.
20643
20644 2017-08-14  Uros Bizjak  <ubizjak@gmail.com>
20645
20646         PR target/46091
20647         * config/i386/i386.md (*anddi_1_btr): New insn_and_split pattern.
20648         (*iordi_1_bts): Ditto.
20649         (*xordi_1_btc): Ditto.
20650
20651 2017-08-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20652
20653         PR target/79845
20654         * config/rs6000/linux64.h (INVALID_64BIT): Use quoted strings.
20655         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
20656         Likewise.
20657         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Use
20658         quoted strings, and make more translator-friendly.
20659         (darwin_rs6000_override_options): Likewise.
20660         (rs6000_option_override_internal): Likewise.
20661         (rs6000_return_in_memory): Fix overlong line.
20662         (init_cmulative_args): Use quoted strings, and make more
20663         translator-friendly.
20664         (rs6000_pass_by_reference): Fix overlong line.
20665         (def_builtin): Use quoted strings.
20666         (altivec_expand_predicate_builtin): Use quoted strings, and make
20667         more translator-friendly.
20668         (htm_expand_builtin): Use quoted strings.
20669         (cpu_expand_builtin): Use quoted strings, and make more
20670         translator-friendly.
20671         (altivec_expand_builtin): Likewise.
20672         (paired_expand_predicate_builtin): Likewise.
20673         (rs6000_invalid_builtin): Likewise.
20674         (builtin_function_type): Use quoted strings.
20675         (rs6000_expand_split_stack_prologue): Use quoted strings, and make
20676         more translator-friendly.
20677         (rs6000_trampoline_init): Likewise.
20678         (rs6000_handle_altivec_attribute): Likewise.
20679         (rs6000_inner_target_options): Use quoted strings.
20680         (rs6000_disable_incompatible_switches): Likewise.
20681         * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Use quoted
20682         strings, and make more translator-friendly.
20683         (SUBSUBTARGET_OVERRIDE_OPTIONS): Use quoted strings.
20684
20685 2017-08-14  Bin Cheng  <bin.cheng@arm.com>
20686
20687         PR tree-optimization/81799
20688         * tree-loop-distribution.c (version_loop_by_alias_check): Force
20689         cond_expr to simple gimple operand.
20690
20691 2017-08-14  Wilco Dijkstra  <wdijkstr@arm.com>
20692
20693         PR middle-end/46932
20694         * doc/sourcebuild.texi (autoincdec): Add autoincdec description.
20695
20696 2017-08-14  Georg-Johann Lay  <avr@gjlay.de>
20697
20698         PR target/81754
20699         PR target/81268
20700         * config/avr/avr.opt (mgas-isr-prologues): New Var avr_gasisr_prologues.
20701         * config/avr/avr.md (gasisr, *gasisr): Use it instead of
20702         TARGET_GASISR_PROLOGUES.
20703         * config/avr/avr.c (avr_option_override): Same.
20704         (avr_pass_pre_proep::execute): Same.
20705
20706 2017-08-13  H.J. Lu  <hongjiu.lu@intel.com>
20707
20708         PR target/81820
20709         * config/i386/i386.c (ix86_finalize_stack_frame_flags): Replace
20710         frame pointer with stack pointer - UNITS_PER_WORD in debug insns.
20711
20712 2017-08-13  Uros Bizjak  <ubizjak@gmail.com>
20713
20714         * config/i386/i386.md (*load_tp_<mode>): Redefine as
20715         define_insn_and_split.  Split to a memory load from 0 in
20716         DEFAULT_TLS_SEG_REG address space.  Merge with *load_tp_x32
20717         using PTR mode iterator.
20718         (*load_tp_x32_zext"): Redefine as define_insn_and_split.
20719         Split to a memory load from 0 in DEFAULT_TLS_SEG_REG address space.
20720         (*add_tp_<mode>): Redefine as define_insn_and_split.
20721         Split to an add with a memory load from 0 in DEFAULT_TLS_SEG_REG
20722         address space.  Merge with *add_tp_x32 using PTR mode iterator.
20723         (*add_tp_x32_zext"): Redefine as define_insn_and_split.
20724         Split to an add with a  memory load from 0 in
20725         DEFAULT_TLS_SEG_REG address space.
20726
20727 2017-08-12  Andrew Pinski  <apinski@cavium.com>
20728
20729         * config/aarch64/aarch64-option-extensions.def (rdma):
20730         Fix feature string to what Linux prints out in /proc/cpuinfo.
20731
20732 2017-08-12  Pierre-Marie de Rodat  <derodat@adacore.com>
20733
20734         PR ada/79542
20735         * dwarf2out.c (modified_type_die): For C typedef types that have
20736         an ultimate origin, process the ultimate origin instead of the
20737         input type.
20738         (gen_typedef_die): Assert that input DECLs have no ultimate
20739         origin.
20740         (gen_type_die_with_usage): For typedef variants that have an
20741         ultimate origin, just call gen_decl_die on the original DECL.
20742         (process_scope_var): Avoid creating DIEs for local typedefs and
20743         concrete static variables.
20744
20745 2017-08-12  Alan Modra  <amodra@gmail.com>
20746
20747         PR target/81170
20748         PR target/81295
20749         * config/rs6000/sysv4.h (STARTFILE_LINUX_SPEC): Upgrade to
20750         match gnu-user.h startfile.
20751         (ENDFILE_LINUX_SPEC): Similarly.
20752
20753 2017-08-11  Thomas Schwinge  <thomas@codesourcery.com>
20754
20755         PR lto/81430
20756         * config/nvptx/nvptx.c (nvptx_override_options_after_change):
20757         Remove function.
20758         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Remove definition.
20759
20760 2017-08-11  Tamar Christina  <tamar.christina@arm.com>
20761         * config/aarch64/aarch64.md (mov<mode>): Change.
20762         (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
20763         aarch64_reg_or_fp_float into aarch64_reg_or_fp_zero.
20764         * config/aarch64/predicates.md (aarch64_reg_or_fp_float): Removed.
20765
20766 2017-08-11  Eric Botcazou  <ebotcazou@adacore.com>
20767
20768         * tree-sra.c (build_access_from_expr_1): Use more precise diagnostics
20769         for storage order barriers.
20770
20771 2017-08-11  Martin Liska  <mliska@suse.cz>
20772
20773         PR tree-opt/79987
20774         * tree-chkp.c (chkp_get_bounds_for_decl_addr): Do not instrument
20775         variables of void type.
20776
20777 2017-08-11  Martin Liska  <mliska@suse.cz>
20778
20779         * asan.c (asan_protect_global): Replace ASM_OUTPUT_DEF with
20780         TARGET_SUPPORTS_ALIASES.
20781         * cgraph.c (cgraph_node::create_same_body_alias): Likewise.
20782         * ipa-visibility.c (can_replace_by_local_alias): Likewise.
20783         (optimize_weakref): Likewise.
20784         * symtab.c (symtab_node::noninterposable_alias): Likewise.
20785         * varpool.c (varpool_node::create_extra_name_alias): Likewise.
20786         * defaults.h: Introduce TARGET_SUPPORTS_ALIASES.
20787
20788 2017-08-11  Martin Liska  <mliska@suse.cz>
20789
20790         PR ipa/81213
20791         * config/i386/i386.c (make_resolver_func): Do complete
20792         refactoring of the function.
20793
20794 2017-08-10  Uros Bizjak  <ubizjak@gmail.com>
20795
20796         PR target/81708
20797         * config/i386/i386.opt (mstack-protector-guard-symbol=): New option
20798         * config/i386/i386.c (ix86_stack_protect_guard): Use
20799         ix86_stack_protect_guard_symbol_str to generate varible declaration.
20800         * doc/invoke.texi (x86 Options): Document
20801         -mstack-protector-guard-symbol= option.
20802
20803 2017-08-10  Uros Bizjak  <ubizjak@gmail.com>
20804
20805         * config/i386/i386-protos.h (ix86_split_stack_guard): New prototype.
20806         * config/i386/i386.c (ix86_split_stack_guard): New function.
20807         (ix86_xpand_split_stack_prologue): Call ix86_split_stack_guard.
20808         (ix86_legitimate_address_p) <case UNSPEC_STACK_CHECK>: Remove.
20809         (i386_asm_output_addr_const_extra) <case UNSPEC_STACK_CHECK>: Ditto.
20810         (optput_pic_addr_const): Remove UNSPEC_STACK_CHECK handling.
20811         * config/i386/i386.md (unspec): Remove UNSPEC_STACK_CHECK.
20812         (split_stack_space_check): Call ix86_split_stack_guard.
20813
20814 2017-08-10  Martin Sebor  <msebor@redhat.com>
20815
20816         * print-tree.c (print_node): Print location using the established
20817         format %s:%i%i.
20818         Replace spaces with colons.
20819         (debug_raw, debug): Ditto.
20820
20821 2017-08-10  Martin Sebor  <msebor@redhat.com>
20822
20823         PR c++/81586
20824         * pretty-print.c (pp_format): Correct the handling of %s precision.
20825
20826 2017-08-10  H.J. Lu  <hongjiu.lu@intel.com>
20827
20828         PR target/81736
20829         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
20830         to ...
20831         (ix86_finalize_stack_frame_flags): This.  Also clear
20832         frame_pointer_needed if -fno-omit-frame-pointer is used without
20833         stack access.
20834         (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
20835         with ix86_finalize_stack_frame_flags.
20836         (ix86_expand_epilogue): Likewise.
20837         (ix86_expand_split_stack_prologue): Likewise.
20838         * doc/invoke.texi: Add a note for -fno-omit-frame-pointer.
20839
20840 2017-08-10  Martin Liska  <mliska@suse.cz>
20841
20842         PR c++/81355
20843         * c-attribs.c (handle_target_attribute):
20844         Report warning for an empty string argument of target attribute.
20845
20846 2017-08-09  Jakub Jelinek  <jakub@redhat.com>
20847
20848         PR c/81687
20849         * omp-low.c (omp_copy_decl): Don't remap FORCED_LABEL or DECL_NONLOCAL
20850         LABEL_DECLs.
20851         * tree-cfg.c (move_stmt_op): Don't adjust DECL_CONTEXT of FORCED_LABEL
20852         or DECL_NONLOCAL labels.
20853         (move_stmt_r) <case GIMPLE_LABEL>: Adjust DECL_CONTEXT of FORCED_LABEL
20854         or DECL_NONLOCAL labels here.
20855
20856 2017-08-09  Will Schmidt  <will_schmidt@vnet.ibm.com>
20857
20858         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add blurb
20859         to indicate when early gimple folding has been disabled.
20860         (rs6000_gimple_fold_builtin): Add debug content.
20861         (rs6000_invalid_builtin): Fix whitespace.
20862         (rs6000_expand_builtin): Fix whitespace.
20863         * config/rs6000/rs6000.opt: Add option for -mfold-gimple.
20864
20865 2017-08-09  Segher Boessenkool  <segher@kernel.crashing.org>
20866
20867         PR target/80938
20868         * config/rs6000/rs6000.c (rs6000_savres_strategy): Don't use
20869         SAVE_MULTIPLE if not all the registers that saves, should be saved.
20870
20871 2017-08-09  Jim Wilson  <jim.wilson@linaro.org>
20872
20873         * config/aarch64/aarch64-cores.def (falkor): Use falkor pipeline.
20874         (qdf24xx): Likewise.
20875         * config/aarch64/aarch64.md: Include falkor.md.
20876         * config/aarch64/falkor.md: New.
20877
20878 2017-08-09  Marek Polacek  <polacek@redhat.com>
20879
20880         PR c/81233
20881         * diagnostic-core.h (emit_diagnostic_valist): Add declaration.
20882         * diagnostic.c (emit_diagnostic): Add a comment.
20883         (emit_diagnostic_valist): New function.
20884
20885 2017-08-09  Marek Polacek  <polacek@redhat.com>
20886
20887         PR c/81417
20888         * input.c (make_location): New overload.
20889         * input.h (make_location): Declare.
20890
20891 2017-08-08  Alan Modra  <amodra@gmail.com>
20892             H.J. Lu  <hongjiu.lu@intel.com>
20893
20894         PR driver/81523
20895         * gcc.c (NO_PIE_SPEC): Delete.
20896         (PIE_SPEC): Define as !no-pie/pie.  Move static|shared|r
20897         exclusion..
20898         (LINK_PIE_SPEC): ..to here.
20899         (LINK_COMMAND_SPEC): Support -no-pie.
20900         * config/gnu-user.h (GNU_USER_TARGET_STARTFILE_SPEC): Correct
20901         chain of crtbegin*.o selection, update for PIE_SPEC changes and
20902         format.
20903         (GNU_USER_TARGET_ENDFILE_SPEC): Similarly.
20904         * config/sol2.h (STARTFILE_CRTBEGIN_SPEC): Similarly.
20905         (ENDFILE_CRTEND_SPEC): Similarly.
20906
20907 2017-08-08  Uros Bizjak  <ubizjak@gmail.com>
20908
20909         PR target/81708
20910         * config/i386/i386.opt (mstack-protector-guard-reg=): New option
20911         (mstack-protector-guard-offset=): Ditto.
20912         * config/i386/i386.c (ix86_option_override): Handle
20913         -mstack-protector-guard-reg= and -mstack-protector-guard-offset=
20914         options.
20915         (ix86_stack_protect_guard): Use ix86_stack_protect_guard_reg and
20916         ix86_stack_protect_guard_offset variables.
20917         (TARGET_STACK_PROTECT_GUARD): Always define.
20918         * doc/invoke.texi (x86 Options): Document -mstack-protector-guard-reg=
20919         and -mstack-protector-guard-offset= options.
20920
20921 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
20922
20923         * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): Handle
20924         boundary case for the last candidate.
20925
20926 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
20927
20928         * doc/invoke.texi: Document -ftree-loop-distribution for O3.
20929         * opts.c (default_options_table): Add OPT_ftree_loop_distribution.
20930
20931 2017-08-08  Tamar Christina  <tamar.christina@arm.com>
20932
20933         PR middle-end/19706
20934         * config/aarch64/aarch64.md (xorsign<mode>3): New optabs.
20935         * config/aarch64/aarch64-builtins.c
20936         (aarch64_builtin_vectorized_function): Added CASE_CFN_XORSIGN.
20937         * config/aarch64/aarch64-simd-builtins.def: Added xorsign BINOP.
20938         * config/aarch64/aarch64-simd.md: Added xorsign<mode>3
20939
20940 2017-08-08  Tamar Christina  <tamar.christina@arm.com>
20941             Andrew Pinski <pinskia@gmail.com>
20942
20943         PR middle-end/19706
20944         * internal-fn.def (XORSIGN): New.
20945         * optabs.def (xorsign_optab): New.
20946         * tree-ssa-math-opts.c (is_copysign_call_with_1): New.
20947         (convert_expand_mult_copysign): New.
20948         (pass_optimize_widening_mul::execute): Call
20949         convert_expand_mult_copysign.
20950
20951 2017-08-08  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
20952
20953         PR tree-optimization/81354
20954         * gimple-ssa-strength-reduction.c (create_add_on_incoming_edge):
20955         Insert on edges rather than explicitly creating landing pads.
20956         (analyze_candidates_and_replace): Commit edge inserts.
20957
20958 2017-08-08  Richard Biener  <rguenther@suse.de>
20959
20960         PR middle-end/81719
20961         * tree-ssa-loop-niter.c: Include tree-dfa.h.
20962         (expand_simple_operations): Also look through ADDR_EXPRs with
20963         MEM_REF bases treating them as POINTER_PLUS_EXPR.
20964
20965 2017-08-08  Richard Biener  <rguenther@suse.de>
20966
20967         PR tree-optimization/81723
20968         * tree-vect-slp.c (struct bst_traits): New hash traits.
20969         (bst_fail): New global.
20970         (vect_build_slp_tree_2): New worker, split out from ...
20971         (vect_build_slp_tree): ... this now wrapping it with using
20972         bst_fail set to cache SLP tree build fails.  Properly handle
20973         max_tree_size.
20974         (vect_analyze_slp_instance): Allocate and free bst_fail.
20975
20976 2017-08-08  Martin Liska  <mliska@suse.cz>
20977
20978         PR tree-opt/81696
20979         * ipa-icf-gimple.c (func_checker::compare_cst_or_decl): Consider
20980         LABEL_DECLs that can be from a different function.
20981
20982 2017-08-08  Bin Cheng  <bin.cheng@arm.com>
20983
20984         PR tree-optimization/81744
20985         * tree-predcom.c (prepare_finalizers_chain): Deep copy expr of
20986         loop's number of iterations.
20987
20988 2017-08-08  Martin Liska  <mliska@suse.cz>
20989
20990         * asan.c: Include header files.
20991         * attribs.c (build_decl_attribute_variant): New function moved
20992         from tree.[ch].
20993         (build_type_attribute_qual_variant): Likewise.
20994         (cmp_attrib_identifiers): Likewise.
20995         (simple_cst_list_equal): Likewise.
20996         (omp_declare_simd_clauses_equal): Likewise.
20997         (attribute_value_equal): Likewise.
20998         (comp_type_attributes): Likewise.
20999         (build_type_attribute_variant): Likewise.
21000         (lookup_ident_attribute): Likewise.
21001         (remove_attribute): Likewise.
21002         (merge_attributes): Likewise.
21003         (merge_type_attributes): Likewise.
21004         (merge_decl_attributes): Likewise.
21005         (merge_dllimport_decl_attributes): Likewise.
21006         (handle_dll_attribute): Likewise.
21007         (attribute_list_equal): Likewise.
21008         (attribute_list_contained): Likewise.
21009         * attribs.h (lookup_attribute): New function moved from tree.[ch].
21010         (lookup_attribute_by_prefix): Likewise.
21011         * bb-reorder.c: Include header files.
21012         * builtins.c: Likewise.
21013         * calls.c: Likewise.
21014         * cfgexpand.c: Likewise.
21015         * cgraph.c: Likewise.
21016         * cgraphunit.c: Likewise.
21017         * convert.c: Likewise.
21018         * dwarf2out.c: Likewise.
21019         * final.c: Likewise.
21020         * fold-const.c: Likewise.
21021         * function.c: Likewise.
21022         * gimple-expr.c: Likewise.
21023         * gimple-fold.c: Likewise.
21024         * gimple-pretty-print.c: Likewise.
21025         * gimple.c: Likewise.
21026         * gimplify.c: Likewise.
21027         * hsa-common.c: Likewise.
21028         * hsa-gen.c: Likewise.
21029         * internal-fn.c: Likewise.
21030         * ipa-chkp.c: Likewise.
21031         * ipa-cp.c: Likewise.
21032         * ipa-devirt.c: Likewise.
21033         * ipa-fnsummary.c: Likewise.
21034         * ipa-inline.c: Likewise.
21035         * ipa-visibility.c: Likewise.
21036         * ipa.c: Likewise.
21037         * lto-cgraph.c: Likewise.
21038         * omp-expand.c: Likewise.
21039         * omp-general.c: Likewise.
21040         * omp-low.c: Likewise.
21041         * omp-offload.c: Likewise.
21042         * omp-simd-clone.c: Likewise.
21043         * opts-global.c: Likewise.
21044         * passes.c: Likewise.
21045         * predict.c: Likewise.
21046         * sancov.c: Likewise.
21047         * sanopt.c: Likewise.
21048         * symtab.c: Likewise.
21049         * toplev.c: Likewise.
21050         * trans-mem.c: Likewise.
21051         * tree-chkp.c: Likewise.
21052         * tree-eh.c: Likewise.
21053         * tree-into-ssa.c: Likewise.
21054         * tree-object-size.c: Likewise.
21055         * tree-parloops.c: Likewise.
21056         * tree-profile.c: Likewise.
21057         * tree-ssa-ccp.c: Likewise.
21058         * tree-ssa-live.c: Likewise.
21059         * tree-ssa-loop.c: Likewise.
21060         * tree-ssa-sccvn.c: Likewise.
21061         * tree-ssa-structalias.c: Likewise.
21062         * tree-ssa.c: Likewise.
21063         * tree-streamer-in.c: Likewise.
21064         * tree-vectorizer.c: Likewise.
21065         * tree-vrp.c: Likewise.
21066         * tsan.c: Likewise.
21067         * ubsan.c: Likewise.
21068         * varasm.c: Likewise.
21069         * varpool.c: Likewise.
21070         * tree.c: Remove functions moved to attribs.[ch].
21071         * tree.h: Likewise.
21072         * config/aarch64/aarch64.c: Add attrs.h header file.
21073         * config/alpha/alpha.c: Likewise.
21074         * config/arc/arc.c: Likewise.
21075         * config/arm/arm.c: Likewise.
21076         * config/avr/avr.c: Likewise.
21077         * config/bfin/bfin.c: Likewise.
21078         * config/c6x/c6x.c: Likewise.
21079         * config/cr16/cr16.c: Likewise.
21080         * config/cris/cris.c: Likewise.
21081         * config/darwin.c: Likewise.
21082         * config/epiphany/epiphany.c: Likewise.
21083         * config/fr30/fr30.c: Likewise.
21084         * config/frv/frv.c: Likewise.
21085         * config/ft32/ft32.c: Likewise.
21086         * config/h8300/h8300.c: Likewise.
21087         * config/i386/winnt.c: Likewise.
21088         * config/ia64/ia64.c: Likewise.
21089         * config/iq2000/iq2000.c: Likewise.
21090         * config/lm32/lm32.c: Likewise.
21091         * config/m32c/m32c.c: Likewise.
21092         * config/m32r/m32r.c: Likewise.
21093         * config/m68k/m68k.c: Likewise.
21094         * config/mcore/mcore.c: Likewise.
21095         * config/microblaze/microblaze.c: Likewise.
21096         * config/mips/mips.c: Likewise.
21097         * config/mmix/mmix.c: Likewise.
21098         * config/mn10300/mn10300.c: Likewise.
21099         * config/moxie/moxie.c: Likewise.
21100         * config/msp430/msp430.c: Likewise.
21101         * config/nds32/nds32-isr.c: Likewise.
21102         * config/nds32/nds32.c: Likewise.
21103         * config/nios2/nios2.c: Likewise.
21104         * config/nvptx/nvptx.c: Likewise.
21105         * config/pa/pa.c: Likewise.
21106         * config/pdp11/pdp11.c: Likewise.
21107         * config/powerpcspe/powerpcspe.c: Likewise.
21108         * config/riscv/riscv.c: Likewise.
21109         * config/rl78/rl78.c: Likewise.
21110         * config/rx/rx.c: Likewise.
21111         * config/s390/s390.c: Likewise.
21112         * config/sh/sh.c: Likewise.
21113         * config/sol2.c: Likewise.
21114         * config/sparc/sparc.c: Likewise.
21115         * config/spu/spu.c: Likewise.
21116         * config/stormy16/stormy16.c: Likewise.
21117         * config/tilegx/tilegx.c: Likewise.
21118         * config/tilepro/tilepro.c: Likewise.
21119         * config/v850/v850.c: Likewise.
21120         * config/vax/vax.c: Likewise.
21121         * config/visium/visium.c: Likewise.
21122         * config/xtensa/xtensa.c: Likewise.
21123
21124 2017-08-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
21125
21126         PR target/81593
21127         * config/rs6000/vsx.md (vsx_concat_<mode>, VSX_D): Cleanup
21128         constraints since the -mupper-regs-* switches have been
21129         eliminated.
21130         (vsx_concat_<mode>_1): New combiner insns to recognize inserting
21131         into a vector from a double word element that was extracted from
21132         another vector, and eliminate extra XXPERMDI instructions.
21133         (vsx_concat_<mode>_2): Likewise.
21134         (vsx_concat_<mode>_3): Likewise.
21135         (vsx_set_<mode>, VSX_D): Rewrite vector set in terms of vector
21136         concat to allow optimizing inserts from previous extracts.
21137
21138 2017-08-07  Uros Bizjak  <ubizjak@gmail.com>
21139
21140         * config/i386/i386.c (ix86_stack_protect_guard): Generate
21141         memory reference to a SSP offset in TLS address space.
21142         (ix86_print_operand) <case '@'>: Remove.
21143         (ix86_print_operand_punct_valid_p): Remove '@' code.
21144         * config/i386/i386.md (unspec): Remove UNSPEC_SP_TLS_SET and
21145         UNSPEC_SP_TLS_TEST.
21146         (stack_tls_protect_set_<mode>): Remove.
21147         (stack_protect_set): Do not call gen_stack_tls_protect_set_<mode>.
21148         (stack_tls_protect_test_<mode>): Remove.
21149         (stack_protect_test): Do not call gen_stack_tls_protect_test_<mode>.
21150
21151 2017-08-07  Olivier Hainque  <hainque@adacore.com>
21152
21153         PR target/81755
21154         * config/vxworksae.h (VXWORKS_HAVE_TLS): Define.
21155
21156 2017-08-07  Douglas Rupp  <rupp@adacore.com>
21157
21158         * Makefile.in (install-mkheaders): Fix typo, where the multi_dir
21159         variable was referenced as multidir in command.
21160
21161 2017-08-07  Jakub Jelinek  <jakub@redhat.com>
21162
21163         PR c/69389
21164         * gimplify.c (goa_stabilize_expr): Handle BIT_INSERT_EXPR and
21165         BIT_FIELD_REF.
21166
21167 2017-08-07  Martin Liska  <mliska@suse.cz>
21168
21169         * config/m32c/m32c.c: Add include of stringpool.h and attribs.h.
21170         * config/rl78/rl78.c: Add include of attribs.h.
21171         * config/sh/sh.c: Likewise.
21172         * config/v850/v850.c: Likewise.
21173
21174 2017-08-07  Tom de Vries  <tom@codesourcery.com>
21175
21176         PR middle-end/78266
21177         * omp-expand.c (expand_oacc_for): Ensure diff_type is large enough.
21178
21179 2017-08-07  Martin Liska  <mliska@suse.cz>
21180
21181         * config/mips/mips.c: Include attribs.h.
21182
21183 2017-08-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
21184
21185         PR fortran/68829
21186         * doc/invoke.texi: Document change in behvaior for -Ofast for
21187         Fortran.
21188
21189 2017-08-07  Wilco Dijkstra  <wdijkstr@arm.com>
21190
21191         * config/aarch64/aarch64.c (aarch64_pushwb_single_reg):
21192         Use gen_frame_mem.
21193         (aarch64_pop_regs): Likewise.
21194         (aarch64_gen_load_pair): Likewise.
21195         (aarch64_save_callee_saves): Likewise.
21196         (aarch64_restore_callee_saves): Likewise.
21197
21198 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
21199
21200         * config/i386/i386.c: Revert the last change.
21201
21202 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
21203
21204         PR target/81736
21205         * config/i386/i386.c (ix86_finalize_stack_realign_flags): Renamed
21206         to ...
21207         (ix86_finalize_stack_frame_flags): This.  Also clear
21208         frame_pointer_needed if -fno-omit-frame-pointer is used without
21209         stack access.
21210         (ix86_expand_prologue): Replace ix86_finalize_stack_realign_flags
21211         with ix86_finalize_stack_frame_flags.
21212         (ix86_expand_epilogue): Likewise.
21213         (ix86_expand_split_stack_prologue): Likewise.
21214
21215 2017-08-07  H.J. Lu  <hongjiu.lu@intel.com>
21216
21217         PR target/81743
21218         * config/i386/i386.c (get_builtin_code_for_version): Set priority
21219         to P_AES for Westmere.
21220
21221 2017-08-07  Jonathan Yong  <10walls@gmail.com>
21222
21223         * config/i386/mingw.opt (fset-stack-executable): Removed.
21224         * config/i386/cygming.opt (fset-stack-executable): Moved
21225         from mingw.opt.
21226         * config/i386/cygwin.h: Define CHECK_EXECUTE_STACK_ENABLED.
21227
21228 2017-08-07  Segher Boessenkool  <segher@kernel.crashing.org>
21229
21230         * print-rtl.c (print_exp): Print NOT as "~" instead of as "!".
21231
21232 2017-08-07  Marek Polacek  <polacek@redhat.com>
21233
21234         PR middle-end/81737
21235         * fold-const.c (fold_indirect_ref_1): Check type_domain.
21236
21237 2017-08-07  Martin Liska  <mliska@suse.cz>
21238
21239         * attribs.h (canonicalize_attr_name): New function.
21240         (cmp_attribs): Move from c-format.c and adjusted.
21241         (is_attribute_p): Moved from tree.h.
21242         * tree-inline.c: Add new includes.
21243         * tree.c (cmp_attrib_identifiers): Use cmp_attribs.
21244         (private_is_attribute_p): Remove.
21245         (private_lookup_attribute): Likewise.
21246         (private_lookup_attribute_by_prefix): Simplify.
21247         (remove_attribute): Use is_attribute_p.
21248         * tree.h: Remove removed declarations.
21249
21250 2017-08-07  Jakub Jelinek  <jakub@redhat.com>
21251
21252         PR middle-end/81698
21253         * stmt.c (emit_case_dispatch_table): Add DEFAULT_EDGE argument,
21254         instead of computing it in the function.  Formatting fix.
21255         (expand_case): Don't rely on default_edge being the first edge,
21256         clear it if removing it, pass default_edge to
21257         emit_case_dispatch_table.
21258         (expand_sjlj_dispatch_table): Pass NULL as DEFAULT_EDGE, formatting
21259         fix.
21260
21261 2017-08-06  Uros Bizjak  <ubizjak@gmail.com>
21262
21263         * config/alpha/alpha.c (alpha_reorg): If trap is the last active
21264         insn in the function, emit NOP after the insn.
21265
21266 2017-08-06  Tom de Vries  <tom@codesourcery.com>
21267
21268         * omp-expand.c (expand_oacc_for): Add missing edge probability for tile
21269         and element loops.
21270
21271 2017-08-06  Tom de Vries  <tom@codesourcery.com>
21272
21273         * omp-expand.c (expand_oacc_for): Add missing edge probability for chunk
21274         loop.
21275
21276 2017-08-04  Yury Gribov  <tetra2005@gmail.com>
21277
21278         PR tree-optimization/57371
21279         * match.pd: New pattern.
21280
21281 2017-08-04  Marek Polacek  <polacek@redhat.com>
21282
21283         PR middle-end/81695
21284         * fold-const.c (fold_indirect_ref_1): For ((int *)&a + 4 -> a[1],
21285         perform the computation in offset_int.
21286
21287 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
21288
21289         PR tree-optimization/81136
21290         * tree-vectorizer.h: Include tree-hash-traits.h.
21291         (vec_base_alignments): New typedef.
21292         (vec_info): Add a base_alignments field.
21293         (vect_record_base_alignments): Declare.
21294         * tree-data-ref.h (data_reference): Add an is_conditional_in_stmt
21295         field.
21296         (DR_IS_CONDITIONAL_IN_STMT): New macro.
21297         (create_data_ref): Add an is_conditional_in_stmt argument.
21298         * tree-data-ref.c (create_data_ref): Likewise.  Use it to initialize
21299         the is_conditional_in_stmt field.
21300         (data_ref_loc): Add an is_conditional_in_stmt field.
21301         (get_references_in_stmt): Set the is_conditional_in_stmt field.
21302         (find_data_references_in_stmt): Update call to create_data_ref.
21303         (graphite_find_data_references_in_stmt): Likewise.
21304         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Likewise.
21305         * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
21306         (vect_record_base_alignment): New function.
21307         (vect_record_base_alignments): Likewise.
21308         (vect_compute_data_ref_alignment): Adjust base_addr and aligned_to
21309         for nested statements even if we fail to compute a misalignment.
21310         Use pooled base alignments for unconditional references.
21311         (vect_find_same_alignment_drs): Compare base addresses instead
21312         of base objects.
21313         (vect_analyze_data_refs_alignment): Call vect_record_base_alignments.
21314         * tree-vect-slp.c (vect_slp_analyze_bb_1): Likewise.
21315
21316 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
21317
21318         * tree-vectorizer.h (vec_info): Add a constructor and destructor.
21319         Add an explicit name for the enum.  Use auto_vec for slp_instances
21320         and grouped_stores.
21321         (_loop_vec_info): Add a constructor and destructor.  Use auto_vec
21322         for all vectors.
21323         (_bb_vec_info): Add a constructor and destructor.
21324         (vinfo_for_stmt): Return NULL for uids of -1 as well.
21325         (destroy_loop_vec_info): Delete.
21326         (vect_destroy_datarefs): Likewise.
21327         * tree-vectorizer.c (vect_destroy_datarefs): Delete.
21328         (vec_info::vec_info): New function.
21329         (vec_info::~vec_info): Likewise.
21330         (vectorize_loops): Use delete instead of destroy_loop_vec_info.
21331         * tree-parloops.c (gather_scalar_reductions): Use delete instead of
21332         destroy_loop_vec_info.
21333         * tree-vect-loop.c (new_loop_vec_info): Replace with...
21334         (_loop_vec_info::_loop_vec_info): ...this.
21335         (destroy_loop_vec_info): Replace with...
21336         (_loop_vec_info::~_loop_vec_info): ...this.  Unconditionally delete
21337         the stmt_vec_infos.  Leave handling of vec_info information to its
21338         destructor.  Remove explicit vector releases.
21339         (vect_analyze_loop_form): Use new instead of new_loop_vec_info.
21340         (vect_analyze_loop): Use delete instead of destroy_loop_vec_info.
21341         * tree-vect-slp.c (new_bb_vec_info): Replace with...
21342         (_bb_vec_info::_bb_vec_info): ...this.  Don't reserve space in
21343         BB_VINFO_GROUPED_STORES or BB_VINFO_SLP_INSTANCES.
21344         (destroy_bb_vec_info): Replace with...
21345         (_bb_vec_info::~_bb_vec_info): ...this.  Leave handling of vec_info
21346         information to its destructor.
21347         (vect_slp_analyze_bb_1): Use new and delete instead of
21348         new_bb_vec_info and destroy_bb_vec_info.
21349         (vect_slp_bb): Replace 2 calls to destroy_bb_vec_info with a
21350         single delete.
21351
21352 2017-08-04  Richard Sandiford  <richard.sandiford@linaro.org>
21353
21354         * tree-data-ref.h (subscript): Add access_fn field.
21355         (data_dependence_relation): Add could_be_independent_p.
21356         (SUB_ACCESS_FN, DDR_COULD_BE_INDEPENDENT_P): New macros.
21357         (same_access_functions): Move to tree-data-ref.c.
21358         * tree-data-ref.c (ref_contains_union_access_p): New function.
21359         (access_fn_component_p): Likewise.
21360         (access_fn_components_comparable_p): Likewise.
21361         (dr_analyze_indices): Add a reference to access_fn_component_p.
21362         (dump_data_dependence_relation): Use SUB_ACCESS_FN instead of
21363         DR_ACCESS_FN.
21364         (constant_access_functions): Likewise.
21365         (add_other_self_distances): Likewise.
21366         (same_access_functions): Likewise.  (Moved from tree-data-ref.h.)
21367         (initialize_data_dependence_relation): Use XCNEW and remove
21368         explicit zeroing of DDR_REVERSED_P.  Look for a subsequence
21369         of access functions that have the same type.  Allow the
21370         subsequence to end with different bases in some circumstances.
21371         Record the chosen access functions in SUB_ACCESS_FN.
21372         (build_classic_dist_vector_1): Replace ddr_a and ddr_b with
21373         a_index and b_index.  Use SUB_ACCESS_FN instead of DR_ACCESS_FN.
21374         (subscript_dependence_tester_1): Likewise dra and drb.
21375         (build_classic_dist_vector): Update calls accordingly.
21376         (subscript_dependence_tester): Likewise.
21377         * tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Check
21378         DDR_COULD_BE_INDEPENDENT_P.
21379         * tree-vectorizer.h (LOOP_REQUIRES_VERSIONING_FOR_ALIAS): Test
21380         comp_alias_ddrs instead of may_alias_ddrs.
21381         * tree-vect-data-refs.c (vect_analyze_possibly_independent_ddr):
21382         New function.
21383         (vect_analyze_data_ref_dependence): Use it if
21384         DDR_COULD_BE_INDEPENDENT_P, but fall back to using the recorded
21385         distance vectors if that fails.
21386         (dependence_distance_ge_vf): New function.
21387         (vect_prune_runtime_alias_test_list): Use it.  Don't clear
21388         LOOP_VINFO_MAY_ALIAS_DDRS.
21389
21390 2017-08-04  Richard Biener  <rguenther@suse.de>
21391
21392         PR middle-end/81705
21393         * fold-const.c (fold_binary_loc): Properly restrict
21394         minus_var0 && minus_var1 case when associating undefined overflow
21395         entities.
21396
21397 2017-08-04  Tom de Vries  <tom@codesourcery.com>
21398
21399         * omp-simd-clone.c (simd_clone_adjust): Add missing edge probability.
21400
21401 2017-08-03  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
21402
21403         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
21404         Don't start diagnostic messages with a capital letter.
21405         * config/rs6000/rs6000.c (rs6000_option_override_internal):
21406         Likewise.
21407         (rs6000_invalid_builtin): Likewise.
21408         (rs6000_trampoline_init): Likewise.
21409
21410 2017-08-03  Jakub Jelinek  <jakub@redhat.com>
21411
21412         PR target/81621
21413         * bb-reorder.c (pass_partition_blocks::execute): Return TODO_df_finish
21414         after setting changeable df flags.
21415
21416 2017-08-03  Richard Biener  <rguenther@suse.de>
21417
21418         * tree-ssa-reassoc.c (should_break_up_subtract): Also break
21419         up if the use is in USE - X.
21420
21421 2017-08-03  Alexander Monakov  <amonakov@ispras.ru>
21422
21423         * toplev.c (dumpfile.h): New include.
21424         (internal_error_reentered): New static function.  Use it...
21425         (internal_error_function): ...here to handle reentered internal_error.
21426
21427 2017-08-03  Richard Biener  <rguenther@suse.de>
21428
21429         PR middle-end/81148
21430         * fold-const.c (split_tree): Add minus_var and minus_con
21431         arguments, remove unused loc arg.  Never generate NEGATE_EXPRs
21432         here but always use minus_*.
21433         (associate_trees): Assert we never associate with MINUS_EXPR
21434         and NULL first operand.  Do not recurse for PLUS_EXPR operands
21435         when associating as MINUS_EXPR either.
21436         (fold_binary_loc): Track minus_var and minus_con.
21437
21438 2017-08-03  Tom de Vries  <tom@codesourcery.com>
21439
21440         PR lto/81430
21441         * tree-streamer-in.c (lto_input_ts_function_decl_tree_pointers): If
21442         ACCEL_COMPILER, apply finish_options on
21443         DECL_FUNCTION_SPECIFIC_OPTIMIZATION.
21444
21445 2017-08-03  Tom de Vries  <tom@codesourcery.com>
21446
21447         PR target/81662
21448         * config/nvptx/nvptx.c (nvptx_option_override): Emit sorry if
21449         function_entry_patch_area_size > 0.
21450
21451 2017-08-03  Jakub Jelinek  <jakub@redhat.com>
21452
21453         PR driver/81650
21454         * calls.c (alloc_max_size): Use HOST_WIDE_INT_UC (10??)
21455         instead of 10??LU, perform unit multiplication in wide_int,
21456         don't change alloc_object_size_limit if the limit is larger
21457         than SSIZE_MAX.
21458
21459         PR tree-optimization/81655
21460         PR tree-optimization/81588
21461         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): Handle also
21462         the case when ranges[i].low and high are 1 for unsigned type with
21463         precision 1.
21464
21465         PR middle-end/81052
21466         * omp-low.c (diagnose_sb_0): Handle flag_openmp_simd like flag_openmp.
21467         (pass_diagnose_omp_blocks::gate): Enable also for flag_openmp_simd.
21468
21469 2017-08-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
21470
21471         * tree-vrp.h: Add include guard.
21472
21473 2017-08-02  Uros Bizjak  <ubizjak@gmail.com>
21474
21475         PR target/81644
21476         * config/i386/i386.md (unspecv): Add UNSPECV_UD2.
21477         (ud2): New insn pattern.
21478         * config/i386/i386.c (ix86_expand_epilogue):
21479         For naked functions, generate ud2 instead of trap insn.
21480
21481 2017-08-02  Marek Polacek  <polacek@redhat.com>
21482
21483         PR other/81667
21484         * alloc-pool.h (base_pool_allocator): Initialize m_elt_size.
21485
21486 2017-08-02  Tom de Vries  <tom@codesourcery.com>
21487             Cesar Philippidis  <cesar@codesourcery.com>
21488
21489         * config/nvptx/nvptx.c (nvptx_lockless_update, nvptx_lockfull_update):
21490         Add missing edge probabilities.
21491
21492 2017-08-02  Tamar Christina  <tamar.christina@arm.com>
21493
21494         * config/aarch64/aarch64.c (aarch64_reinterpret_float_as_int):
21495         Correct endianness.
21496
21497 2017-08-02  Jakub Jelinek  <jakub@redhat.com>
21498
21499         PR middle-end/79499
21500         * function.c (thread_prologue_and_epilogue_insns): Determine blocks
21501         for find_many_sub_basic_blocks bitmap by looking up BLOCK_FOR_INSN
21502         of first NONDEBUG_INSN_P in each of the split_prologue_seq and
21503         prologue_seq sequences - if any.
21504
21505 2017-08-02  Richard Biener  <rguenther@suse.de>
21506
21507         * tree-vect-stmts.c (vectorizable_store): Perform vector extracts
21508         via vectors if supported, integer extracts via punning if supported
21509         or otherwise vector extracts.
21510
21511 2017-08-02  Richard Biener  <rguenther@suse.de>
21512
21513         * tree-ssa-pre.c (bitmap_insert_into_set_1): Remove and inline
21514         into ...
21515         (bitmap_insert_into_set): ... this.
21516
21517 2017-08-02  Richard Biener  <rguenther@suse.de>
21518
21519         PR tree-optimization/81633
21520         Revert
21521         2015-08-17  Alan Hayward  <alan.hayward@arm.com>
21522
21523         PR tree-optimization/71752
21524         * tree-vect-slp.c (vect_get_slp_defs): Handle null operands.
21525
21526 2017-08-01  Daniel Santos  <daniel.santos@pobox.com>
21527
21528         * config/i386/i386.h (ix86_frame::outlined_save_offset): Remove field.
21529         (machine_function::call_ms2sysv_pad_out): Remove field.
21530         * config/i386/i386.c (xlogue_layout::get_stack_space_used): Modify.
21531         (ix86_compute_frame_layout): Likewise.
21532
21533 2017-08-01  H.J. Lu  <hongjiu.lu@intel.com>
21534
21535         PR target/81654
21536         * config/i386/i386.c (ix86_set_func_type): Disallow naked
21537         attribute with interrupt attribute.
21538
21539 2017-08-01  Andrew Pinski  <apinski@cavium.com>
21540
21541         * tree-ssa-scopedtables.c (hashable_expr_equal_p): Check
21542         BIT_INSERT_EXPR's operand 1
21543         to see if the types precision matches.
21544
21545 2017-08-01  Martin Liska  <mliska@suse.cz>
21546
21547         PR middle-end/70140
21548         * builtins.c (expand_builtin_memcpy_args): Remove.
21549         (expand_builtin_memcpy): Call newly added function
21550         expand_builtin_memory_copy_args.
21551         (expand_builtin_memcpy_with_bounds): Likewise.
21552         (expand_builtin_mempcpy): Remove last argument.
21553         (expand_builtin_mempcpy_with_bounds): Likewise.
21554         (expand_builtin_memory_copy_args): New function created from
21555         expand_builtin_mempcpy_args with small modifications.
21556         (expand_builtin_mempcpy_args): Remove.
21557         (expand_builtin_stpcpy): Remove unused argument.
21558         (expand_builtin): Likewise.
21559         (expand_builtin_with_bounds): Likewise.
21560
21561 2017-08-01  Martin Liska  <mliska@suse.cz>
21562
21563         Revert r250771
21564         Make mempcpy more optimal (PR middle-end/70140).
21565
21566 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
21567
21568         PR target/81622
21569         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): For
21570         __builtin_vec_cmpne verify both arguments are compatible vectors
21571         before looking at TYPE_MODE on the element type.  For __builtin_vec_ld
21572         verify arg1_type is a pointer or array type.  For __builtin_vec_st,
21573         move computation of aligned to after checking the argument types.
21574         Formatting fixes.
21575
21576         PR target/80846
21577         * config/rs6000/vsx.md (vextract_fp_from_shorth,
21578         vextract_fp_from_shortl): Add element mode after mode in gen_vec_init*
21579         calls.
21580
21581 2017-08-01  Jerome Lambourg  <lambourg@adacore.com>
21582             Doug Rupp  <rupp@adacore.com>
21583             Olivier Hainque  <hainque@adacore.com>
21584
21585         * config.gcc (arm-wrs-vxworks*): Rework to handle arm-wrs-vxworks7 as
21586         well as arm-wrs-vxworks. Update target_cpu_name from arm6 (arch v3) to
21587         arm8 (arch v4).
21588         * config/arm/vxworks.h (MAYBE_TARGET_BPABI_CPP_BUILTINS): New, helper
21589         for TARGET_OS_CPP_BUILTIN.
21590         (TARGET_OS_CPP_BUILTIN): Invoke MAYBE_TARGET_BPABI_CPP_BUILTINS(),
21591         refine CPU definitions for arm_arch5 and add those for arm_arch6 and
21592         arm_arch7.
21593         (MAYBE_ASM_ABI_SPEC): New, helper for SUBTARGET_EXTRA_ASM_SPEC,
21594         passing required abi options to the assembler for EABI configurations.
21595         (EXTRA_CC1_SPEC): New macro, to help prevent the implicit production
21596         of .text.hot and .text.unlikely sections for kernel modules when
21597         using ARM style exceptions.
21598         (CC1_SPEC): Remove obsolete attempt at mimicking Diab toolchain
21599         options. Add EXTRA_CC1_SPEC.
21600         (VXWORKS_ENDIAN_SPEC): Adjust comment and remove handling of Diab
21601         toolchain options.
21602         (DWARF2_UNWIND_INFO): Redefine to handle the pre/post VxWorks 7
21603         transition.
21604         (ARM_TARGET2_DWARF_FORMAT): Define.
21605         * config/arm/t-vxworks: Adjust multilib control to removal of the
21606         Diab command line options.
21607
21608 2017-08-01  Martin Liska  <mliska@suse.cz>
21609
21610         PR gcov-profile/81561
21611         * gcov.c (unblock): Make unblocking safe as we need to preserve
21612         index correspondence of blocks and block_lists.
21613
21614 2017-08-01  Richard Biener  <rguenther@suse.de>
21615
21616         PR tree-optimization/81181
21617         * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
21618         (compute_antic): ... end of iteration here.
21619
21620 2017-08-01  James Greenhalgh  <james.greenhalgh@arm.com>
21621
21622         * common.opt (ftree-vectorize): No longer set flag_tree_vectorize.
21623         (ftree-loop-vectorize): Set as EnabledBy ftree-vectorize.
21624         (ftree-slp-vectorize): Likewise.
21625         * omp-expand (expand_omp_simd): Remove flag_tree_vectorize, as it
21626         can no longer be set independent of flag_tree_loop_vectorize.
21627         * omp-general.c (emp_max_vf): Likewise.
21628         * opts.c (enable_fdo_optimizations): Remove references to
21629         flag_tree_vectorize, these are now implicit.
21630         (common_handle_option): Remove handling for OPT_ftree_vectorize,
21631         and leave it for the options machinery.
21632
21633 2017-08-01  Martin Liska  <mliska@suse.cz>
21634
21635         PR middle-end/70140
21636         * builtins.c (expand_builtin_memcpy_args): Remove.
21637         (expand_builtin_memcpy): Call newly added function
21638         expand_builtin_memory_copy_args.
21639         (expand_builtin_memcpy_with_bounds): Likewise.
21640         (expand_builtin_mempcpy): Remove last argument.
21641         (expand_builtin_mempcpy_with_bounds): Likewise.
21642         (expand_builtin_memory_copy_args): New function created from
21643         expand_builtin_mempcpy_args with small modifications.
21644         (expand_builtin_mempcpy_args): Remove.
21645         (expand_builtin_stpcpy): Remove unused argument.
21646         (expand_builtin): Likewise.
21647         (expand_builtin_with_bounds): Likewise.
21648
21649 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
21650
21651         PR target/81641
21652         * config/i386/i386.c (ix86_print_operand_address_as): For -masm=intel
21653         print "ds:" only for immediates in generic address space.
21654
21655 2017-08-01  Uros Bizjak  <ubizjak@gmail.com>
21656
21657         PR target/81639
21658         * config/i386/i386.c (ix86_funciton_naked): New prototype.
21659         (ix86_function_ok_for_sibcall): Return false for naked functions.
21660
21661 2017-08-01  Richard Biener  <rguenther@suse.de>
21662
21663         * tree-ssa-pre.c (print_pre_expr): Handle NULL expr.
21664         (compute_antic): Seed worklist with exit block predecessors.
21665         * cfganal.c (dfs_find_deadend): For a cycle return the source
21666         of the edge closing it.
21667
21668 2017-08-01  Tamar Christina  <tamar.christina@arm.com>
21669
21670         * config/aarch64/aarch64.c
21671         (aarch64_can_const_movi_rtx_p): Move 0 check.
21672
21673 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
21674
21675         * tree.h (POINTER_TYPE_OVERFLOW_UNDEFINED): Delete.
21676         * fold-const.c (fold_comparison, fold_binary_loc): Delete use of
21677         above macro.
21678         * match.pd: Ditto in address comparison pattern.
21679
21680 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
21681
21682         PR tree-optimization/81627
21683         * tree-predcom.c (prepare_finalizers): Always rewrite into loop
21684         closed ssa form for store-store chain.
21685
21686 2017-08-01  Bin Cheng  <bin.cheng@arm.com>
21687
21688         PR tree-optimization/81620
21689         * tree-predcom.c (add_ref_to_chain): Don't set has_max_use_after
21690         for store-store chain.
21691
21692 2017-08-01  Jakub Jelinek  <jakub@redhat.com>
21693
21694         PR tree-optimization/81588
21695         * tree-ssa-reassoc.c (optimize_range_tests_var_bound): If
21696         ranges[i].in_p, invert comparison code ccode.  For >/>=,
21697         swap rhs1 and rhs2 and comparison code unconditionally,
21698         for </<= don't do that.  Don't swap rhs1/rhs2 again if
21699         ranges[i].in_p, instead invert comparison code ccode if
21700         opcode or oe->rank is BIT_IOR_EXPR.
21701
21702         PR target/80846
21703         * optabs.def (vec_extract_optab, vec_init_optab): Change from
21704         a direct optab to conversion optab.
21705         * optabs.c (expand_vector_broadcast): Use convert_optab_handler
21706         with GET_MODE_INNER as last argument instead of optab_handler.
21707         * expmed.c (extract_bit_field_1): Likewise.  Use vector from
21708         vector extraction if possible and optab is available.
21709         * expr.c (store_constructor): Use convert_optab_handler instead
21710         of optab_handler.  Use vector initialization from smaller
21711         vectors if possible and optab is available.
21712         * tree-vect-stmts.c (vectorizable_load): Likewise.
21713         * doc/md.texi (vec_extract, vec_init): Document that the optabs
21714         now have two modes.
21715         * config/i386/i386.c (ix86_expand_vector_init): Handle expansion
21716         of vec_init from half-sized vectors with the same element mode.
21717         * config/i386/sse.md (ssehalfvecmode): Add V4TI case.
21718         (ssehalfvecmodelower, ssescalarmodelower): New mode attributes.
21719         (reduc_plus_scal_v8df, reduc_plus_scal_v4df, reduc_plus_scal_v2df,
21720         reduc_plus_scal_v16sf, reduc_plus_scal_v8sf, reduc_plus_scal_v4sf,
21721         reduc_<code>_scal_<mode>, reduc_umin_scal_v8hi): Add element mode
21722         after mode in gen_vec_extract* calls.
21723         (vec_extract<mode>): Renamed to ...
21724         (vec_extract<mode><ssescalarmodelower>): ... this.
21725         (vec_extract<mode><ssehalfvecmodelower>): New expander.
21726         (rotl<mode>3, rotr<mode>3, <shift_insn><mode>3, ashrv2di3): Add
21727         element mode after mode in gen_vec_init* calls.
21728         (VEC_INIT_HALF_MODE): New mode iterator.
21729         (vec_init<mode>): Renamed to ...
21730         (vec_init<mode><ssescalarmodelower>): ... this.
21731         (vec_init<mode><ssehalfvecmodelower>): New expander.
21732         * config/i386/mmx.md (vec_extractv2sf): Renamed to ...
21733         (vec_extractv2sfsf): ... this.
21734         (vec_initv2sf): Renamed to ...
21735         (vec_initv2sfsf): ... this.
21736         (vec_extractv2si): Renamed to ...
21737         (vec_extractv2sisi): ... this.
21738         (vec_initv2si): Renamed to ...
21739         (vec_initv2sisi): ... this.
21740         (vec_extractv4hi): Renamed to ...
21741         (vec_extractv4hihi): ... this.
21742         (vec_initv4hi): Renamed to ...
21743         (vec_initv4hihi): ... this.
21744         (vec_extractv8qi): Renamed to ...
21745         (vec_extractv8qiqi): ... this.
21746         (vec_initv8qi): Renamed to ...
21747         (vec_initv8qiqi): ... this.
21748         * config/rs6000/vector.md (VEC_base_l): New mode attribute.
21749         (vec_init<mode>): Renamed to ...
21750         (vec_init<mode><VEC_base_l>): ... this.
21751         (vec_extract<mode>): Renamed to ...
21752         (vec_extract<mode><VEC_base_l>): ... this.
21753         * config/rs6000/paired.md (vec_initv2sf): Renamed to ...
21754         (vec_initv2sfsf): ... this.
21755         * config/rs6000/altivec.md (splitter, altivec_copysign_v4sf3,
21756         vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi,
21757         vec_unpacku_lo_v8hi, mulv16qi3, altivec_vreve<mode>2): Add
21758         element mode after mode in gen_vec_init* calls.
21759         * config/aarch64/aarch64-simd.md (vec_init<mode>): Renamed to ...
21760         (vec_init<mode><Vel>): ... this.
21761         (vec_extract<mode>): Renamed to ...
21762         (vec_extract<mode><Vel>): ... this.
21763         * config/aarch64/iterators.md (Vel): New mode attribute.
21764         * config/s390/s390.c (s390_expand_vec_strlen, s390_expand_vec_movstr):
21765         Add element mode after mode in gen_vec_extract* calls.
21766         * config/s390/vector.md (non_vec_l): New mode attribute.
21767         (vec_extract<mode>): Renamed to ...
21768         (vec_extract<mode><non_vec_l>): ... this.
21769         (vec_init<mode>): Renamed to ...
21770         (vec_init<mode><non_vec_l>): ... this.
21771         * config/s390/s390-builtins.def (s390_vlgvb, s390_vlgvh, s390_vlgvf,
21772         s390_vlgvf_flt, s390_vlgvg, s390_vlgvg_dbl): Add element mode after
21773         vec_extract mode.
21774         * config/arm/iterators.md (V_elem_l): New mode attribute.
21775         * config/arm/neon.md (vec_extract<mode>): Renamed to ...
21776         (vec_extract<mode><V_elem_l>): ... this.
21777         (vec_extractv2di): Renamed to ...
21778         (vec_extractv2didi): ... this.
21779         (vec_init<mode>): Renamed to ...
21780         (vec_init<mode><V_elem_l>): ... this.
21781         (reduc_plus_scal_<mode>, reduc_plus_scal_v2di, reduc_smin_scal_<mode>,
21782         reduc_smax_scal_<mode>, reduc_umin_scal_<mode>,
21783         reduc_umax_scal_<mode>, neon_vget_lane<mode>, neon_vget_laneu<mode>):
21784         Add element mode after gen_vec_extract* calls.
21785         * config/mips/mips-msa.md (vec_init<mode>): Renamed to ...
21786         (vec_init<mode><unitmode>): ... this.
21787         (vec_extract<mode>): Renamed to ...
21788         (vec_extract<mode><unitmode>): ... this.
21789         * config/mips/loongson.md (vec_init<mode>): Renamed to ...
21790         (vec_init<mode><unitmode>): ... this.
21791         * config/mips/mips-ps-3d.md (vec_initv2sf): Renamed to ...
21792         (vec_initv2sfsf): ... this.
21793         (vec_extractv2sf): Renamed to ...
21794         (vec_extractv2sfsf): ... this.
21795         (reduc_plus_scal_v2sf, reduc_smin_scal_v2sf, reduc_smax_scal_v2sf):
21796         Add element mode after gen_vec_extract* calls.
21797         * config/mips/mips.md (unitmode): New mode iterator.
21798         * config/spu/spu.c (spu_expand_prologue, spu_allocate_stack,
21799         spu_builtin_extract): Add element mode after gen_vec_extract* calls.
21800         * config/spu/spu.md (inner_l): New mode attribute.
21801         (vec_init<mode>): Renamed to ...
21802         (vec_init<mode><inner_l>): ... this.
21803         (vec_extract<mode>): Renamed to ...
21804         (vec_extract<mode><inner_l>): ... this.
21805         * config/sparc/sparc.md (veltmode): New mode iterator.
21806         (vec_init<VMALL:mode>): Renamed to ...
21807         (vec_init<VMALL:mode><VMALL:veltmode>): ... this.
21808         * config/ia64/vect.md (vec_initv2si): Renamed to ...
21809         (vec_initv2sisi): ... this.
21810         (vec_initv2sf): Renamed to ...
21811         (vec_initv2sfsf): ... this.
21812         (vec_extractv2sf): Renamed to ...
21813         (vec_extractv2sfsf): ... this.
21814         * config/powerpcspe/vector.md (VEC_base_l): New mode attribute.
21815         (vec_init<mode>): Renamed to ...
21816         (vec_init<mode><VEC_base_l>): ... this.
21817         (vec_extract<mode>): Renamed to ...
21818         (vec_extract<mode><VEC_base_l>): ... this.
21819         * config/powerpcspe/paired.md (vec_initv2sf): Renamed to ...
21820         (vec_initv2sfsf): ... this.
21821         * config/powerpcspe/altivec.md (splitter, altivec_copysign_v4sf3,
21822         vec_unpacku_hi_v16qi, vec_unpacku_hi_v8hi, vec_unpacku_lo_v16qi,
21823         vec_unpacku_lo_v8hi, mulv16qi3): Add element mode after mode in
21824         gen_vec_init* calls.
21825
21826 2017-08-01  Richard Biener  <rguenther@suse.de>
21827
21828         PR tree-optimization/81297
21829         * tree-vrp.c (get_single_symbol): Remove assert, instead drop
21830         TREE_OVERFLOW from INTEGER_CSTs.
21831
21832 2017-07-31  Segher Boessenkool  <segher@kernel.crashing.org>
21833
21834         * config/rs6000/rs6000.c (enum rs6000_reg_type): Delete trailing comma.
21835
21836 2017-07-31  Carl Love  <cel@us.ibm.com>
21837
21838         * config/rs6000/rs6000-c: Add support for built-in functions
21839         vector signed char vec_xl_be (signed long long, signed char *);
21840         vector unsigned char vec_xl_be (signed long long, unsigned char *);
21841         vector signed int vec_xl_be (signed long long, signed int *);
21842         vector unsigned int vec_xl_be (signed long long, unsigned int *);
21843         vector signed long long vec_xl_be (signed long long, signed long long *);
21844         vector unsigned long long vec_xl_be (signed long long, unsigned long long *);
21845         vector signed short vec_xl_be (signed long long, signed short *);
21846         vector unsigned short vec_xl_be (signed long long, unsigned short *);
21847         vector double vec_xl_be (signed long long, double *);
21848         vector float vec_xl_be (signed long long, float *);
21849         * config/rs6000/altivec.h (vec_xl_be): Add #define.
21850         * config/rs6000/rs6000-builtin.def (XL_BE_V16QI, XL_BE_V8HI, XL_BE_V4SI)
21851         XL_BE_V2DI, XL_BE_V4SF, XL_BE_V2DF, XL_BE): Add definitions
21852         for the builtins.
21853         * config/rs6000/rs6000.c (altivec_expand_xl_be_builtin): Add function.
21854         (altivec_expand_builtin): Add switch statement to call
21855         altivec_expand_xl_be for each builtin.
21856         (altivec_init_builtins): Add def_builtin for _builtin_vsx_le_be_v8hi,
21857         __builtin_vsx_le_be_v4si, __builtin_vsx_le_be_v2di,
21858         __builtin_vsx_le_be_v4sf, __builtin_vsx_le_be_v2df,
21859         __builtin_vsx_le_be_v16qi.
21860         * doc/extend.texi: Update the built-in documentation file for the
21861         new built-in functions.
21862
21863 2017-07-31  Uros Bizjak  <ubizjak@gmail.com>
21864
21865         PR target/25967
21866         * config/i386/i386.c (ix86_allocate_stack_slots_for_args):
21867         New function.
21868         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
21869
21870 2017-07-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
21871
21872         * config.gcc: Add z14.
21873         * config/s390/driver-native.c (s390_host_detect_local_cpu): Add
21874         CPU model numbers for z13s and z14.
21875         * config/s390/s390-c.c (s390_resolve_overloaded_builtin): Replace
21876         arch12 with z14.
21877         * config/s390/s390-opts.h (enum processor_type): Rename
21878         PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
21879         * config/s390/s390.c (processor_table): Add field for CPU name to
21880         be passed to Binutils.
21881         (s390_asm_output_machine_for_arch): Use the new field in
21882         processor_table for Binutils.
21883         (s390_expand_builtin): Replace arch12 with z14.
21884         (s390_issue_rate): Rename PROCESSOR_ARCH12 to PROCESSOR_3906_Z14.
21885         (s390_get_sched_attrmask): Likewise.
21886         (s390_get_unit_mask): Likewise.
21887         * config/s390/s390.opt: Add z14 to processor_type enum.
21888
21889 2017-07-31  Martin Jambor  <mjambor@suse.cz>
21890
21891         PR hsa/81477
21892         * ipa-fnsummary.c (ipa_fn_summary_generate): Set versionable
21893         regardless of optimization level.
21894
21895 2017-07-31  Jan Hubicka <hubicka@ucw.cz>
21896             Martin Liska  <mliska@suse.cz>
21897
21898         * predict.def: Remove old comment and adjust probability.
21899         * gimplify.c (should_warn_for_implicit_fallthrough): Ignore
21900         PREDICT statements.
21901
21902 2017-07-31  Uros Bizjak  <ubizjak@gmail.com>
21903
21904         PR target/25967
21905         * config/i386/i386.c (ix86_function_naked): New function.
21906         (ix86_can_use_return_insn_p): Return false for naked functions.
21907         (ix86_expand_prologue): Skip prologue for naked functions.
21908         (ix86_expand_epilogue): Skip epilogue for naked functions
21909         and emit trap instruction.
21910         (ix86_warn_func_return): New function.
21911         (ix86_attribute_table): Add "naked" attribute specification.
21912         (TARGET_WARN_FUNC_RETURN): Define.
21913         * doc/extend.texi (x86 Function Attributes) <naked>: Document it.
21914
21915 2017-07-31  Martin Liska  <mliska@suse.cz>
21916
21917         * gimple-pretty-print.c (dump_gimple_label): Never dump BB info.
21918         (dump_gimple_bb_header): Always dump BB info.
21919         (pp_cfg_jump): Do not append info about BB when dumping a jump.
21920
21921 2017-07-31  Martin Liska  <mliska@suse.cz>
21922
21923         PR sanitize/81530
21924         * convert.c (convert_to_integer_1): Guard condition with flag_sanitize_p
21925         also with current_function_decl non-null equality.
21926
21927 2017-07-31  Jakub Jelinek  <jakub@redhat.com>
21928
21929         PR sanitizer/81604
21930         * ubsan.c (ubsan_type_descriptor): For UBSAN_PRINT_ARRAY don't
21931         change type to the element type, instead add eltype variable and
21932         use it where we are interested in the element type.
21933
21934         PR tree-optimization/81603
21935         * ipa-polymorphic-call.c
21936         (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Perform
21937         offset arithmetic in offset_int, bail out if the resulting bit offset
21938         doesn't fit into shwi.
21939
21940 2017-07-31  Martin Liska  <mliska@suse.cz>
21941
21942         * gimplify.c (mostly_copy_tree_r): Remove Java specific hunk.
21943         (gimplify_save_expr): Fix comment.
21944
21945 2017-07-30  H.J. Lu  <hongjiu.lu@intel.com>
21946
21947         PR target/79793
21948         * config/i386/i386.c (ix86_function_arg): Update arguments for
21949         exception handler.
21950         (ix86_compute_frame_layout): Set the initial stack offset to
21951         INCOMING_FRAME_SP_OFFSET.  Update red-zone offset with
21952         INCOMING_FRAME_SP_OFFSET.
21953         (ix86_expand_epilogue): Don't pop the 'ERROR_CODE' off the
21954         stack before exception handler returns.
21955         * config/i386/i386.h (INCOMING_FRAME_SP_OFFSET): Add the
21956         the 'ERROR_CODE' for exception handler.
21957
21958 2017-07-30  Uros Bizjak  <ubizjak@gmail.com>
21959
21960         * config/i386/i386.h (ASM_PRINTF_EXTENSIONS): New macro.
21961         (ASM_OUTPUT_REG_PUSH): Rewrite with new operand modifiers.
21962         (ASM_OUTPUT_REG_POP): Ditto.
21963         * config/i386/i386.c (ix86_asm_output_function_label): Use fputs
21964         instead of asm_fprintf to output pure string.
21965
21966 2017-07-29  Jakub Jelinek  <jakub@redhat.com>
21967
21968         * debug.h (struct gcc_debug_hooks): Add IMPLICIT argument
21969         to imported_module_or_decl hook.
21970         (debug_nothing_tree_tree_tree_bool): Remove.
21971         (debug_nothing_tree_tree_tree_bool_bool): New declaration.
21972         * debug.c (do_nothing_debug_hooks): Use
21973         debug_nothing_tree_tree_tree_bool_bool instead of
21974         debug_nothing_tree_tree_tree_bool.
21975         * vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
21976         * dbxout.c (dbx_debug_hooks, xcoff_debug_hooks): Likewise.
21977         * sdbout.c (sdb_debug_hooks): Likewise.
21978         * dwarf2out.c (dwarf2_lineno_debug_hooks): Likewise.
21979         (gen_namespace_die): Add DW_AT_export_symbols attribute if
21980         langhook wants it.
21981         (dwarf2out_imported_module_or_decl): Add IMPLICIT argument,
21982         if true, -gdwarf-5 and decl will have DW_AT_export_symbols
21983         attribute, don't add anything.
21984
21985 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21986
21987         * fold-const.c (fold_build1_stat_loc): Remove _stat from name.
21988         (fold_build2_stat_loc): Likewise.
21989         (fold_build3_stat_loc): Likewise.
21990         * fold-const.h (fold_build1, fold_build2, fold_build3): Adjust.
21991         (fold_build1_loc): Remove macro.
21992         (fold_build2_loc): Likewise.
21993         (fold_build3_loc): Likewise.
21994
21995 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
21996
21997         * gimple.c (gimple_build_debug_bind_stat): Remove _stat from name.
21998         (gimple_build_debug_bind_source_stat): Likewise.
21999         * gimple.h (gimple_build_debug_bind): Remove macro.
22000         (gimple_build_debug_bind_source): Likewise.
22001
22002 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22003
22004         * bitmap.c (bitmap_alloc): Adjust.
22005         (bitmap_gc_alloc): Likewise.
22006         * bitmap.h (bitmap_initialize_stat): Remove _stat from name.
22007
22008 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22009
22010         * bitmap.c (bitmap_obstack_alloc_stat): Rename to bitmap_alloc.
22011         (bitmap_gc_alloc_stat): Rename to bitmap_gc_alloc.
22012         * bitmap.h (bitmap_obstack_alloc_stat): Adjust prototype.
22013         (bitmap_gc_alloc_stat): Likewise.
22014         (BITMAP_ALLOC, BITMAP_GGC_ALLOC): Adjust.
22015
22016 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22017
22018         * rtl.c (shallow_copy_rtx_stat): Remove _stat from name.
22019         * rtl.h (shallow_copy_rtx): Remove macro.
22020
22021 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22022
22023         * emit-rtl.c (gen_raw_REG): Adjust.
22024         * gengenrtl.c (gendef): Likewise.
22025         * rtl.c (rtx_alloc_stat): Remove _stat from name.
22026         * rtl.h (rtx_alloc): Remove macro.
22027
22028 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22029
22030         * tree.c (build_tree_list_vec_stat): Remove _stat from name.
22031         (build_tree_list_stat): Likewise.
22032         * tree.h (build_tree_list): Remove macro.
22033         (build_tree_list_vec): Likewise.
22034
22035 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22036
22037         * tree.c (make_vector_stat): Remove _stat from name.
22038         (build_vector_stat): Likewise.
22039         * tree.h (make_vector_stat): Remove macro.
22040         (build_vector_stat): Likewise.
22041
22042 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22043
22044         * tree.h (build_var_debug_value): Remove prototype.
22045
22046 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22047
22048         * tree.c (tree_cons_stat): Remove _stat from name.
22049         * tree.h (tree_cons): Remove macro.
22050
22051 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22052
22053         * tree.c (build_vl_exp_stat): Remove _stat from name.
22054         * tree.h (build_vl_exp): Remove macro.
22055
22056 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22057
22058         * tree.c (build_decl_stat): Remove _stat from name.
22059         * tree.h (build_decl): Remove macro.
22060
22061 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22062
22063         * gimple.c (gimple_build_with_ops_stat): Adjust.
22064         (gimple_alloc_stat): Remove _stat from name.
22065         * gimple.h (gimple_alloc): Remove macro.
22066
22067 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22068
22069         * tree.c (make_tree_vec_stat): Remove _stat from name.
22070         (grow_tree_vec_stat): Likewise.
22071         * tree.h (make_tree_vec_stat): Adjust prototype.
22072         (grow_tree_vec_stat): Likewise.
22073         (make_tree_vec): Remove macro.
22074         (grow_tree_vec): Likewise.
22075
22076 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22077
22078         * fold-const.c (fold_build1_stat_loc): Adjust.
22079         (fold_build2_stat_loc): Likewise.
22080         (fold_build3_stat_loc): Likewise.
22081         * tree.c (build0_stat): Remove _stat from name.
22082         (build1_stat): Likewise.
22083         (build2_stat): Likewise.
22084         (build3_stat): Likewise.
22085         (build4_stat): Likewise.
22086         (build5_stat): Likewise.
22087         * tree.h (build1_loc): Remove macro, and rename _stat function
22088         to this.
22089         (build2_loc): Likewise.
22090         (build3_loc): Likewise.
22091         (build4_loc): Likewise.
22092         (build5_loc): Likewise.
22093
22094 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22095
22096         * tree.c (make_int_cst_stat): Remove _stat from name.
22097         * tree.h (make_int_cst_stat): Adjust prototype.
22098         (make_int_cst): Remove macro.
22099
22100 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22101
22102         * tree.c (make_tre_binfo_stat): Remove _stat from name.
22103         * tree.h (make_tree_binfo_stat): Adjust prototype.
22104         (make_tree_binfo): Remove.
22105
22106 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22107
22108         * tree.c (copy_node_stat): Rename to copy_node.
22109         (build_distinct_type_copy): Adjust.
22110         * tree.h (copy_node_stat): Adjust prototype.
22111         (copy_node): Remove macro.
22112
22113 2017-07-28  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
22114
22115         * tree.c (make_node_stat): rename to make_node.
22116         (build_tree_list_stat): Adjust.
22117         (build0_stat): Likewise.
22118         (build2_stat): Likewise.
22119         (build3_stat): Likewise.
22120         (build4_stat): Likewise.
22121         (build5_stat): Likewise.
22122         (build_decl_stat): Likewise.
22123         * tree.h (make_node_stat): Adjust prototype.
22124         (make_node): remove macro.
22125
22126 2017-07-28  Peter Bergner  <bergner@vnet.ibm.com>
22127
22128         * config/rs6000/ppc-auxv.h (PPC_FEATURE2_DARN): New define.
22129         (PPC_FEATURE2_SCV): Likewise.
22130         * config/rs6000/rs6000.c (cpu_supports_info): Use them.
22131
22132 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
22133
22134         * config/aarch64/aarch64.c
22135         (aarch64_internal_mov_immediate): Add new special pattern.
22136         * config/aarch64/aarch64.md (*movdi_aarch64):
22137         Add reg/32bit const mov case.
22138
22139 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
22140             Richard Sandiford <richard.sandiford@linaro.org>
22141
22142         * config/aarch64/aarch64.md (mov<mode>): Generalize.
22143         (*movhf_aarch64, *movsf_aarch64, *movdf_aarch64):
22144         Add integer and movi cases.
22145         (movi-split-hf-df-sf split, fp16): New.
22146         (enabled): Added TARGET_FP_F16INST.
22147         * config/aarch64/iterators.md (GPF_HF): New.
22148         * config/aarch64/predicates.md (aarch64_reg_or_fp_float): New.
22149
22150 2017-07-28  Tamar Christina  <tamar.christina@arm.com>
22151
22152         * config/aarch64/aarch64.c
22153         (aarch64_simd_container_mode): Add prototype.
22154         (aarch64_expand_mov_immediate): Add HI support.
22155         (aarch64_reinterpret_float_as_int, aarch64_float_const_rtx_p: New.
22156         (aarch64_can_const_movi_rtx_p): New.
22157         (aarch64_preferred_reload_class):
22158         Remove restrictions of using FP registers for certain SIMD operations.
22159         (aarch64_rtx_costs): Added new cost for CONST_DOUBLE moves.
22160         (aarch64_valid_floating_const): Add integer move validation.
22161         (aarch64_simd_imm_scalar_p): Remove.
22162         (aarch64_output_scalar_simd_mov_immediate): Generalize function.
22163         (aarch64_legitimate_constant_p): Expand list of supported cases.
22164         * config/aarch64/aarch64-protos.h
22165         (aarch64_float_const_rtx_p, aarch64_can_const_movi_rtx_p): New.
22166         (aarch64_reinterpret_float_as_int): New.
22167         (aarch64_simd_imm_scalar_p): Remove.
22168         * config/aarch64/constraints.md (Uvi): New.
22169         (Dd): Split into Ds and new Dd.
22170         * config/aarch64/aarch64.md (*movsi_aarch64):
22171         Add SIMD mov case.
22172         (*movdi_aarch64): Add SIMD mov case.
22173
22174 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
22175
22176         * tree-predcom.c: (struct chain): Handle store-store chain in which
22177         stores for elimination only store loop invariant values.
22178         (execute_pred_commoning_chain): Ditto.
22179         (prepare_initializers_chain_store_elim): Ditto.
22180         (prepare_finalizers): Ditto.
22181         (is_inv_store_elimination_chain): New function.
22182         (initialize_root_vars_store_elim_1): New function.
22183
22184 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
22185
22186         * tree-predcom.c: Revise general description of the pass.
22187         (enum chain_type): New enum type for store elimination.
22188         (struct chain): New field supporting store elimination.
22189         (struct component): Ditto.
22190         (dump_chain): Dump store-stores chain.
22191         (release_chain): Release resources.
22192         (split_data_refs_to_components): Compute and create component
22193         contains only stores for elimination.
22194         (get_chain_last_ref_at): New function.
22195         (make_invariant_chain): Initialization.
22196         (make_rooted_chain): Specify chain type in parameter and record it.
22197         (add_looparound_copies): Skip for store-stores chain.
22198         (determine_roots_comp): Compute type of chain and pass it to
22199         make_rooted_chain.
22200         (initialize_root_vars_store_elim_2): New function.
22201         (finalize_eliminated_stores): New function.
22202         (remove_stmt): Handle store for elimination.
22203         (execute_pred_commoning_chain): Execute predictive commoning on
22204         store-store chains.
22205         (determine_unroll_factor): Skip unroll for store-stores chain.
22206         (prepare_initializers_chain_store_elim): New function.
22207         (prepare_initializers_chain): Hanlde store-store chain.
22208         (prepare_finalizers_chain, prepare_finalizers): New function.
22209         (tree_predictive_commoning_loop): Return integer value indicating
22210         if loop is unrolled or lcssa form is corrupted.
22211         (tree_predictive_commoning): Rewrite for lcssa form if necessary.
22212
22213 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
22214
22215         * tree-predcom.c (initialize_root): Delete.
22216         (execute_pred_commoning_chain): Initialize root vars and replace
22217         reference of non-combined chain directly, rather than call above
22218         function.
22219
22220 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
22221
22222         * tree-predcom.c (ref_at_iteration): Add parameter NITERS.  Compute
22223         memory reference to DR at (NITERS + ITERS)-th iteration of loop.
22224
22225 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
22226
22227         * tree-predcom.c (struct chain): New field init_seq.
22228         (release_chain): Release init_seq.
22229         (prepare_initializers_chain): Record intialization stmts in above
22230         field.
22231         (insert_init_seqs): New function.
22232         (tree_predictive_commoning_loop): Call insert_init_seqs.
22233
22234 2017-07-28  Bin Cheng  <bin.cheng@arm.com>
22235
22236         * tree-predcom.c (determine_roots_comp): Skip trivial components.
22237
22238 2017-07-28  Richard Biener  <rguenther@suse.de>
22239
22240         * match.pd: Remove superfluous :c.
22241         * genmatch.c (simplify::id): Add member.
22242         (lower_commutative, lower_opt_convert, lower_cond, lower_for):
22243         Copy id.
22244         (current_id): New global.
22245         (dt_node::parent): Move from ...
22246         (dt_operand::parent): ... here.  Add for_id member.
22247         (is_a_helper <dt_operand *>::test): DT_TRUE is also a dt_operand.
22248         (decision_tree::find_node): Relax order requirement when
22249         merging DT_TRUE nodes to ones inbetween the current simplify
22250         and the one we try to merge with.  Add diagnostic whenever
22251         we need to enforce pattern order by not merging.
22252         (decision_tree::insert): Set current_id.
22253         (decision_tree::print_node): Dump parent node and for_id.
22254         (parser::last_id): Add member.
22255         (parser::push_simplify): Assign unique id.
22256         (parser::parser): Initialize last_id.
22257
22258 2017-07-28  Martin Liska  <mliska@suse.cz>
22259
22260         PR sanitizer/81340
22261         * sanopt.c (sanitize_rewrite_addressable_params): Set VALUE_EXPR after
22262         gimple_build_debug_bind.
22263
22264 2017-07-28  Richard Biener  <rguenther@suse.de>
22265
22266         PR tree-optimization/81502
22267         * match.pd: Add pattern combining BIT_INSERT_EXPR with
22268         BIT_FIELD_REF.
22269         * tree-cfg.c (verify_expr): Verify types of BIT_FIELD_REF
22270         size/pos operands.
22271         (verify_gimple_assign_ternary): Likewise for BIT_INSERT_EXPR pos.
22272         * gimple-fold.c (maybe_canonicalize_mem_ref_addr): Use bitsizetype
22273         for BIT_FIELD_REF args.
22274         * fold-const.c (make_bit_field_ref): Likewise.
22275         * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise.
22276
22277 2017-07-28  Jakub Jelinek  <jakub@redhat.com>
22278
22279         PR sanitizer/80998
22280         * sanopt.c (pass_sanopt::execute): Handle IFN_UBSAN_PTR.
22281         * tree-ssa-alias.c (call_may_clobber_ref_p_1): Likewise.
22282         * flag-types.h (enum sanitize_code): Add SANITIZER_POINTER_OVERFLOW.
22283         Or it into SANITIZER_UNDEFINED.
22284         * ubsan.c: Include gimple-fold.h and varasm.h.
22285         (ubsan_expand_ptr_ifn): New function.
22286         (instrument_pointer_overflow): New function.
22287         (maybe_instrument_pointer_overflow): New function.
22288         (instrument_object_size): Formatting fix.
22289         (pass_ubsan::execute): Call instrument_pointer_overflow
22290         and maybe_instrument_pointer_overflow.
22291         * internal-fn.c (expand_UBSAN_PTR): New function.
22292         * ubsan.h (ubsan_expand_ptr_ifn): Declare.
22293         * sanitizer.def (__ubsan_handle_pointer_overflow,
22294         __ubsan_handle_pointer_overflow_abort): New builtins.
22295         * tree-ssa-tail-merge.c (merge_stmts_p): Handle IFN_UBSAN_PTR.
22296         * internal-fn.def (UBSAN_PTR): New internal function.
22297         * opts.c (sanitizer_opts): Add pointer-overflow.
22298         * lto-streamer-in.c (input_function): Handle IFN_UBSAN_PTR.
22299         * fold-const.c (build_range_check): Compute pointer range check in
22300         integral type if pointer arithmetics would be needed.  Formatting
22301         fixes.
22302
22303 2017-07-28  Martin Liska  <mliska@suse.cz>
22304
22305         PR sanitizer/81460
22306         * sanopt.c (sanitize_rewrite_addressable_params): Do not rewrite
22307         parameters that are of a variable-length.
22308
22309 2017-07-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22310
22311         * config.gcc (powerpc-*-rtems*): Remove rs6000/eabi.h.  Add
22312         rs6000/biarch64.h.
22313         * config/rs6000/rtems.h (ASM_DECLARE_FUNCTION_SIZE): New macro.
22314         (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Likewise.
22315         (CRT_CALL_STATIC_FUNCTION): Likewise.
22316         (ASM_DEFAULT_SPEC): New define.
22317         (ASM_SPEC32): Likewise.
22318         (ASM_SPEC64): Likewise.
22319         (ASM_SPEC_COMMON): Likewise.
22320         (ASM_SPEC): Likewise.
22321         (INVALID_64BIT): Likewise.
22322         (LINK_OS_DEFAULT_SPEC): Likewise.
22323         (LINK_OS_SPEC32): Likewise.
22324         (LINK_OS_SPEC64): Likewise.
22325         (POWERPC_LINUX): Likewise.
22326         (PTRDIFF_TYPE): Likewise.
22327         (RESTORE_FP_PREFIX): Likewise.
22328         (RESTORE_FP_SUFFIX): Likewise.
22329         (SAVE_FP_PREFIX): Likewise.
22330         (SAVE_FP_SUFFIX): Likewise.
22331         (SIZE_TYPE): Likewise.
22332         (SUBSUBTARGET_OVERRIDE_OPTIONS): Likewise.
22333         (TARGET_64BIT): Likewise.
22334         (TARGET_64BIT): Likewise.
22335         (TARGET_AIX): Likewise.
22336         (WCHAR_TYPE_SIZE): Likewise.
22337         (WCHAR_TYPE): Undefine.
22338         (TARGET_OS_CPP_BUILTINS): Add 64-bit PowerPC defines.
22339         (CPP_OS_DEFAULT_SPEC): Use previous CPP_OS_RTEMS_SPEC.
22340         (CPP_OS_RTEMS_SPEC): Delete.
22341         (SUBSUBTARGET_EXTRA_SPECS): Remove cpp_os_rtems.  Add
22342         asm_spec_common, asm_spec32, asm_spec64, link_os_spec32, and
22343         link_os_spec64.
22344         * config/rs6000/t-rtems: Add mcpu=e6500/m64 multilibs.
22345
22346 2017-07-28  Jakub Jelinek  <jakub@redhat.com>
22347
22348         PR tree-optimization/81578
22349         * tree-parloops.c (build_new_reduction): Bail out if
22350         reduction_code isn't one of the standard OpenMP reductions.
22351         Move the details printing after that decision.
22352
22353 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
22354
22355         * config/rs6000/predicates.md (volatile_mem_operand): Remove code
22356         related to reload_in_progress.
22357         (splat_input_operand): Likewise.
22358         * config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
22359         Delete prototype.
22360         * config/rs6000/rs6000.c (machine_function): Remove sdmode_stack_slot
22361         field.
22362         (TARGET_EXPAND_TO_RTL_HOOK): Delete.
22363         (TARGET_INSTANTIATE_DECLS): Likewise.
22364         (legitimate_indexed_address_p): Delete reload_in_progress code.
22365         (rs6000_debug_legitimate_address_p): Likewise.
22366         (rs6000_eliminate_indexed_memrefs): Likewise.
22367         (rs6000_emit_le_vsx_store): Likewise.
22368         (rs6000_emit_move_si_sf_subreg): Likewise.
22369         (rs6000_emit_move): Likewise.
22370         (register_to_reg_type): Likewise.
22371         (rs6000_pre_atomic_barrier): Likewise.
22372         (rs6000_machopic_legitimize_pic_address): Likewise.
22373         (rs6000_allocate_stack_temp): Likewise.
22374         (rs6000_address_for_fpconvert): Likewise.
22375         (rs6000_address_for_altivec): Likewise.
22376         (rs6000_secondary_memory_needed_rtx): Delete function.
22377         (rs6000_check_sdmode): Likewise.
22378         (rs6000_alloc_sdmode_stack_slot): Likewise.
22379         (rs6000_instantiate_decls): Likewise.
22380         * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_RTX): Delete.
22381         * config/rs6000/rs6000.md (splitter for *movsi_got_internal):
22382         Delete reload_in_progress.
22383         (*vec_reload_and_plus_<mptrsize>): Likewise.
22384         * config/rs6000/vsx.md (vsx_mul_v2di): Likewise.
22385         (vsx_div_v2di): Likewise.
22386         (vsx_udiv_v2di): Likewise.
22387
22388 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
22389
22390         * config/rs6000/rs6000.opt (mlra): Replace with stub.
22391         * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Delete OPTION_MASK_LRA.
22392         * config/rs6000/rs6000.c (TARGET_LRA_P): Delete.
22393         (rs6000_debug_reg_global): Delete print of LRA status.
22394         (rs6000_option_override_internal): Delete dead LRA related code.
22395         (rs6000_lra_p): Delete function.
22396         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mlra.
22397
22398 2017-07-27  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22399
22400         * config.gcc (riscv*-*-elf*): Add (riscv*-*-rtems*).
22401         * config/riscv/rtems.h: New file.
22402
22403 2017-07-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
22404             Sudakshina Das  <sudi.das@arm.com>
22405
22406         * config/aarch64/aarch64.md
22407         (define_split for and<mode>3nr_compare): Move
22408         non aarch64_logical_operand to a register.
22409         (define_split for and_<SHIFT:optab><mode>3nr_compare0): Move non
22410         register immediate operand to a register.
22411         * config/aarch64/predicates.md (aarch64_mov_imm_operand): New.
22412
22413 2017-07-27  Peter Bergner  <bergner@vnet.ibm.com>
22414
22415         PR middle-end/81564
22416         * tree-cfg.c (group_case_labels_stmt): Handle already deleted blocks.
22417
22418 2017-07-27  Richard Biener  <rguenther@suse.de>
22419
22420         PR tree-optimization/81573
22421         PR tree-optimization/81494
22422         * tree-vect-loop.c (vect_create_epilog_for_reduction): Handle
22423         multi defuse cycle case.
22424
22425 2017-07-27  Richard Biener  <rguenther@suse.de>
22426
22427         PR tree-optimization/81571
22428         * tree-vect-slp.c (vect_build_slp_tree): Properly verify reduction
22429         PHIs.
22430
22431 2017-07-27  Eric Botcazou  <ebotcazou@adacore.com>
22432
22433         * config/sparc/sparc.c (sparc_option_override): Set MASK_FSMULD flag
22434         earlier and only if MASK_FPU is set.  Adjust formatting.
22435
22436 2017-07-27  Martin Liska  <mliska@suse.cz>
22437
22438         * opt-functions.awk: Add validation of value of Init.
22439         * optc-gen.awk: Pass new argument.
22440
22441 2017-07-27  Martin Liska  <mliska@suse.cz>
22442
22443         * auto-profile.c (autofdo_source_profile::update_inlined_ind_target):
22444         Fix wrong condition.
22445
22446 2017-07-27  Martin Liska  <mliska@suse.cz>
22447
22448         * auto-profile.c (afdo_annotate_cfg): Assign zero counts to
22449         BBs and edges seen by autoFDO.
22450
22451 2017-07-27  Richard Biener  <rguenther@suse.de>
22452
22453         PR tree-optimization/81502
22454         * tree-ssa.c (non_rewritable_lvalue_p): Handle BIT_INSERT_EXPR
22455         with incompatible but same sized type.
22456         (execute_update_addresses_taken): Likewise.
22457
22458 2017-07-27  James Greenhalgh  <james.greenhalgh@arm.com>
22459
22460         * tree-ssa-loop-ch.c (pass_ch::process_loop_p): Guard on
22461         flag_tree_loop_vectorize rather than flag_tree_vectorize.
22462
22463 2017-07-27  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
22464
22465         PR target/81534
22466         * config/s390/s390.md ("*atomic_compare_and_swap<mode>_1")
22467         ("*atomic_compare_and_swapdi_2", "*atomic_compare_and_swapsi_3"):
22468         Change s_operand to memory_operand.
22469
22470 2017-07-27  Richard Sandiford  <richard.sandiford@linaro.org>
22471
22472         * config/rs6000/rs6000-protos.h (rs6000_emit_le_vsx_permute): Declare.
22473         * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Replace with...
22474         (rs6000_emit_le_vsx_permute): ...this.  Take the destination as input.
22475         Emit instructions rather than returning an expression.  Handle TFmode
22476         and KFmode by casting to TImode.
22477         (rs6000_emit_le_vsx_load): Update to use rs6000_emit_le_vsx_permute.
22478         (rs6000_emit_le_vsx_store): Likewise.
22479         * config/rs6000/vsx.md (VSX_TI): New iterator.
22480         (*vsx_le_permute_<mode>): Use it instead of VSX_LE_128.
22481         (*vsx_le_undo_permute_<mode>): Likewise.
22482         (*vsx_le_perm_load_<mode>): Use rs6000_emit_le_vsx_permute to
22483         emit the split sequence.
22484         (*vsx_le_perm_store_<mode>): Likewise.
22485
22486 2017-07-27  Jakub Jelinek  <jakub@redhat.com>
22487
22488         PR tree-optimization/81555
22489         PR tree-optimization/81556
22490         * tree-ssa-reassoc.c (rewrite_expr_tree): Add NEXT_CHANGED argument,
22491         if true, force CHANGED for the recursive invocation.
22492         (reassociate_bb): Remember original length of ops array, pass
22493         len != orig_len as NEXT_CHANGED in rewrite_expr_tree call.
22494
22495         * attribs.c (decl_attributes): Imply noinline, noclone and no_icf
22496         attributes for noipa attribute.  For naked attribute use
22497         lookup_attribute first before lookup_attribute_spec.
22498         * final.c (rest_of_handle_final): Disable IPA RA for functions with
22499         noipa attribute.
22500         * ipa-visibility.c (non_local_p): Fix comment typos.  Return true
22501         for functions with noipa attribute.
22502         (cgraph_externally_visible_p): Return true for functions with noipa
22503         attribute.
22504         * cgraph.c (cgraph_node::get_availability): Return AVAIL_INTERPOSABLE
22505         for functions with noipa attribute.
22506         * doc/extend.texi: Document noipa function attribute.
22507         * tree-ssa-structalias.c (refered_from_nonlocal_fn): Set *nonlocal_p
22508         also for functions with noipa attribute.
22509         (ipa_pta_execute): Set nonlocal_p also for nodes with noipa attribute.
22510
22511 2017-07-26  Andrew Pinski  <apinski@cavium.com>
22512
22513         * config/aarch64/aarch64.c (thunderx_vector_cost): Decrease cost of
22514         vec_unalign_load_cost and vec_unalign_store_cost.
22515
22516 2017-07-26  Michael Meissner  <meissner@linux.vnet.ibm.com>
22517
22518         * config/rs6000/rs6000-cpus.def (ISA_2_7_MASKS_SERVER): Delete
22519         -mvsx-small-integer option.
22520         (ISA_3_0_MASKS_IEEE): Likewise.
22521         (OTHER_VSX_VECTOR_MASKS): Likewise.
22522         (POWERPC_MASKS): Likewise.
22523         * config/rs6000/rs6000.opt (-mvsx-small-integer): Likewise.
22524         * config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): Simplify
22525         code, only testing for DImode being allowed in non-VSX floating
22526         point registers.
22527         (rs6000_init_hard_regno_mode_ok): Change TARGET_VSX_SMALL_INTEGER
22528         to TARGET_P8_VECTOR test.  Remove redundant VSX test inside of
22529         another VSX test.
22530         (rs6000_option_override_internal): Delete -mvsx-small-integer.
22531         (rs6000_expand_vector_set): Change TARGET_VSX_SMALL_INTEGER to
22532         TARGET_P8_VECTOR test.
22533         (rs6000_secondary_reload_simple_move): Likewise.
22534         (rs6000_preferred_reload_class): Delete TARGET_VSX_SMALL_INTEGER,
22535         since TARGET_P9_VECTOR was already tested.
22536         (rs6000_opt_masks): Remove -mvsx-small-integer.
22537         * config/rs6000/vsx.md (vsx_extract_<mode>): Delete
22538         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
22539         used.
22540         (vsx_extract_<mode>_p9): Delete TARGET_VSX_SMALL_INTEGER, since a
22541         test for TARGET_VEXTRACTUB was used, and that uses
22542         TARGET_P9_VECTOR.
22543         (p9 extract splitter): Likewise.
22544         (vsx_extract_<mode>_di_p9): Likewise.
22545         (vsx_extract_<mode>_store_p9): Likewise.
22546         (vsx_extract_si): Delete TARGET_VSX_SMALL_INTEGER, since a test
22547         for TARGET_P9_VECTOR was used.  Delete code that is now dead with
22548         the elimination of TARGET_VSX_SMALL_INTEGER.
22549         (vsx_extract_<mode>_p8): Likewise.
22550         (vsx_ext_<VSX_EXTRACT_I:VS_scalar>_fl_<FL_CONV:mode>): Likewise.
22551         (vsx_ext_<VSX_EXTRACT_I:VS_scalar>_ufl_<FL_CONV:mode>): Likewise.
22552         (vsx_set_<mode>_p9): Likewise.
22553         (vsx_set_v4sf_p9): Likewise.
22554         (vsx_set_v4sf_p9_zero): Likewise.
22555         (vsx_insert_extract_v4sf_p9): Likewise.
22556         (vsx_insert_extract_v4sf_p9_2): Likewise.
22557         * config/rs6000/rs6000.md (sign extend splitter): Change
22558         TARGET_VSX_SMALL_INTEGER to TARGET_P8_VECTOR test.
22559         (floatsi<mode>2_lfiwax_mem): Likewise.
22560         (floatunssi<mode>2_lfiwzx_mem): Likewise.
22561         (float<QHI:mode><FP_ISA3:mode>2): Delete TARGET_VSX_SMALL_INTEGER,
22562         since a test for TARGET_P9_VECTOR was used.
22563         (float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
22564         (floatuns<QHI:mode><FP_ISA3:mode>2): Likewise.
22565         (floatuns<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
22566         (fix_trunc<mode>si2): Change TARGET_VSX_SMALL_INTEGER to
22567         TARGET_P8_VECTOR test.
22568         (fix_trunc<mode>si2_stfiwx): Likewise.
22569         (fix_trunc<mode>si2_internal): Likewise.
22570         (fix_trunc<SFDF:mode><QHI:mode>2): Delete
22571         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
22572         used.
22573         (fix_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
22574         (fixuns_trunc<mode>si2): Change TARGET_VSX_SMALL_INTEGER to
22575         TARGET_P8_VECTOR test.
22576         (fixuns_trunc<mode>si2_stfiwx): Likewise.
22577         (fixuns_trunc<SFDF:mode><QHI:mode>2): Delete
22578         TARGET_VSX_SMALL_INTEGER, since a test for TARGET_P9_VECTOR was
22579         used.
22580         (fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
22581         (fctiw<u>z_<mode>_smallint): Delete TARGET_VSX_SMALL_INTEGER,
22582         since a test for TARGET_P9_VECTOR was used.
22583         (splitter for loading small constants): Likewise.
22584
22585 2017-07-26  Andrew Pinski  <apinski@cavium.com>
22586
22587         * config/aarch64/aarch64.c (thunderx_vector_cost): Fix
22588         vec_fp_stmt_cost.
22589
22590 2017-07-26  H.J. Lu  <hongjiu.lu@intel.com>
22591
22592         PR target/81563
22593         * config/i386/i386.c (sp_valid_at): Properly check CFA offset.
22594         (fp_valid_at): Likewise.
22595
22596 2017-07-26  James Greenhalgh  <james.greenhalgh@arm.com>
22597
22598         * config/aarch64/aarch64.c (cortexa57_addrcost_table): Remove.
22599         (qdf24xx_addrcost_table): Likewise.
22600         (cortexa57_tunings): Update to use generic_branch_cost.
22601         (cortexa72_tunings): Likewise.
22602         (cortexa73_tunings): Likewise.
22603         (qdf24xx_tunings): Likewise.
22604
22605 2017-07-26  James Greenhalgh  <james.greenhalgh@arm.com>
22606
22607         * config/aarch64/aarch64.c (cortexa57_branch_cost): Remove.
22608         (thunderx2t99_branch_cost): Likewise.
22609         (cortexa35_tunings): Update to use generic_branch_cost.
22610         (cortexa53_tunings): Likewise.
22611         (cortexa57_tunings): Likewise.
22612         (cortexa72_tunings): Likewise.
22613         (cortexa73_tunings): Likewise.
22614         (thunderx2t99_tunings): Likewise.
22615
22616 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22617
22618         * config/sparc/sparc.c (dump_target_flag_bits): Dump MASK_FSMULD.
22619         (sparc_option_override): Honour MASK_FSMULD.
22620         * config/sparc/sparc.h (MASK_FEATURES): Add MASK_FSMULD.
22621         * config/sparc/sparc.md (muldf3_extend): Use TARGET_FSMULD.
22622         * config/sparc/sparc.opt (mfsmuld): New option.
22623         * doc/invoke.texi (mfsmuld): Document option.
22624
22625 2017-07-26  Marek Polacek  <polacek@redhat.com>
22626
22627         PR middle-end/70992
22628         * tree.c (build2_stat): Don't set TREE_CONSTANT on divisions by zero.
22629
22630 2017-07-26  Richard Biener  <rguenther@suse.de>
22631
22632         * gimple-match-head.c (do_valueize): Return OP if valueize
22633         returns NULL_TREE.
22634         (get_def): New helper to get at the def stmt of a SSA name
22635         if valueize allows.
22636         * genmatch.c (dt_node::gen_kids_1): Use get_def instead of
22637         do_valueize to get at the def stmt.
22638         (dt_operand::gen_gimple_expr): Simplify do_valueize calls.
22639
22640 2017-07-26  Wilco Dijkstra  <wdijkstr@arm.com>
22641
22642         PR middle-end/46932
22643         * auto-inc-dec.c (parse_add_or_inc): Block autoinc on sfp.
22644
22645 2017-07-26  Martin Liska  <mliska@suse.cz>
22646
22647         PR sanitize/81186
22648         * function.c (expand_function_start): Make expansion of
22649         nonlocal_goto_save_area after parm_birth_insn.
22650
22651 2017-07-26  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22652
22653         * config/sparc/sparc.c (sparc_option_override): Remove MASK_FPU
22654         from all CPU target flags enable members.
22655
22656 2017-07-26  Richard Biener  <rguenther@suse.de>
22657
22658         * genmatch.c (dt_simplify::gen): Make iterator vars const.
22659         (decision_tree::gen): Make 'type' const.
22660         (write_predicate): Likewise.
22661
22662 2017-07-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
22663
22664         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok):
22665         Eliminate TARGET_UPPER_REGS_{DF,DI,SF} usage.
22666         (rs6000_option_override_internal): Likewise.
22667         (rs6000_expand_vector_set): Likewise.
22668         * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Delete.
22669         (TARGET_UPPER_REGS_SF): Likewise.
22670         (TARGET_UPPER_REGS_DI): Likewise.
22671         (TARGET_VEXTRACTUB): Eliminate TARGET_UPPER_REGS_{DF,DI,SF}.
22672         (TARGET_DIRECT_MOVE_64BIT): Likewise.
22673         * config/rs6000/rs6000.md (ALTIVEC_DFORM): Likewise.
22674         (float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
22675         (Splitters for DI constants in Altivec registers): Likewise.
22676         * config/rs6000/vsx.md (vsx_set_<mode>_p9): Likewise.
22677         (vsx_set_v4sf_p9): Likewise.
22678         (vsx_set_v4sf_p9_zero): Likewise.
22679         (vsx_insert_extract_v4sf_p9): Likewise.
22680         (vsx_insert_extract_v4sf_p9_2): Likewise.
22681
22682 2017-07-25  Carl Love  <cel@us.ibm.com>
22683
22684         * doc/extend.texi: Update the built-in documentation file for the
22685         existing built-in functions
22686         vector signed char vec_cnttz (vector signed char);
22687         vector unsigned char vec_cnttz (vector unsigned char);
22688         vector signed short vec_cnttz (vector signed short);
22689         vector unsigned short vec_cnttz (vector unsigned short);
22690         vector signed int vec_cnttz (vector signed int);
22691         vector unsigned int vec_cnttz (vector unsigned int);
22692         vector signed long long vec_cnttz (vector signed long long);
22693         vector unsigned long long vec_cnttz (vector unsigned long long);
22694
22695 2017-07-25  Andrew Pinski  <apinski@cavium.com>
22696
22697         * tree-ssa-uninit.c (warn_uninitialized_vars): Don't warn about memory
22698         accesses where the use is for the first operand of a BIT_INSERT.
22699
22700 2017-07-25  Jim Wilson  <jim.wilson@linaro.org>
22701
22702         PR bootstrap/81521
22703         * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look
22704         for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS.
22705
22706 2017-07-25  Jim Wilson  <jim.wilson@linaro.org>
22707
22708         * config/i386/gstabs.h: Delete.
22709         * config/i386/openbsd.h, config/i386/t-openbsd: Likewise.
22710
22711 2017-07-25  Uros Bizjak  <ubizjak@gmail.com>
22712
22713         * config/i386/i386.c (ix86_decompose_address): Do not check for
22714         register RTX when looking at index_reg or base_reg.
22715         * config/i386/i386.h (INCOMING_RETURN_ADDR_RTX): Use stack_pointer_rtx.
22716
22717 2017-07-25  Eric Botcazou  <ebotcazou@adacore.com>
22718
22719         * gimple.c (gimple_assign_set_rhs_with_ops): Do not ask gsi_replace
22720         to update EH info here.
22721
22722 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
22723
22724         * match.pd ((X * CST1) * CST2): Simplify to X * (CST1 * CST2).
22725
22726 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
22727
22728         * match.pd ((X * CST) * Y): Reassociate to (X * Y) * CST.
22729
22730 2017-07-25  Torsten Duwe  <duwe@suse.de>
22731
22732         * common.opt: Introduce -fpatchable-function-entry
22733         command line option, and its variables function_entry_patch_area_size
22734         and function_entry_patch_area_start.
22735         * opts.c (common_handle_option): Add -fpatchable_function_entry_ case,
22736         including a two-value parser.
22737         * target.def (print_patchable_function_entry): New target hook.
22738         * targhooks.h (default_print_patchable_function_entry): New function.
22739         * targhooks.c (default_print_patchable_function_entry): Likewise.
22740         * toplev.c (process_options): Switch off IPA-RA if
22741         patchable function entries are being generated.
22742         * varasm.c (assemble_start_function): Look at the
22743         patchable-function-entry command line switch and current
22744         function attributes and maybe generate NOP instructions by
22745         calling the print_patchable_function_entry hook.
22746         * doc/extend.texi: Document patchable_function_entry attribute.
22747         * doc/invoke.texi: Document -fpatchable_function_entry
22748         command line option.
22749         * doc/tm.texi.in (TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY):
22750         New target hook.
22751         * doc/tm.texi: Re-generate.
22752
22753 2017-07-25  Jakub Jelinek  <jakub@redhat.com>
22754
22755         PR target/81532
22756         * config/i386/constraints.md (Yd, Ye): Use ALL_SSE_REGS for
22757         TARGET_AVX512DQ rather than TARGET_AVX512BW.
22758
22759 2017-07-25  Tamar Christina  <tamar.christina@arm.com>
22760
22761         * config/arm/parsecpu.awk (all_cores): Remove duplicates.
22762
22763 2017-07-25  Richard Biener  <rguenther@suse.de>
22764
22765         PR tree-optimization/81455
22766         * tree-ssa-loop-unswitch.c (find_loop_guard): Make sure to
22767         not walk in cycles when looking for guards.
22768
22769 2017-07-25  Richard Biener  <rguenther@suse.de>
22770
22771         PR tree-optimization/81529
22772         * tree-vect-stmts.c (process_use): Disregard live induction PHIs
22773         when optimizing backedge uses.
22774
22775 2017-07-25  David Edelsohn  <dje.gcc@gmail.com>
22776
22777         * dwarf2asm.c (dw2_asm_output_nstring): Encode double quote
22778         character for AIX.
22779         * dwarf2out.c (output_macinfo): Copy debug_line_section_label
22780         to dl_section_ref.  On AIX, append an expression to subtract
22781         the size of the section length to dl_section_ref.
22782
22783 2017-07-25  Segher Boessenkool  <segher@kernel.crashing.org>
22784
22785         * configure.ac: If any of the config.* scripts fail, exit 1.
22786         * configure: Regenerate.
22787
22788 2017-07-25  Richard Biener  <rguenther@suse.de>
22789
22790         PR middle-end/81546
22791         * tree-ssa-operands.c (verify_imm_links): Remove cap on number
22792         of immediate uses, be more verbose on errors.
22793
22794 2017-07-25  Richard Biener  <rguenther@suse.de>
22795
22796         PR tree-optimization/81510
22797         * tree-vect-loop.c (vect_is_simple_reduction): When the
22798         reduction stmt is not inside the loop bail out.
22799
22800 2017-07-25  Richard Biener  <rguenther@suse.de>
22801
22802         PR tree-optimization/81303
22803         * tree-vect-loop-manip.c (vect_loop_versioning): Build
22804         profitability check against LOOP_VINFO_NITERSM1.
22805
22806 2017-07-25  Alexander Monakov  <amonakov@ispras.ru>
22807
22808         * domwalk.c (cmp_bb_postorder): Simplify.
22809         (sort_bbs_postorder): New function.  Use it...
22810         (dom_walker::walk): ...here to optimize common cases.
22811
22812 2017-07-25  Martin Liska  <mliska@suse.cz>
22813
22814         PR ipa/81520
22815         * ipa-visibility.c (function_and_variable_visibility): Make the
22816         redirection just on target that supports aliasing.
22817         Fix GNU coding style.
22818
22819 2017-07-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
22820
22821         PR libgcc/61152
22822         * config/aarch64/rtems.h: Add GCC Runtime Library Exception.
22823         Format changes.
22824         * config/arm/rtems.h: Likewise.
22825         * config/bfin/rtems.h: Likewise.
22826         * config/i386/rtemself.h: Likewise.
22827         * config/lm32/rtems.h: Likewise.
22828         * config/m32c/rtems.h: Likewise.
22829         * config/m68k/rtemself.h: Likewise.
22830         * config/microblaze/rtems.h: Likewise.
22831         * config/mips/rtems.h: Likewise.
22832         * config/moxie/rtems.h: Likewise.
22833         * config/nios2/rtems.h: Likewise.
22834         * config/powerpcspe/rtems.h: Likewise.
22835         * config/rs6000/rtems.h: Likewise.
22836         * config/rtems.h: Likewise.
22837         * config/sh/rtems.h: Likewise.
22838         * config/sh/rtemself.h: Likewise.
22839         * config/sparc/rtemself.h: Likewise.
22840
22841 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
22842
22843         PR 81487
22844         * hsa-brig.c (brig_init): Use xasprintf instead of asprintf.
22845         * gimple-pretty-print.c (dump_profile, dump_probability): Same.
22846         * tree-ssa-structalias.c (alias_get_name): Same.
22847
22848 2017-07-25  Bin Cheng  <bin.cheng@arm.com>
22849
22850         PR target/81414
22851         * config/aarch64/cortex-a57-fma-steering.c (analyze): Skip fmul/fmac
22852         instructions if no du chain is found.
22853
22854 2017-07-25  Georg-Johann Lay  <avr@gjlay.de>
22855
22856         * config/avr/avr-log.c (avr_log_vadump) ['T']: Print NULL-TREE.
22857
22858 2017-07-25  Richard Biener  <rguenther@suse.de>
22859
22860         PR middle-end/81505
22861         * fold-const.c (fold_negate_const): TREE_OVERFLOW should be
22862         sticky.
22863
22864 2017-07-24  Michael Meissner  <meissner@linux.vnet.ibm.com>
22865
22866         * config/rs6000/rs6000-cpus.def (ISA_2_6_MASKS_SERVER): Delete
22867         upper-regs options.
22868         (ISA_2_7_MASKS_SERVER): Likewise.
22869         (ISA_3_0_MASKS_IEEE): Likewise.
22870         (OTHER_P8_VECTOR_MASKS): Likewise.
22871         (OTHER_VSX_VECTOR_MASKS): Likewise.
22872         (POWERPC_MASKS): Likewise.
22873         (power7 cpu): Use ISA_2_6_MASKS_SERVER instead of using a
22874         duplicate list of options.
22875         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Remove
22876         explicit -mupper-regs options.
22877         * config/rs6000/rs6000.opt (-mvsx-scalar-memory): Delete
22878         -mupper-regs* options.  Delete -mvsx-scalar-memory, which was an
22879         alias for -mupper-regs-df.
22880         * config/rs6000/rs6000.c (rs6000_setup_reg_addr_masks): Likewise.
22881         (rs6000_init_hard_regno_mode_ok): Likewise.
22882         (rs6000_option_override_internal): Likewise.
22883         (rs6000_opt_masks): Likewise.
22884         * config/rs6000/rs6000.h (TARGET_UPPER_REGS_DF): Define upper regs
22885         options in terms of whether -mvsx or -mpower8-vector was used.
22886         (TARGET_UPPER_REGS_DI): Likewise.
22887         (TARGET_UPPER_REGS_SF): Likewise.
22888         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete the
22889         -mupper-regs-* options.
22890
22891 2017-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
22892
22893         * passes.c (emergency_dump_function): Print some empty lines and a
22894         header before the RTL dump.
22895
22896 2017-07-24  Segher Boessenkool  <segher@kernel.crashing.org>
22897
22898         * cfgrtl.c (rtl_dump_bb): Don't call NEXT_INSN on NULL.
22899
22900 2017-07-24  Wilco Dijkstra  <wdijkstr@arm.com>
22901
22902         PR target/79041
22903         * config/aarch64/aarch64.c (aarch64_classify_symbol):
22904         Avoid SYMBOL_SMALL_ABSOLUTE for literals with pc-relative literals.
22905
22906 2017-07-24  Carl Love  <cel@us.ibm.com>
22907
22908         * config/rs6000/rs6000-c.c: Add support for built-in functions
22909         vector float vec_extract_fp32_from_shorth (vector unsigned short);
22910         vector float vec_extract_fp32_from_shortl (vector unsigned short);
22911         * config/rs6000/altivec.h (vec_extract_fp_from_shorth,
22912         vec_extract_fp_from_shortl): Add defines for the two builtins.
22913         * config/rs6000/rs6000-builtin.def (VEXTRACT_FP_FROM_SHORTH,
22914         VEXTRACT_FP_FROM_SHORTL): Add BU_P9V_OVERLOAD_1 and BU_P9V_VSX_1
22915         new builtins.
22916         * config/rs6000/vsx.md vsx_xvcvhpsp): Add define_insn.
22917         (vextract_fp_from_shorth, vextract_fp_from_shortl): Add define_expands.
22918         * doc/extend.texi: Update the built-in documentation file for the
22919         new built-in function.
22920
22921 2017-07-24  Jakub Jelinek  <jakub@redhat.com>
22922
22923         PR bootstrap/81521
22924         * tree.def: Remove TYPE_METHODS documentation, adjust TYPE_FIELDS
22925         documentation.
22926         * doc/generic.texi: Likewise.
22927         * config/i386/winnt-cxx.c (i386_pe_adjust_class_at_definition): Look
22928         for FUNCTION_DECLs in TYPE_FIELDS rather than TYPE_METHODS.
22929
22930 2017-07-24  Jackson Woodruff  <jackson.woodruff@arm.com>
22931
22932         * config/aarch64/aarch64-simd.md (aarch64_mla_elt_merge<mode>): New.
22933         (aarch64_mls_elt_merge<mode>): Likewise.
22934
22935 2017-07-23  Krister Walfridsson  <krister.walfridsson@gmail.com>
22936
22937         * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not
22938         having __cxa_atexit.
22939
22940 2017-07-23  Michael Collison  <michael.collison@arm.com>
22941
22942         * config/arm/arm.c (arm_option_override): Deprecate
22943         use of -mstructure-size-boundary.
22944         * config/arm/arm.opt: Deprecate -mstructure-size-boundary.
22945         * doc/invoke.texi: Deprecate -mstructure-size-boundary.
22946
22947 2017-07-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
22948
22949         PR target/80695
22950         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
22951         Reduce cost estimate for direct moves.
22952
22953 2017-07-23  Uros Bizjak  <ubizjak@gmail.com>
22954
22955         PR target/80569
22956         * config/i386/i386.c (ix86_option_override_internal): Disable
22957         BMI, BMI2 and TBM instructions for -m16.
22958
22959 2017-07-21  Carl Love  <cel@us.ibm.com>
22960
22961         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
22962         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
22963         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
22964         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
22965         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
22966         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
22967         VMULOSW): New enum "unspec" values.
22968         (altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
22969         altivec_vmulosw): New patterns.
22970         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
22971         VMULOSW): Add definitions.
22972
22973 2017-07-21  Jim Wilson  <jim.wilson@linaro.org>
22974
22975         * config/aarch64/aarch64-cores.def (falkor): Add AARCH64_FL_RDMA.
22976         (qdf24xx): Likewise.
22977         * config/aarch64/aarch64-options-extensions.def (rdma); New.
22978         * config/aarch64/aarch64.h (AARCH64_FL_RDMA): New.
22979         (AARCH64_FL_V8_1): Renumber.
22980         (AARCH64_FL_FOR_ARCH8_1): Add AARCH64_FL_RDMA.
22981         (AARCH64_ISA_RDMA): Use AARCH64_FL_RDMA.
22982         * config/aarch64/arm_neon.h: Use +rdma instead of arch=armv8.1-a.
22983         * doc/invoke.texi (AArch64 Options): Mention +rmda in -march docs.  Add
22984         rdma to feature modifiers list.
22985
22986 2017-07-21  Yury Gribov  <tetra2005@gmail.com>
22987
22988         PR middle-end/56727
22989         * ipa-visibility (function_and_variable_visibility): Convert
22990         recursive PLT call to direct call if appropriate.
22991
22992 2017-07-21  Andrew Pinski  <apinski@cavium.com>
22993
22994         * tree-ssa-sccvn.c (vn_nary_op_eq): Check BIT_INSERT_EXPR's
22995         operand 1 to see if the types precision matches.
22996         * fold-const.c (operand_equal_p): Likewise.
22997
22998 2017-07-21  Richard Biener  <rguenther@suse.de>
22999
23000         PR tree-optimization/81303
23001         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs): Pass
23002         in datarefs vector.  Allow NULL dr0 for no peeling cost estimate.
23003         (vect_peeling_hash_get_lowest_cost): Adjust.
23004         (vect_enhance_data_refs_alignment): Likewise.  Use
23005         vect_get_peeling_costs_all_drs to compute the penalty for no
23006         peeling to match up costs.
23007
23008 2017-07-21  Richard Biener  <rguenther@suse.de>
23009
23010         PR tree-optimization/81500
23011         * tree-vect-loop.c (vect_is_simple_reduction): Properly fail if
23012         we didn't identify a reduction path.
23013
23014 2017-07-21  Tom de Vries  <tom@codesourcery.com>
23015             Cesar Philippidis  <cesar@codesourcery.com>
23016
23017         PR gcov-profile/81442
23018         * config/nvptx/nvptx.c (nvptx_goacc_reduction_init): Add missing edge
23019         probabilities.
23020
23021 2017-07-21  Tom de Vries  <tom@codesourcery.com>
23022
23023         PR lto/81430
23024         * config/nvptx/nvptx.c (nvptx_override_options_after_change): New
23025         function.
23026         (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): Define to
23027         nvptx_override_options_after_change.
23028
23029 2017-07-21  Ulrich Drepper  <drepper@redhat.com>
23030
23031         * dwarf2out.c (output_file_names): Avoid double testing for
23032         dwarf_version >= 5.
23033
23034 2017-07-21  Georg-Johann Lay  <avr@gjlay.de>
23035
23036         * doc/invoke.texi (AVR Built-in Functions): Re-layout section.
23037
23038 2016-07-21  Jan Hubicka  <hubicka@ucw.cz>
23039
23040         * cfgcleanup.c (flow_find_cross_jump): Do not crossjump across
23041         hot/cold regions.
23042         (try_crossjump_to_edge): Do not punt on partitioned functions.
23043
23044 2016-07-21  Jan Hubicka  <hubicka@ucw.cz>
23045
23046         * bb-reorder.c (find_rarely_executed_basic_blocks_and_crossing_edges):
23047         Put all BBs reachable only via paths crossing cold region to cold
23048         region.
23049         * cfgrtl.c (find_bbs_reachable_by_hot_paths): New function.
23050
23051 2016-07-21  Richard Biener  <rguenther@suse.de>
23052
23053         PR tree-optimization/81303
23054         * tree-vect-loop.c (vect_estimate_min_profitable_iters): Take
23055         into account prologue and epilogue iterations when raising
23056         min_profitable_iters to sth at least covering one vector iteration.
23057
23058 2017-07-21  Tamar Christina  <tamar.christina@arm.com>
23059
23060         * config/arm/arm.c (arm_test_cpu_arch_dat):
23061         Check for overlap.
23062
23063 2017-07-20  Nathan Sidwell  <nathan@acm.org>
23064
23065         Remove TYPE_METHODS.
23066         * tree.h (TYPE_METHODS): Delete.
23067         * dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS.
23068         * dbxout.c (dbxout_type_fields): Ignore FUNCTION_DECLs.
23069         (dbxout_type_methods): Scan TYPE_FIELDS.
23070         (dbxout_type): Don't check TYPE_METHODS here.
23071         * function.c (use_register_for_decl): Always ignore register for
23072         class types when not optimizing.
23073         * ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan.
23074         * tree.c (free_lang_data_in_type): Stitch out member functions and
23075         templates from TYPE_FIELDS.
23076         (build_distinct_type_copy, verify_type_variant,
23077         verify_type): Member fns are on TYPE_FIELDS.
23078         * tree-dump.c (dequeue_and_dump): No TYPE_METHODS.
23079         * tree-pretty-print.c (dump_generic_node): Likewise.
23080
23081 2017-07-20  Jakub Jelinek  <jakub@redhat.com>
23082
23083         PR target/80846
23084         * config/i386/i386.c (ix86_expand_vector_init_general): Handle
23085         V2TImode and V4TImode.
23086         (ix86_expand_vector_extract): Likewise.
23087         * config/i386/sse.md (VMOVE): Enable V4TImode even for just
23088         TARGET_AVX512F, instead of only for TARGET_AVX512BW.
23089         (ssescalarmode): Handle V4TImode and V2TImode.
23090         (VEC_EXTRACT_MODE): Add V4TImode and V2TImode.
23091         (*vec_extractv2ti, *vec_extractv4ti): New insns.
23092         (VEXTRACTI128_MODE): New mode iterator.
23093         (splitter for *vec_extractv?ti first element): New.
23094         (VEC_INIT_MODE): New mode iterator.
23095         (vec_init<mode>): Consolidate 3 expanders into one using
23096         VEC_INIT_MODE mode iterator.
23097
23098 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
23099
23100         * lra-assigns.c (pseudo_compare_func): Fix comparison step based on
23101         non_spilled_static_chain_regno_p.
23102
23103 2017-07-20  Alexander Monakov  <amonakov@ispras.ru>
23104
23105         * gimple-ssa-store-merging.c (sort_by_bitpos): Return 0 on equal bitpos.
23106
23107 2017-07-20  Jan Hubicka  <hubicka@ucw.cz>
23108
23109         * bb-reorder.c (connect_traces): Allow copying of blocks within
23110         single partition.
23111
23112 2017-07-20  Richard Biener  <rguenther@suse.de>
23113
23114         * gimple.h (gimple_phi_result): Add gphi * overload.
23115         (gimple_phi_result_ptr): Likewise.
23116         (gimple_phi_arg): Likewise.  Adjust index assert to only
23117         allow actual argument accesses rather than all slots available
23118         by capacity.
23119         (gimple_phi_arg_def): Add gphi * overload.
23120         * tree-phinodes.c (make_phi_node): Initialize only actual
23121         arguments.
23122         (resize_phi_node): Clear memory not covered by old node,
23123         do not initialize excess argument slots.
23124         (reserve_phi_args_for_new_edge): Initialize new argument slot
23125         completely.
23126
23127 2017-07-20  Bin Cheng  <bin.cheng@arm.com>
23128
23129         PR tree-optimization/81388
23130         Revert r238585:
23131         2016-07-21  Bin Cheng  <bin.cheng@arm.com>
23132
23133         * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Clean up
23134         by removing computation of may_be_zero.
23135
23136 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
23137             Tom de Vries  <tom@codesourcery.com>
23138
23139         PR middle-end/81030
23140         * cfgbuild.c (find_many_sub_basic_blocks): Update REG_BR_PROB note
23141         when gimple level profile disagrees with what RTL expander did.
23142
23143 2017-07-20  Richard Biener  <rguenther@suse.de>
23144
23145         PR tree-optimization/61171
23146         * tree-vectorizer.h (slp_instance): Add reduc_phis member.
23147         (vect_analyze_stmt): Add slp instance parameter.
23148         (vectorizable_reduction): Likewise.
23149         * tree-vect-loop.c (vect_analyze_loop_operations): Adjust.
23150         (vect_is_simple_reduction): Deal with chains not detected
23151         as SLP reduction chain, specifically not properly associated
23152         chains containing a mix of plus/minus.
23153         (get_reduction_op): Remove.
23154         (get_initial_defs_for_reduction): Simplify, pass in whether
23155         this is a reduction chain, pass in the SLP node for the PHIs.
23156         (vect_create_epilog_for_reduction): Get the SLP instance as
23157         arg and adjust.
23158         (vectorizable_reduction): Get the SLP instance as arg.
23159         During analysis remember the SLP node with the PHIs in the
23160         instance.  Simplify getting at the vectorized reduction PHIs.
23161         * tree-vect-slp.c (vect_slp_analyze_node_operations): Pass
23162         through SLP instance.
23163         (vect_slp_analyze_operations): Likewise.
23164         * tree-vect-stms.c (vect_analyze_stmt): Likewise.
23165         (vect_transform_stmt): Likewise.
23166
23167 2017-07-20  Tom de Vries  <tom@codesourcery.com>
23168
23169         PR tree-optimization/81489
23170         * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Move
23171         read of phi arg location to before loop that modifies phi.
23172
23173 2017-07-20  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
23174
23175         * match.pd (((m1 >/</>=/<= m2) * d -> (m1 >/</>=/<= m2) ? d : 0):
23176         New pattern.
23177
23178 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
23179
23180         PR middle-end/81331
23181         * except.c (execute): Fix ordering issue.
23182
23183 2018-07-19  Segher Boessenkool  <segher@kernel.crashing.org>
23184
23185         PR rtl-optimization/81423
23186         * combine.c (make_compound_operation_int): Don't try to optimize
23187         the AND of a SUBREG of an LSHIFTRT if that SUBREG is paradoxical.
23188
23189 2017-07-19  Segher Boessenkool  <segher@kernel.crashing.org>
23190
23191         PR rtl-optimization/81423
23192         * simplify-rtx.c (simplify_truncation): Handle truncating an IOR
23193         with a constant that is -1 in the truncated to mode.
23194
23195 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
23196
23197         * predict.c (propagate_unlikely_bbs_forward): Break out from ...
23198         (determine_unlikely_bbs): ... here.
23199         * predict.h (propagate_unlikely_bbs_forward): Declare.
23200         * cfgexpand.c (pass_expand::execute): Use it.
23201         * bb-reorder.c (sanitize_hot_paths): Do not consider known to be
23202         unlikely edges.
23203         (find_rarely_executed_basic_blocks_and_crossing_edges): Use
23204         propagate_unlikely_bbs_forward.
23205
23206 2017-07-19  Jan Hubicka  <hubicka@ucw.cz>
23207
23208         PR middle-end/81331
23209         * except.c (maybe_add_nop_after_section_switch): New function.
23210         (execute): Use it.
23211
23212 2017-07-19  Tom de Vries  <tom@codesourcery.com>
23213
23214         * gimple.h (gimple_phi_set_arg): Make assert more strict.
23215
23216 2017-07-19  Tom de Vries  <tom@codesourcery.com>
23217
23218         * gimple.h (gimple_phi_arg): Make assert more strict.
23219
23220 2017-07-19  Steven Munroe  <munroesj@gcc.gnu.org>
23221
23222         * config.gcc (powerpc*-*-*): Add mmintrin.h.
23223         * config/rs6000/mmintrin.h: New file.
23224         * config/rs6000/x86intrin.h [__ALTIVEC__]: Include mmintrin.h.
23225
23226 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
23227
23228         PR tree-optimization/81346
23229         * match.pd: Optimize (X - 1U) <= INT_MAX-1U into (int) X > 0.
23230
23231 2017-07-19  Tom de Vries  <tom@codesourcery.com>
23232
23233         * config/nvptx/nvptx.md (VECIM): Add V2DI.
23234
23235 2017-07-19  Tom de Vries  <tom@codesourcery.com>
23236
23237         * config/nvptx/nvptx-modes.def: Add V2DImode.
23238         * config/nvptx/nvptx-protos.h (nvptx_data_alignment): Declare.
23239         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2DImode.
23240         (nvptx_output_mov_insn): Handle lack of mov.b128.
23241         (nvptx_print_operand): Handle 'H' and 'L' codes.
23242         (nvptx_vector_mode_supported): Allow V2DImode.
23243         (nvptx_preferred_simd_mode): New function.
23244         (nvptx_data_alignment): New function.
23245         (TARGET_VECTORIZE_PREFERRED_SIMD_MODE): Redefine to
23246         nvptx_preferred_simd_mode.
23247         * config/nvptx/nvptx.h (STACK_BOUNDARY, BIGGEST_ALIGNMENT): Change from
23248         64 to 128 bits.
23249         (DATA_ALIGNMENT): Define.  Set to nvptx_data_alignment.
23250
23251 2017-07-19  Tom de Vries  <tom@codesourcery.com>
23252
23253         * config/nvptx/nvptx-modes.def: New file.  Add V2SImode.
23254         * config/nvptx/nvptx.c (nvptx_ptx_type_from_mode): Handle V2SImode.
23255         (nvptx_vector_mode_supported): New function.  Allow V2SImode.
23256         (TARGET_VECTOR_MODE_SUPPORTED_P): Redefine to nvptx_vector_mode_supported.
23257         * config/nvptx/nvptx.md (VECIM): New mode iterator. Add V2SI.
23258         (mov<VECIM>_insn): New define_insn.
23259         (define_expand "mov<VECIM>): New define_expand.
23260
23261 2017-07-19  Tom de Vries  <tom@codesourcery.com>
23262
23263         * config/nvptx/nvptx.c (nvptx_print_operand): Handle v2 vector mode.
23264
23265 2017-07-19  Jakub Jelinek  <jakub@redhat.com>
23266
23267         PR tree-optimization/81346
23268         * fold-const.h (fold_div_compare, range_check_type): Declare.
23269         * fold-const.c (range_check_type): New function.
23270         (build_range_check): Use range_check_type.
23271         (fold_div_compare): No longer static, rewritten into
23272         a match.pd helper function.
23273         (fold_comparison): Don't call fold_div_compare here.
23274         * match.pd (X / C1 op C2): New optimization using fold_div_compare
23275         as helper function.
23276
23277 2017-07-19  Nathan Sidwell  <nathan@acm.org>
23278
23279         * tree.h (TYPE_MINVAL, TYPE_MAXVAL): Rename to ...
23280         (TYPE_MIN_VALUE_RAW, TYPE_MAX_VALUE_RAW): ... these.
23281         * tree.c (find_decls_types_r, verify_type): Use
23282         TYPE_{MIN,MAX}_VALUE_RAW.
23283         * lto-streamer-out.c (DFS::DFS_write_tree_body): Likewise.
23284         (hash_tree): Likewise.
23285         * tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
23286         Likewise.
23287         * tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
23288         Likewise.
23289
23290 2017-07-18  Tom de Vries  <tom@codesourcery.com>
23291
23292         PR middle-end/81464
23293         * omp-expand.c (expand_omp_for_static_chunk): Handle
23294         equal-argument loop exit phi.
23295
23296 2017-07-18  Uros Bizjak  <ubizjak@gmail.com>
23297
23298         PR target/81471
23299         * config/i386/i386.md (rorx_immediate_operand): New mode attribute.
23300         (*bmi2_rorx<mode>3_1): Use rorx_immediate_operand as
23301         operand 2 predicate.
23302         (*bmi2_rorxsi3_1_zext): Use const_0_to_31_operand as
23303         operand 2 predicate.
23304         (ror,rol -> rorx splitters): Use const_int_operand as
23305         operand 2 predicate.
23306
23307 2017-06-18  Richard Biener  <rguenther@suse.de>
23308
23309         PR tree-optimization/81410
23310         * tree-vect-stmts.c (vectorizable_load): Properly adjust for
23311         the gap in the ! slp_perm SLP case after each group.
23312
23313 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
23314
23315         PR middle-end/81463
23316         * cfgloopmanip.c (scale_loop_profile): Watch out for zero frequency
23317         again.
23318
23319 2017-07-18  Jan Hubicka  <hubicka@ucw.cz>
23320
23321         PR middle-end/81462
23322         * predict.c (set_even_probabilities): Cleanup; do not affect
23323         probabilities that are already known.
23324         (combine_predictions_for_bb): Call even when count is set.
23325
23326 2017-07-18  Nathan Sidwell  <nathan@acm.org>
23327
23328         * tree-parloops.c (try_transform_to_exit_first_loop_alt): Use
23329         TYPE_MAX_VALUE.
23330
23331 2017-07-18  Bin Cheng  <bin.cheng@arm.com>
23332
23333         PR target/81408
23334         * tree-ssa-loop-niter.c (number_of_iterations_exit): Dump missed
23335         optimization for loop niter analysis.
23336
23337 2017-07-18  Georg-Johann Lay  <avr@gjlay.de>
23338
23339         PR target/81473
23340         * config/avr/avr.c (avr_optimize_casesi): Don't use
23341         INT8_MIN, INT8_MAX, UINT8_MAX, INT16_MIN, INT16_MAX, UINT16_MAX.
23342
23343 2017-07-18  Robin Dapp  <rdapp@linux.vnet.ibm.com>
23344
23345         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Remove
23346         body_cost_vec from _vect_peel_extended_info.
23347         (vect_peeling_hash_get_lowest_cost): Do not set body_cost_vec.
23348         (vect_peeling_hash_choose_best_peeling): Remove body_cost_vec and
23349         npeel.
23350
23351 2017-07-18  Bin Cheng  <bin.cheng@arm.com>
23352
23353         * config/arm/arm.c (emit_unlikely_jump): Remove unused var.
23354
23355 2017-07-18  Richard Biener  <rguenther@suse.de>
23356
23357         PR tree-optimization/80620
23358         PR tree-optimization/81403
23359         * tree-ssa-pre.c (phi_translate_1): Clear range and points-to
23360         info when re-using a VN table entry.
23361
23362 2017-07-18  Richard Biener  <rguenther@suse.de>
23363
23364         PR tree-optimization/81418
23365         * tree-vect-loop.c (vectorizable_reduction): Properly compute
23366         vectype_in.  Verify that with lane-reducing reduction operations
23367         we have a single def-use cycle.
23368
23369 2017-07-17  Carl Love  <cel@us.ibm.com>
23370
23371         Revert commit r249424   2017-06-20  Carl Love  <cel@us.ibm.com>
23372
23373         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23374         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
23375         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
23376         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
23377         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
23378         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
23379         VMULOSW): New enum "unspec" values.
23380         (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
23381         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
23382         altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
23383         altivec_vmulosw): New patterns.
23384         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
23385         VMULOSW): Add definitions.
23386
23387 2017-07-17  Uros Bizjak  <ubizjak@gmail.com>
23388
23389         * config/alpha/alpha.c: Include predict.h.
23390
23391 2017-07-17  Yury Gribov  <tetra2005@gmail.com>
23392
23393         * tree-vrp.c (compare_assert_loc): Fix comparison function
23394         to return predictable results.
23395
23396 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23397
23398         * config/arc/arc.md (adddi3): Remove support for mexpand-adddi
23399         option.
23400         (subdi3): Likewise.
23401         * config/arc/arc.opt (mexpand-adddi): Deprecate it.
23402         * doc/invoke.texi (mexpand-adddi): Update text.
23403
23404 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23405
23406         * config/arc/arc.md (clzsi2): Expand to an arc_clzsi2 instruction
23407         that also clobbers the CC register. The old expand code is moved
23408         to ...
23409         (*arc_clzsi2): ... here.
23410         (ctzsi2): Expand to an arc_ctzsi2 instruction that also clobbers
23411         the CC register. The old expand code is moved to ...
23412         (arc_ctzsi2): ... here.
23413
23414 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23415
23416         * config/arc/arc.opt (mindexed-loads): Use initial value
23417         TARGET_INDEXED_LOADS_DEFAULT.
23418         (mauto-modify-reg): Use initial value
23419         TARGET_AUTO_MODIFY_REG_DEFAULT.
23420         * config/arc/elf.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
23421         (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
23422         * config/arc/linux.h (TARGET_INDEXED_LOADS_DEFAULT): Define.
23423         (TARGET_AUTO_MODIFY_REG_DEFAULT): Likewise.
23424
23425 2017-07-17  Martin Liska  <mliska@suse.cz>
23426
23427         PR sanitizer/81302
23428         * opts.c (finish_options): Do not allow -fgnu-tm
23429         w/ -fsanitize={kernel-,}address.  Say sorry.
23430
23431 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
23432
23433         PR target/81369
23434         * tree-loop-distribution.c (classify_partition): Only assert on
23435         numer of iterations.
23436         (merge_dep_scc_partitions): Delete prameter.  Update function call.
23437         (distribute_loop): Remove code handling loop with unknown niters.
23438         (pass_loop_distribution::execute): Skip loop with unknown niters.
23439
23440 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
23441
23442         PR target/81369
23443         * tree-loop-distribution.c (merge_dep_scc_partitions): Sink call to
23444         function sort_partitions_by_post_order.
23445
23446 2017-07-17  Bin Cheng  <bin.cheng@arm.com>
23447
23448         PR tree-optimization/81374
23449         * tree-loop-distribution.c (pass_loop_distribution::execute): Record
23450         the max index of basic blocks, rather than number of basic blocks.
23451
23452 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23453
23454         * config/arc/arc-protos.h (arc_legitimate_pc_offset_p): Remove
23455         proto.
23456         (arc_legitimate_pic_operand_p): Likewise.
23457         * config/arc/arc.c (arc_legitimate_pic_operand_p): Remove
23458         function.
23459         (arc_needs_pcl_p): Likewise.
23460         (arc_legitimate_pc_offset_p): Likewise.
23461         (arc_legitimate_pic_addr_p): Remove LABEL_REF case, as this
23462         function is also used in constrains.md.
23463         (arc_legitimate_constant_p): Use arc_legitimate_pic_addr_p to
23464         validate pic constants. Handle CONST_INT, CONST_DOUBLE, MINUS and
23465         PLUS.  Only return true/false in known cases, otherwise assert.
23466         (arc_legitimate_address_p): Remove arc_legitimate_pic_addr_p as it
23467         is already called in arc_legitimate_constant_p.
23468         * config/arc/arc.h (CONSTANT_ADDRESS_P): Consider also LABEL for
23469         pic addresses.
23470         (LEGITIMATE_PIC_OPERAND_P): Use
23471         arc_raw_symbolic_reference_mentioned_p function.
23472         * config/arc/constraints.md (Cpc): Use arc_legitimate_pic_addr_p
23473         function.
23474         (Cal): Likewise.
23475         (C32): Likewise.
23476
23477 2017-07-17  Claudiu Zissulescu  <claziss@synopsys.com>
23478         Andrew Burgess  <andrew.burgess@embecosm.com>
23479
23480         * config/arc/arc-protos.h (arc_compute_function_type): Change prototype.
23481         (arc_return_address_register): New function.
23482         * config/arc/arc.c (arc_handle_fndecl_attribute): New function.
23483         (arc_handle_fndecl_attribute): Add naked attribute.
23484         (TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.
23485         (TARGET_WARN_FUNC_RETURN): Likewise.
23486         (arc_allocate_stack_slots_for_args): New function.
23487         (arc_warn_func_return): Likewise.
23488         (machine_function): Change type fn_type.
23489         (arc_compute_function_type): Consider new naked function type,
23490         change function return type.
23491         (arc_must_save_register): Adapt to handle new
23492         arc_compute_function_type's return type.
23493         (arc_expand_prologue): Likewise.
23494         (arc_expand_epilogue): Likewise.
23495         (arc_return_address_regs): Delete.
23496         (arc_return_address_register): New function.
23497         (arc_epilogue_uses): Use above function.
23498         * config/arc/arc.h (arc_return_address_regs): Delete prototype.
23499         (arc_function_type): Change encoding, add naked type.
23500         (ARC_INTERRUPT_P): Change to handle the new encoding.
23501         (ARC_FAST_INTERRUPT_P): Likewise.
23502         (ARC_NORMAL_P): Define.
23503         (ARC_NAKED_P): Likewise.
23504         (arc_compute_function_type): Delete prototype.
23505         * config/arc/arc.md (in_ret_delay_slot): Use
23506         arc_return_address_register function.
23507         (simple_return): Likewise.
23508         (p_return_i): Likewise.
23509
23510 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
23511
23512         PR tree-optimization/81428
23513         * match.pd (X / X -> one): Don't optimize _Fract divisions, as 1
23514         can't be built for those types.
23515
23516 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
23517
23518         Remove stuff dead since r239246.
23519
23520         * config/avr/avr-arch.h (avr_inform_devices): Remove dead proto.
23521         * config/avr/avr-devices.c (mcu_name, comparator, avr_mcus_str)
23522         (avr_inform_devices): Remove dead stuff.
23523
23524 2017-07-17  Tamar Christina  <tamar.christina@arm.com>
23525
23526         * config/arm/arm_neon.h: Fix softp typo.
23527
23528 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
23529
23530         PR tree-optimization/81365
23531         * tree-ssa-phiprop.c (propagate_with_phi): When considering hoisting
23532         aggregate moves onto bb predecessor edges, make sure there are no
23533         loads that could alias the lhs in between the start of bb and the
23534         loads from *phi.
23535
23536 2017-07-17  Georg-Johann Lay  <avr@gjlay.de>
23537
23538         PR 80929
23539         * config/avr/avr.c (avr_mul_highpart_cost): New static function.
23540         (avr_rtx_costs_1) [TRUNCATE]: Use it to compute mul_highpart cost.
23541         [LSHIFTRT, outer_code = TRUNCATE]: Same.
23542
23543 2017-07-17  Jakub Jelinek  <jakub@redhat.com>
23544
23545         PR tree-optimization/81396
23546         * tree-ssa-math-opts.c (struct symbolic_number): Add n_ops field.
23547         (init_symbolic_number): Initialize it to 1.
23548         (perform_symbolic_merge): Add n_ops from both operands into the new
23549         n_ops.
23550         (find_bswap_or_nop): Don't consider n->n == cmpnop computations
23551         without base_addr as useless if they need more than one operation.
23552         (bswap_replace): Handle !bswap case for NULL base_addr.
23553
23554 2017-07-17  Tom de Vries  <tom@codesourcery.com>
23555
23556         PR target/81069
23557         * config/nvptx/nvptx.c (nvptx_single): Insert diverging branch as late
23558         as possible.
23559
23560 2017-07-17  Sebastian Huber  <sebastian.huber@embedded-brains.de>
23561
23562         * config/sparc/rtemself.h (TARGET_OS_CPP_BUILTINS): Add
23563         conditional builtin define __FIX_LEON3FT_B2BST.
23564
23565 2017-07-17  Daniel Cederman  <cederman@gaisler.com>
23566
23567         * config/sparc/t-rtems: Add mfix-gr712rc multilibs. Replace
23568         MULTILIB_EXCEPTIONS with MULTILIB_REQUIRED. Match -mfix-gr712rc
23569         with -mfix-ut700.
23570
23571 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
23572
23573         PR rtl-optimization/81424
23574         * optabs.c (prepare_cmp_insn): Use copy_to_reg instead of force_reg
23575         to remove potential trapping from operands if -fnon-call-exceptions.
23576
23577 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23578
23579         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Use
23580         profile_proability for scalling.
23581         * scale_profile_for_vect_loop.c (scale_profile_for_vect_loop): Likewise.
23582
23583 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23584
23585         * cgraph.c (cgraph_edge::redirect_call_stmt_to_caller): Cleanup.
23586
23587 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23588
23589         * cfgloopmanip.c (scale_loop_profile): Avoid use of REG_BR_PROB_BASE
23590         fixpoint arithmetics.
23591
23592 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23593
23594         * tree-ssa-loop-unswitch.c (hoist_guard): Avoid use of REG_BR_PROB_BASE
23595         fixpoint arithmetics.
23596
23597 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23598
23599         * asan.c (create_cond_insert_point): Avoid use of REG_BR_PROB_BASE
23600         fixpoint arithmetics.
23601
23602 2017-07-16  Jan Hubicka  <hubicka@ucw.cz>
23603
23604         * profile-count.h (profile_probability::from_reg_br_prob_note,
23605         profile_probability::to_reg_br_prob_note): New functions.
23606         * doc/rtl.texi (REG_BR_PROB_NOTE): Update documentation.
23607         * reg-notes.h (REG_BR_PROB, REG_BR_PRED): Update docs.
23608         * predict.c (probability_reliable_p): Update.
23609         (edge_probability_reliable_p): Update.
23610         (br_prob_note_reliable_p): Update.
23611         (invert_br_probabilities): Update.
23612         (add_reg_br_prob_note): New function.
23613         (combine_predictions_for_insn): Update.
23614         * asan.c (asan_clear_shadow): Update.
23615         * cfgbuild.c (compute_outgoing_frequencies): Update.
23616         * cfgrtl.c (force_nonfallthru_and_redirect): Update.
23617         (update_br_prob_note): Update.
23618         (rtl_verify_edges): Update.
23619         (purge_dead_edges): Update.
23620         (fixup_reorder_chain): Update.
23621         * emit-rtl.c (try_split): Update.
23622         * ifcvt.c (cond_exec_process_insns): Update.
23623         (cond_exec_process_if_block): Update.
23624         (dead_or_predicable): Update.
23625         * internal-fn.c (expand_addsub_overflow): Update.
23626         (expand_neg_overflow): Update.
23627         (expand_mul_overflow): Update.
23628         * loop-doloop.c (doloop_modify): Update.
23629         * loop-unroll.c (compare_and_jump_seq): Update.
23630         * optabs.c (emit_cmp_and_jump_insn_1): Update.
23631         * predict.h: Update.
23632         * reorg.c (mostly_true_jump): Update.
23633         * rtl.h: Update.
23634         * config/aarch64/aarch64.c (aarch64_emit_unlikely_jump): Update.
23635         * config/alpha/alpha.c (emit_unlikely_jump): Update.
23636         * config/arc/arc.c: (emit_unlikely_jump): Update.
23637         * config/arm/arm.c: (emit_unlikely_jump): Update.
23638         * config/bfin/bfin.c (cbranch_predicted_taken_p): Update.
23639         * config/frv/frv.c (frv_print_operand_jump_hint): Update.
23640         * config/i386/i386.c (ix86_expand_split_stack_prologue): Update.
23641         (ix86_print_operand): Update.
23642         (ix86_split_fp_branch): Update.
23643         (predict_jump): Update.
23644         * config/ia64/ia64.c (ia64_print_operand): Update.
23645         * config/mmix/mmix.c (mmix_print_operand): Update.
23646         * config/powerpcspe/powerpcspe.c (output_cbranch): Update.
23647         (rs6000_expand_split_stack_prologue): Update.
23648         * config/rs6000/rs6000.c: Update.
23649         * config/s390/s390.c (s390_expand_vec_strlen): Update.
23650         (s390_expand_vec_movstr): Update.
23651         (s390_expand_cs_tdsi): Update.
23652         (s390_expand_split_stack_prologue): Update.
23653         * config/sh/sh.c (sh_print_operand): Update.
23654         (expand_cbranchsi4): Update.
23655         (expand_cbranchdi4): Update.
23656         * config/sparc/sparc.c (output_v9branch): Update.
23657         * config/spu/spu.c (get_branch_target): Update.
23658         (ea_load_store_inline): Update.
23659         * config/tilegx/tilegx.c (cbranch_predicted_p): Update.
23660         * config/tilepro/tilepro.c: Update.
23661
23662 2017-07-16  Eric Botcazou  <ebotcazou@adacore.com>
23663
23664         * gimplify.c (mostly_copy_tree_r): Revert latest change.
23665         (gimplify_save_expr): Likewise.
23666
23667 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23668
23669         * ipa-visibility.c (function_and_variable_visibility): Fix pasto.
23670
23671 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23672
23673         * ipa-fnsummary.c (pass_data_ipa_fn_summary): Use
23674         TV_IPA_FNSUMMARY.
23675         * timevar.def (TV_IPA_FNSUMMARY): Define.
23676
23677 2017-07-16  Daniel Cederman  <cederman@gaisler.com>
23678
23679         * config/sparc/sparc.md (divdf3_fix): Add NOP to prevent back
23680         to back store errata sensitive sequence from being generated.
23681         (sqrtdf2_fix): Likewise.
23682
23683 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
23684
23685         * tree-ssa-threadupdate.c (compute_path_counts,
23686         update_joiner_offpath_counts): Use profile_probability.
23687
23688 2017-07-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23689
23690         Revert:
23691         2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23692
23693         * config/arm/arm-c.c (arm_cpu_builtins): Define
23694         __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5.
23695
23696 2017-07-14  Kelvin Nilsen  <kelvin@gcc.gnu.org>
23697
23698         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
23699         array entries to represent __ieee128 versions of the
23700         scalar_test_data_class, scalar_test_neg, scalar_extract_exp,
23701         scalar_extract_sig, and scalar_insert_exp built-in functions.
23702         (altivec_resolve_overloaded_builtin): Add special case handling
23703         for the __builtin_scalar_insert_exp function, as represented by
23704         the P9V_BUILTIN_VEC_VSIEDP constant.
23705         * config/rs6000/rs6000-builtin.def (VSEEQP): Add scalar extract
23706         exponent support for __ieee128 argument.
23707         (VSESQP): Add scalar extract signature support for __ieee128
23708         argument.
23709         (VSTDCNQP): Add scalar test negative support for __ieee128
23710         argument.
23711         (VSIEQP): Add scalar insert exponent support for __int128 argument
23712         with __ieee128 result.
23713         (VSIEQPF): Add scalar insert exponent support for __ieee128
23714         argument with __ieee128 result.
23715         (VSTDCQP): Add scalar test data class support for __ieee128
23716         argument.
23717         (VSTDCNQP): Add overload support for scalar test negative with
23718         __ieee128 argument.
23719         (VSTDCQP): Add overload support for scalar test data class
23720         __ieee128 argument.
23721         * config/rs6000/vsx.md (UNSPEC_VSX_SXSIG) Replace
23722         UNSPEC_VSX_SXSIGDP.
23723         (UNSPEC_VSX_SIEXPQP): New constant.
23724         (xsxexpqp): New insn for VSX scalar extract exponent quad
23725         precision.
23726         (xsxsigqp): New insn for VSX scalar extract significand quad
23727         precision.
23728         (xsiexpqpf): New insn for VSX scalar insert exponent quad
23729         precision with floating point argument.
23730         (xststdcqp): New expand for VSX scalar test data class quad
23731         precision.
23732         (xststdcnegqp): New expand for VSX scalar test negative quad
23733         precision.
23734         (xststdcqp): New insn to match expansions for VSX scalar test data
23735         class quad precision and VSX scalar test negative quad precision.
23736         * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Add
23737         special case operand checking to enforce that second operand of
23738         VSX scalar test data class with quad precision argument is a 7-bit
23739         unsigned literal.
23740         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
23741         prototypes and descriptions of __ieee128 versions of
23742         scalar_extract_exp, scalar_extract_sig, scalar_insert_exp,
23743         scalar_test_data_class, and scalar_test_neg built-in functions.
23744
23745 2016-07-14  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
23746
23747         PR tree-optimization/81162
23748         * gimple-ssa-strength-reduction.c (replace_mult_candidate): Don't
23749         replace a negate with an add.
23750
23751 2017-07-14  James Greenhalgh  <james.greenhalgh@arm.com>
23752
23753         * doc/invoke.texi (arm/-mcpu): Document +crypto.
23754
23755 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23756
23757         * config/arm/arm-c.c (arm_cpu_builtins): Define
23758         __ARM_FEATURE_NUMERIC_MAXMIN solely based on TARGET_VFP5.
23759
23760 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23761
23762         * config/arm/arm-cpus.in (cortex-r52): Add new entry.
23763         (armv8-r): Set ARM Cortex-R52 as default CPU.
23764         * config/arm/arm-tables.opt: Regenerate.
23765         * config/arm/arm-tune.md: Regenerate.
23766         * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
23767         Cortex-R52.
23768         * doc/invoke.texi: Mention -mtune=cortex-r52 and availability of fp.dp
23769         extension for -mcpu=cortex-r52.
23770
23771 2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23772
23773         * config/arm/arm-isa.h (isa_bit_FP_ARMv8): Delete enumerator.
23774         (ISA_FP_ARMv8): Define as ISA_FPv5 and ISA_FP_D32.
23775         * config/arm/arm-cpus.in (armv8-r): Define fp.sp as enabling FPv5.
23776         (fp-armv8): Define it as FP_ARMv8 only.
23777         config/arm/arm.h (TARGET_FPU_ARMV8): Delete.
23778         (TARGET_VFP_FP16INST): Define using TARGET_VFP5 rather than
23779         TARGET_FPU_ARMV8.
23780         config/arm/arm.c (arm_rtx_costs_internal): Replace checks against
23781         TARGET_FPU_ARMV8 by checks against TARGET_VFP5.
23782         * config/arm/arm-builtins.c (arm_builtin_vectorized_function): Define
23783         first ARM_CHECK_BUILTIN_MODE definition using TARGET_VFP5 rather
23784         than TARGET_FPU_ARMV8.
23785         * config/arm/arm-c.c (arm_cpu_builtins): Likewise for
23786         __ARM_FEATURE_NUMERIC_MAXMIN macro definition.
23787         * config/arm/arm.md (cmov<mode>): Condition on TARGET_VFP5 rather than
23788         TARGET_FPU_ARMV8.
23789         * config/arm/neon.md (neon_vrint): Likewise.
23790         (neon_vcvt): Likewise.
23791         (neon_<fmaxmin_op><mode>): Likewise.
23792         (<fmaxmin><mode>3): Likewise.
23793         * config/arm/vfp.md (l<vrint_pattern><su_optab><mode>si2): Likewise.
23794         * config/arm/predicates.md (arm_cond_move_operator): Check against
23795         TARGET_VFP5 rather than TARGET_FPU_ARMV8 and fix spacing.
23796
23797 2017-07-14  Jackson Woodruff  <jackson.woodruff@arm.com>
23798
23799         * config/aarch64/aarch64.c (aarch64_print_operand): Move comments
23800         to top of function.
23801
23802 2017-07-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
23803
23804         * gimple-ssa-store-merging.c (clear_bit_region): Replace reference to
23805         loop in comment with memset.
23806
23807 2017-07-14  Martin Liska  <mliska@suse.cz>
23808
23809         * cfgexpand.c (expand_gimple_basic_block): Remove dead comment.
23810         * dwarf2out.c (is_java): Remove the function.
23811         (output_pubname): Remove usage of the function.
23812         (lower_bound_default): Remove usage of DW_LANG_Java.
23813         (gen_compile_unit_die): Likewise.
23814         * gcc.c: Remove compiler defaults for .java and .zip files.
23815         * gimple-expr.c (remove_suffix): Change as there's no longer
23816         extension than 4-letter one.
23817         * gimplify.c (mostly_copy_tree_r): Remove Java-special part.
23818         (gimplify_save_expr): Likewise.
23819         * ipa-utils.h (polymorphic_type_binfo_p): Remove the comment
23820         as it's possible even for other languages than Java.
23821         * langhooks.h (struct lang_hooks): Remove Java from a comment.
23822         * lto-opts.c (lto_write_options): Remove reference to Java.
23823         * opts.c (strip_off_ending): Update file extension handling.
23824         * tree-cfg.c (verify_gimple_call): Remove comment with Java.
23825         * tree-eh.c (lower_resx): Likewise.
23826         * tree.c (free_lang_data_in_type): Remove dead code.
23827         (find_decls_types_r): Likewise.
23828         (build_common_builtin_nodes): Remove Java from a comment.
23829         (verify_type): Remove dead code.
23830         * varasm.c (assemble_external): Remove Java from a comment.
23831
23832 2017-07-14  Martin Liska  <mliska@suse.cz>
23833
23834         * opts.c (finish_options): Add quotes.
23835         (common_handle_option): Likewise.
23836
23837 2017-07-14  Martin Liska  <mliska@suse.cz>
23838
23839         * dbxout.c (get_lang_number): Do not handle GNU Pascal.
23840         * dbxout.h (extern void dbxout_stab_value_internal_label_diff):
23841         Remove N_SO_PASCAL.
23842         * dwarf2out.c (lower_bound_default): Do not handle
23843         DW_LANG_Pascal83.
23844         (gen_compile_unit_die): Likewise.
23845         * gcc.c: Remove default extension binding for GNU Pascal.
23846         * stmt.c: Remove Pascal language from a comment.
23847         * xcoffout.c: Likewise.
23848
23849 2017-07-13  David Malcolm  <dmalcolm@redhat.com>
23850
23851         PR c/81405
23852         * diagnostic-show-locus.c (fixit_cmp): New function.
23853         (layout::layout): Sort m_fixit_hints.
23854         (column_range::column_range): Assert that the values are valid.
23855         (struct char_span): New struct.
23856         (correction::overwrite): New method.
23857         (struct source_line): New struct.
23858         (line_corrections::add_hint): Add assertions.  Reimplement memcpy
23859         calls in terms of classes source_line and char_span, and
23860         correction::overwrite.
23861         (selftest::test_overlapped_fixit_printing_2): New function.
23862         (selftest::diagnostic_show_locus_c_tests): Call it.
23863
23864 2017-07-13  Will Schmidt  <will_schmidt@vnet.ibm.com>
23865
23866         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Return
23867         early if there is no lhs.
23868
23869 2017-07-13  Martin Liska  <mliska@suse.cz>
23870
23871         * dwarf2out.c (gen_pointer_type_die): Remove dead code.
23872         (gen_reference_type_die): Likewise.
23873         * stor-layout.c: Remove Pascal-related comment.
23874
23875 2017-07-13  Martin Liska  <mliska@suse.cz>
23876
23877         * opts.c (finish_options): Add quotes to error messages.
23878         (parse_sanitizer_options): Likewise.
23879
23880 2017-07-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
23881
23882         * doc/invoke.texi (armv8-r): Document +fp.sp ARMv8-R extension.
23883
23884 2017-07-13  Richard Earnshaw  <rearnsha@arm.com>
23885
23886         * config/arm/vxworks.h (TARGET_ENDIAN_DEFAULT): Define.
23887
23888 2017-07-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
23889
23890         * asan.c (asan_emit_allocas_unpoison): Use ptr_mode for arguments
23891         during expansion.
23892         * builtins.c (expand_asan_emit_allocas_unpoison): Likewise.
23893
23894 2017-07-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
23895
23896         PR target/81193
23897         * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): If GLIBC
23898         provides the hardware capability bits, define the macro
23899         __BUILTIN_CPU_SUPPORTS__.
23900         * config/rs6000/rs6000.c (cpu_expand_builtin): Generate a warning
23901         if GLIBC does not provide the hardware capability bits.  Add a
23902         gcc_unreachable call if the built-in cpu function is neither
23903         __builtin_cpu_is nor __builtin_cpu_supports.
23904         (rs6000_get_function_versions_dispatcher): Change the warning
23905         that an old GLIBC is used which does not export the capability
23906         bits to be an error.
23907         * doc/extend.texi (target_clones attribute): Document the
23908         restriction that GLIBC 2.23 or newer is needed on the PowerPC.
23909         (PowerPC built-in functions): Document that GLIBC 2.23 or newer is
23910         needed by __builtin_cpu_is and __builtin_cpu_supports.  Document
23911         the macros defined by GCC if the newer GLIBC is available.
23912
23913 2017-07-12  Jeff Law  <law@redhat.com>
23914
23915         * config/riscv/riscv.c: Remove unnecessary includes.  Reorder
23916         remaining includes slightly.
23917         * config/riscv/riscv-builtins.c: Include profile-count.h.
23918
23919 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
23920
23921         PR target/79883
23922         * config/avr/avr.c (avr_set_current_function): In diagnostic
23923         messages: Quote keywords and (parts of) identifiers.
23924         [WITH_AVRLIBC]: Warn for functions named "ISR", "SIGNAL" or
23925         "INTERUPT".
23926
23927 2017-07-12  Carl Love  <cel@us.ibm.com>
23928
23929         * config/rs6000/rs6000-c.c: Add support for built-in functions
23930         vector bool char vec_revb (vector bool char);
23931         vector bool short vec_revb (vector short char);
23932         vector bool int vec_revb (vector bool int);
23933         vector bool long long vec_revb (vector bool long long);
23934         * doc/extend.texi: Update the built-in documentation file for the
23935         new built-in functions.
23936
23937 2017-07-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
23938
23939         * config/s390/s390.md: Remove movcc splitter.
23940
23941 2017-07-12  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
23942
23943         * config/s390/s390.c (s390_rtx_costs): Return proper costs for
23944         load/store on condition.
23945
23946 2017-07-12  Georg-Johann Lay  <avr@gjlay.de>
23947
23948         PR target/81407
23949         * config/avr/avr.c (avr_encode_section_info)
23950         [progmem && !TREE_READONLY]: Error if progmem object needs
23951         constructing.
23952
23953 2017-07-11  Michael Collison  <michael.collison@arm.com>
23954
23955         * config/aarch64/aarch64-simd.md (aarch64_sub<mode>_compare0):
23956         New pattern.
23957
23958 2017-07-11  Carl Love  <cel@us.ibm.com>
23959
23960         * config/rs6000/rs6000-c.c: Add support for builtins
23961         vector unsigned int vec_parity_lsbb (vector signed int);
23962         vector unsigned int vec_parity_lsbb (vector unsigned int);
23963         vector unsigned __int128 vec_parity_lsbb (vector signed __int128);
23964         vector unsigned __int128 vec_parity_lsbb (vector unsigned __int128);
23965         vector unsigned long long vec_parity_lsbb (vector signed long long);
23966         vector unsigned long long vec_parity_lsbb (vector unsigned long long);
23967         * config/rs6000/rs6000-builtin.def (VPARITY_LSBB): Add BU_P9V_OVERLOAD1.
23968         * config/rs6000/altivec.h (vec_parity_lsbb): Add define.
23969         * doc/extend.texi: Update the built-in documentation file for the
23970         new built-in functions.
23971
23972 2017-07-11  David Malcolm  <dmalcolm@redhat.com>
23973
23974         * diagnostic-show-locus.c: Include "gcc-rich-location.h".
23975         (layout::m_primary_loc): New field.
23976         (layout::layout): Initialize new field.  Move location filtering
23977         logic from here to...
23978         (layout::maybe_add_location_range): ...this new method.  Add
23979         support for filtering to just the lines already specified by other
23980         locations.
23981         (layout::will_show_line_p): New method.
23982         (gcc_rich_location::add_location_if_nearby): New method.
23983         (selftest::test_add_location_if_nearby): New test function.
23984         (selftest::diagnostic_show_locus_c_tests): Call it.
23985         * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby):
23986         New method.
23987
23988 2017-07-11  Tom de Vries  <tom@codesourcery.com>
23989
23990         * config/nvptx/nvptx.c (WORKAROUND_PTXJIT_BUG): New macro.
23991         (bb_first_real_insn): New function.
23992         (nvptx_single): Add extra initialization of broadcasted condition
23993         variables.
23994
23995 2017-07-11  Nathan Sidwell  <nathan@acm.org>
23996
23997         * dwarf2out.c (gen_member_die): Remove useless check for anon ctors.
23998
23999 2017-07-11  Georg-Johann Lay  <avr@gjlay.de>
24000
24001         * doc/extend.texi (AVR Function Attributes): Remove weblink to
24002         Binutils doc as TEXI will mess them up.
24003         * doc/invoke.texi (AVR Options): Same here.
24004
24005 2017-07-11  Daniel Cederman  <cederman@gaisler.com>
24006
24007         * config/sparc/sparc.opt (mfix-ut700): New option.
24008         (mfix-gr712rc): Likewise.
24009         (sparc_fix_b2bst): New variable.
24010         * doc/invoke.texi (SPARC options): Document them.
24011         (ARM options): Fix warnings.
24012         * config/sparc/sparc.c (sparc_do_work_around_errata): Insert NOP
24013         instructions to prevent sequences that can trigger the store-store
24014         errata for certain LEON3FT processors.
24015         (pass_work_around_errata::gate): Also test sparc_fix_b2bst.
24016         (sparc_option_override): Set sparc_fix_b2bst appropriately.
24017         * config/sparc/sparc.md (fix_b2bst): New attribute.
24018         (in_branch_delay): Prevent stores in delay slot if fix_b2bst.
24019
24020 2017-07-10  Uros Bizjak  <ubizjak@gmail.com>
24021
24022         PR target/81375
24023         * config/i386/i386.md (divsf3): Add TARGET_SSE to TARGET_SSE_MATH.
24024         (rcpps): Ditto.
24025         (*rsqrtsf2_sse): Ditto.
24026         (rsqrtsf2): Ditto.
24027         (div<mode>3): Macroize insn from divdf3 and divsf3
24028         using MODEF mode iterator.
24029
24030 2017-07-10  Martin Sebor  <msebor@redhat.com>
24031
24032         PR tree-optimization/80397
24033         * gimple-ssa-sprintf.c (format_integer): Use INTEGRAL_TYPE_P()
24034         instead of testing for equality to INTEGER_TYPE.
24035
24036 2017-07-10  Vineet Gupta <vgupta@synopsys.com>
24037
24038         * config.gcc: Remove uclibc from arc target spec.
24039
24040 2017-07-10  Claudiu Zissulescu  <claziss@synopsys.com>
24041
24042         * config/arc/arc.h (ADDITIONAL_REGISTER_NAMES): Define.
24043
24044 2017-07-07  Jan Hubicka  <hubicka@ucw.cz>
24045
24046         PR lto/80838
24047         * lto-wrapper.c (remove_option): New function.
24048         (merge_and_complain): Merge PIC/PIE options more realistically.
24049
24050 2017-07-10  Georg-Johann Lay  <avr@gjlay.de>
24051
24052         Better ISR prologues by supporting GASes __gcc_isr pseudo insn.
24053
24054         PR target/20296
24055         PR target/81268
24056         * configure.ac [target=avr]: Add GAS check for -mgcc-isr.
24057         (HAVE_AS_AVR_MGCCISR_OPTION):  If so, AC_DEFINE it.
24058         * config.in: Regenerate.
24059         * configure: Regenerate.
24060         * doc/extend.texi (AVR Function Attributes) <no_gccisr>: Document it.
24061         * doc/invoke.texi (AVR Options) <-mgas-isr-prologues>: Document it.
24062         * config/avr/avr.opt (-mgas-isr-prologues): New option and...
24063         (TARGET_GASISR_PROLOGUES): ...target mask.
24064         * common/config/avr/avr-common.c
24065         (avr_option_optimization_table) [OPT_LEVELS_1_PLUS_NOT_DEBUG]:
24066         Set -mgas-isr-prologues.
24067         * config/avr/avr-passes.def (avr_pass_pre_proep): Add
24068         INSERT_PASS_BEFORE for it.
24069         * config/avr/avr-protos.h (make_avr_pass_pre_proep): New proto.
24070         * config/avr/avr.c (avr_option_override)
24071         [!HAVE_AS_AVR_MGCCISR_OPTION]: Unset TARGET_GASISR_PROLOGUES.
24072         (avr_no_gccisr_function_p, avr_hregs_split_reg): New static functions.
24073         (avr_attribute_table) <no_gccisr>: Add new function attribute.
24074         (avr_set_current_function) <is_no_gccisr>: Init machine field.
24075         (avr_pass_data_pre_proep, avr_pass_pre_proep): New pass data
24076         and rtl_opt_pass.
24077         (make_avr_pass_pre_proep): New function.
24078         (emit_push_sfr) <treg>: Add argument to function and use it
24079         instead of TMP_REG.
24080         (avr_expand_prologue) [machine->gasisr.maybe]: Emit gasisr insn
24081         and set machine->gasisr.yes.
24082         (avr_expand_epilogue) [machine->gasisr.yes]: Similar.
24083         (avr_asm_function_end_prologue) [machine->gasisr.yes]: Add
24084         __gcc_isr.n_pushed to .L__stack_usage.
24085         (TARGET_ASM_FINAL_POSTSCAN_INSN): Define to...
24086         (avr_asm_final_postscan_insn): ...this new static function.
24087         * config/avr/avr.h (machine_function)
24088         <is_no_gccisr, use_L__stack_usage>: New fields.
24089         <gasisr, gasisr.yes, gasisr.maybe, gasisr.regno>: New fields.
24090         * config/avr/avr.md (UNSPECV_GASISR): Add unspecv enum.
24091         (GASISR_Prologue, GASISR_Epilogue, GASISR_Done): New define_constants.
24092         (gasisr, *gasisr): New expander and insn.
24093         * config/avr/gen-avr-mmcu-specs.c (print_mcu)
24094         [HAVE_AS_AVR_MGCCISR_OPTION]: Print asm_gccisr spec.
24095         * config/avr/specs.h (ASM_SPEC) <asm_gccisr>: Add sub spec.
24096
24097 2017-07-10  Richard Earnshaw  <rearnsha@arm.com>
24098
24099         * config/arm/parsecpu.awk (gen_comm_data): Do not escape single quotes
24100         in quoted strings.
24101
24102 2017-07-10  Georg-Johann Lay  <avr@gjlay.de>
24103
24104         Move jump-tables out of .text again.
24105
24106         PR target/81075
24107         * config/avr/avr.c (ASM_OUTPUT_ADDR_VEC_ELT): Remove function.
24108         (ASM_OUTPUT_ADDR_VEC): New function.
24109         (avr_adjust_insn_length) [JUMP_TABLE_DATA_P]: Return 0.
24110         (avr_final_prescan_insn) [avr_log.insn_addresses]: Dump
24111         INSN_ADDRESSes as asm comment.
24112         * config/avr/avr.h (JUMP_TABLES_IN_TEXT_SECTION): Adjust comment.
24113         (ASM_OUTPUT_ADDR_VEC_ELT): Remove define.
24114         (ASM_OUTPUT_ADDR_VEC): Define to avr_output_addr_vec.
24115         * config/avr/avr.md (*tablejump): Adjust comment.
24116         * config/avr/elf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove.
24117         * config/avr/avr-log.c (avr_log_set_avr_log) <insn_addresses>:
24118         New detail.
24119         * config/avr/avr-protos.h (avr_output_addr_vec_elt): Remove proto.
24120         (avr_output_addr_vec): New proto.
24121         (avr_log_t) <insn_addresses>: New field.
24122
24123 2017-07-09  H.J. Lu  <hongjiu.lu@intel.com>
24124
24125         PR target/81313
24126         * config/i386/i386.c (ix86_function_arg_advance): Set
24127         outgoing_args_on_stack to true if there are outgoing arguments
24128         on stack.
24129         (ix86_function_arg): Likewise.
24130         (ix86_get_drap_rtx): Use DRAP only if there are outgoing
24131         arguments on stack and ACCUMULATE_OUTGOING_ARGS is false.
24132         * config/i386/i386.h (machine_function): Add
24133         outgoing_args_on_stack.
24134
24135 2017-07-09  Krister Walfridsson  <krister.walfridsson@gmail.com>
24136
24137         * config.gcc (*-*-netbsd*): Remove check for NetBSD versions not
24138         supporting pthreds.
24139         * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always enable pthreads.
24140
24141 2017-07-08  Richard Sandiford  <richard.sandiford@linaro.org>
24142
24143         * Makefile.in (HOOKS_H, RTL_BASE_H, FUNCTION_H, EXPR_H, REGS_H)
24144         (REAL_H): Remove $(MACHMODE_H).
24145         (FIXED_VALUE_H, TREE_CORE_H, CFGLOOP_H): Remove $(MACHMODE_H) and
24146         double-int.h.
24147         (CORETYPES_H): Add signop.h, wide-int.h, wide-int-print.h,
24148         $(MACHMODE_H) and double-int.h.
24149         (build/min-insn-modes.o): Depend on $(CORETYPES_H) rather than
24150         $(MACHMODE_H).
24151         (gengtype-state.o, gengtype.o, build/gengtype.o): Don't depend on
24152         double-int.h.
24153
24154 2017-07-07  Andrew Pinski  <apinski@cavium.com>
24155
24156         * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Check
24157         prev_set and curr_set for AARCH64_FUSE_ALU_BRANCH.
24158
24159 2017-07-07  Michael Meissner  <meissner@linux.vnet.ibm.com>
24160
24161         * config/rs6000/rs6000.c (rs6000_get_function_versions_dispatcher):
24162         Add warning if GCC was not configured to link against a GLIBC that
24163         exports the hardware capability bits.
24164         (make_resolver_func): Make resolver function private and not a
24165         COMDAT function.  Create the name with clone_function_name instead
24166         of make_unique_name.
24167
24168         PR target/81348
24169         * config/rs6000/rs6000.md (HI sign_extend splitter): Use the
24170         correct operand in doing the split.
24171
24172 2017-07-07 Carl Love  <cel@us.ibm.com>
24173
24174         * config/rs6000/rs6000-c: Add support for built-in function
24175         vector unsigned short vec_pack_to_short_fp32 (vector float,
24176                                                       vector float).
24177         * config/rs6000/rs6000-builtin.def (CONVERT_4F32_8I16): Add
24178         BU_P9V_AV_2 and BU_P9V_OVERLOAD_2 definitions.
24179         * config/rs6000/altivec.h (vec_pack_to_short_fp32): Add define.
24180         * config/rs6000/altivec.md(UNSPEC_CONVERT_4F32_8I16): Add UNSPEC.
24181         (convert_4f32_8i16): Add define_expand.
24182         * doc/extend.texi: Update the built-in documentation file for the
24183         new built-in function.
24184
24185 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24186
24187         * config/sparc/m8.md: New file.
24188         * config/sparc/sparc.md: Include m8.md.
24189
24190 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24191
24192         * config/sparc/sparc.opt: New option -mvis4b.
24193         * config/sparc/sparc.c (dump_target_flag_bits): Handle MASK_VIS4B.
24194         (sparc_option_override): Handle VIS4B.
24195         (enum sparc_builtins): Define
24196         SPARC_BUILTIN_DICTUNPACK{8,16,32},
24197         SPARC_BUILTIN_FPCMP{LE,GT,EQ,NE}{8,16,32}SHL,
24198         SPARC_BUILTIN_FPCMPU{LE,GT}{8,16,32}SHL,
24199         SPARC_BUILTIN_FPCMPDE{8,16,32}SHL and
24200         SPARC_BUILTIN_FPCMPUR{8,16,32}SHL.
24201         (check_constant_argument): New function.
24202         (sparc_vis_init_builtins): Define builtins
24203         __builtin_vis_dictunpack{8,16,32},
24204         __builtin_vis_fpcmp{le,gt,eq,ne}{8,16,32}shl,
24205         __builtin_vis_fpcmpu{le,gt}{8,16,32}shl,
24206         __builtin_vis_fpcmpde{8,16,32}shl and
24207         __builtin_vis_fpcmpur{8,16,32}shl.
24208         (sparc_expand_builtin): Check that the constant operands to
24209         __builtin_vis_fpcmp*shl and _builtin_vis_dictunpack* are indeed
24210         constant and in range.
24211         * config/sparc/sparc-c.c (sparc_target_macros): Handle
24212         TARGET_VIS4B.
24213         * config/sparc/sparc.h (SPARC_IMM2_P): Define.
24214         (SPARC_IMM5_P): Likewise.
24215         * config/sparc/sparc.md (cpu_feature): Add new feagure "vis4b".
24216         (enabled): Handle vis4b.
24217         (UNSPEC_DICTUNPACK): New unspec.
24218         (UNSPEC_FPCMPSHL): Likewise.
24219         (UNSPEC_FPUCMPSHL): Likewise.
24220         (UNSPEC_FPCMPDESHL): Likewise.
24221         (UNSPEC_FPCMPURSHL): Likewise.
24222         (cpu_feature): New CPU feature `vis4b'.
24223         (dictunpack{8,16,32}): New insns.
24224         (FPCSMODE): New mode iterator.
24225         (fpcscond): New code iterator.
24226         (fpcsucond): Likewise.
24227         (fpcmp{le,gt,eq,ne}{8,16,32}{si,di}shl): New insns.
24228         (fpcmpu{le,gt}{8,16,32}{si,di}shl): Likewise.
24229         (fpcmpde{8,16,32}{si,di}shl): Likewise.
24230         (fpcmpur{8,16,32}{si,di}shl): Likewise.
24231         * config/sparc/constraints.md: Define constraints `q' for unsigned
24232         2-bit integer constants and `t' for unsigned 5-bit integer
24233         constants.
24234         * config/sparc/predicates.md (imm5_operand_dictunpack8): New
24235         predicate.
24236         (imm5_operand_dictunpack16): Likewise.
24237         (imm5_operand_dictunpack32): Likewise.
24238         (imm2_operand): Likewise.
24239         * doc/invoke.texi (SPARC Options): Document -mvis4b.
24240         * doc/extend.texi (SPARC VIS Built-in Functions): Document the
24241         ditunpack* and fpcmp*shl builtins.
24242
24243 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24244
24245         * config.gcc: Handle m8 in --with-{cpu,tune} options.
24246         * config.in: Add HAVE_AS_SPARC6 define.
24247         * config/sparc/driver-sparc.c (cpu_names): Add entry for the SPARC
24248         M8.
24249         * config/sparc/sol2.h (CPP_CPU64_DEFAULT_SPEC): Define for
24250         TARGET_CPU_m8.
24251         (ASM_CPU32_DEFAUILT_SPEC): Likewise.
24252         (CPP_CPU_SPEC): Handle m8.
24253         (ASM_CPU_SPEC): Likewise.
24254         * config/sparc/sparc-opts.h (enum processor_type): Add
24255         PROCESSOR_M8.
24256         * config/sparc/sparc.c (m8_costs): New struct.
24257         (sparc_option_override): Handle TARGET_CPU_m8.
24258         (sparc32_initialize_trampoline): Likewise.
24259         (sparc64_initialize_trampoline): Likewise.
24260         (sparc_issue_rate): Likewise.
24261         (sparc_register_move_cost): Likewise.
24262         * config/sparc/sparc.h (TARGET_CPU_m8): Define.
24263         (CPP_CPU64_DEFAULT_SPEC): Define for M8.
24264         (ASM_CPU64_DEFAULT_SPEC): Likewise.
24265         (CPP_CPU_SPEC): Handle M8.
24266         (ASM_CPU_SPEC): Likewise.
24267         (AS_M8_FLAG): Define.
24268         * config/sparc/sparc.md: Add m8 to the cpu attribute.
24269         * config/sparc/sparc.opt: New option -mcpu=m8 for sparc targets.
24270         * configure.ac (HAVE_AS_SPARC6): Check for assembler support for
24271         M8 instructions.
24272         * configure: Regenerate.
24273         * doc/invoke.texi (SPARC Options): Document -mcpu=m8 and
24274         -mtune=m8.
24275
24276 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24277
24278         * config/sparc/niagara7.md: Rework the DFA scheduler to use insn
24279         subtypes.
24280         * config/sparc/sparc.md: Remove the `v3pipe' insn attribute.
24281         ("*movdi_insn_sp32"): Do not set v3pipe.
24282         ("*movsi_insn"): Likewise.
24283         ("*movdi_insn_sp64"): Likewise.
24284         ("*movsf_insn"): Likewise.
24285         ("*movdf_insn_sp32"): Likewise.
24286         ("*movdf_insn_sp64"): Likewise.
24287         ("*zero_extendsidi2_insn_sp64"): Likewise.
24288         ("*sign_extendsidi2_insn"): Likewise.
24289         ("*mov<VM32:mode>_insn"): Likewise.
24290         ("*mov<VM64:mode>_insn_sp64"): Likewise.
24291         ("*mov<VM64:mode>_insn_sp32"): Likewise.
24292         ("<plusminus_insn><VADDSUB:mode>3"): Likewise.
24293         ("<vlop:code><VL:mode>3"): Likewise.
24294         ("*not_<vlop:code><VL:mode>3"): Likewise.
24295         ("*nand<VL:mode>_vis"): Likewise.
24296         ("*<vlnotop:code>_not1<VL:mode>_vis"): Likewise.
24297         ("*<vlnotop:code>_not2<VL:mode>_vis"): Likewise.
24298         ("one_cmpl<VL:mode>2"): Likewise.
24299         ("faligndata<VM64:mode>_vis"): Likewise.
24300         ("alignaddrsi_vis"): Likewise.
24301         ("alignaddrdi_vis"): Likweise.
24302         ("alignaddrlsi_vis"): Likewise.
24303         ("alignaddrldi_vis"): Likewise.
24304         ("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
24305         ("bmaskdi_vis"): Likewise.
24306         ("bmasksi_vis"): Likewise.
24307         ("bshuffle<VM64:mode>_vis"): Likewise.
24308         ("cmask8<P:mode>_vis"): Likewise.
24309         ("cmask16<P:mode>_vis"): Likewise.
24310         ("cmask32<P:mode>_vis"): Likewise.
24311         ("pdistn<P:mode>_vis"): Likewise.
24312         ("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
24313
24314 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24315
24316         * config/sparc/sparc.md ("subtype"): New insn attribute.
24317         ("*wrgsr_sp64"): Set insn subtype.
24318         ("*rdgsr_sp64"): Likewise.
24319         ("alignaddrsi_vis"): Likewise.
24320         ("alignaddrdi_vis"): Likewise.
24321         ("alignaddrlsi_vis"): Likewise.
24322         ("alignaddrldi_vis"): Likewise.
24323         ("<plusminus_insn><VADDSUB:mode>3"): Likewise.
24324         ("fexpand_vis"): Likewise.
24325         ("fpmerge_vis"): Likewise.
24326         ("faligndata<VM64:mode>_vis"): Likewise.
24327         ("bshuffle<VM64:mode>_vis"): Likewise.
24328         ("cmask8<P:mode>_vis"): Likewise.
24329         ("cmask16<P:mode>_vis"): Likewise.
24330         ("cmask32<P:mode>_vis"): Likewise.
24331         ("fchksm16_vis"): Likewise.
24332         ("v<vis3_shift_patname><GCM:mode>3"): Likewise.
24333         ("fmean16_vis"): Likewise.
24334         ("fp<plusminus_insn>64_vis"): Likewise.
24335         ("<plusminus_insn>v8qi3"): Likewise.
24336         ("<vis3_addsub_ss_patname><VASS:mode>3"): Likewise.
24337         ("<vis4_minmax_patname><VMMAX:mode>3"): Likewise.
24338         ("<vis4_uminmax_patname><VMMAX:mode>3"): Likewise.
24339         ("<vis3_addsub_ss_patname>v8qi3"): Likewise.
24340         ("<vis4_addsub_us_patname><VAUS:mode>3"): Likewise.
24341         ("*movqi_insn"): Likewise.
24342         ("*movhi_insn"): Likewise.
24343         ("*movsi_insn"): Likewise.
24344         ("movsi_pic_gotdata_op"): Likewise.
24345         ("*movdi_insn_sp32"): Likewise.
24346         ("*movdi_insn_sp64"): Likewise.
24347         ("movdi_pic_gotdata_op"): Likewise.
24348         ("*movsf_insn"): Likewise.
24349         ("*movdf_insn_sp32"): Likewise.
24350         ("*movdf_insn_sp64"): Likewise.
24351         ("*zero_extendhisi2_insn"): Likewise.
24352         ("*zero_extendqihi2_insn"): Likewise.
24353         ("*zero_extendqisi2_insn"): Likewise.
24354         ("*zero_extendqidi2_insn"): Likewise.
24355         ("*zero_extendhidi2_insn"): Likewise.
24356         ("*zero_extendsidi2_insn_sp64"): Likewise.
24357         ("ldfsr"): Likewise.
24358         ("prefetch_64"): Likewise.
24359         ("prefetch_32"): Likewise.
24360         ("tie_ld32"): Likewise.
24361         ("tie_ld64"): Likewise.
24362         ("*tldo_ldub_sp32"): Likewise.
24363         ("*tldo_ldub1_sp32"): Likewise.
24364         ("*tldo_ldub2_sp32"): Likewise.
24365         ("*tldo_ldub_sp64"): Likewise.
24366         ("*tldo_ldub1_sp64"): Likewise.
24367         ("*tldo_ldub2_sp64"): Likewise.
24368         ("*tldo_ldub3_sp64"): Likewise.
24369         ("*tldo_lduh_sp32"): Likewise.
24370         ("*tldo_lduh1_sp32"): Likewise.
24371         ("*tldo_lduh_sp64"): Likewise.
24372         ("*tldo_lduh1_sp64"): Likewise.
24373         ("*tldo_lduh2_sp64"): Likewise.
24374         ("*tldo_lduw_sp32"): Likewise.
24375         ("*tldo_lduw_sp64"): Likewise.
24376         ("*tldo_lduw1_sp64"): Likewise.
24377         ("*tldo_ldx_sp64"): Likewise.
24378         ("*mov<VM32:mode>_insn"): Likewise.
24379         ("*mov<VM64:mode>_insn_sp64"): Likewise.
24380         ("*mov<VM64:mode>_insn_sp32"): Likewise.
24381
24382 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24383
24384         * config/sparc/sparc.md ("type"): New insn type viscmp.
24385         ("fcmp<gcond:code><GCM:gcm_name><P:mode>_vis"): Set insn type to
24386         viscmp.
24387         ("fpcmp<gcond:code>8<P:mode>_vis"): Likewise.
24388         ("fucmp<gcond:code>8<P:mode>_vis"): Likewise.
24389         ("fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis"): Likewise.
24390         * config/sparc/niagara7.md ("n7_vis_logical_v3pipe"): Handle
24391         viscmp.
24392         ("n7_vis_logical_11cycle"): Likewise.
24393         * config/sparc/niagara4.md ("n4_vis_logical"): Likewise.
24394         * config/sparc/niagara2.md ("niag3_vis": Likewise.
24395         * config/sparc/niagara.md ("niag_vis"): Likewise.
24396         * config/sparc/ultra3.md ("us3_fga"): Likewise.
24397         * config/sparc/ultra1_2.md ("us1_fga_double"): Likewise.
24398
24399 2017-07-07  Jose E. Marchesi  <jose.marchesi@oracle.com>
24400
24401         * config/sparc/sparc.md: New instruction type `bmask'.
24402         (bmaskdi_vis): Use the `bmask' type.
24403         (bmasksi_vis): Likewise.
24404         * config/sparc/ultra3.md (us3_array): Likewise.
24405         * config/sparc/niagara7.md (n7_array): Likewise.
24406         * config/sparc/niagara4.md (n4_array): Likewise.
24407         * config/sparc/niagara2.md (niag2_vis): Likewise.
24408         (niag3_vis): Likewise.
24409         * config/sparc/niagara.md (niag_vis): Likewise.
24410
24411 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24412
24413         * ipa-comdats.c: Remove optimize check from gate.
24414         * ipa-fnsummary.c (ipa_fn_summary_generate): do not generate summary
24415         for functions not optimized.
24416         (ipa_fn_summary_read): Skip optimize check.
24417         (ipa_fn_summary_write): Likewise.
24418         * ipa-inline-analysis.c (do_estimate_growth_1): Check that caller
24419         is optimized.
24420         * ipa-inline.c (can_inline_edge_p): Not optimized functions are
24421         uninlinable.
24422         (can_inline_edge_p): Check flag_pcc_struct_return for match.
24423         (check_callers): Give up on caller which is not optimized.
24424         (inline_small_functions): Likewise.
24425         (ipa_inline): Do not give up when not optimizing.
24426         * ipa-visbility.c (function_and_variable_visibility): Do not optimize
24427         away unoptimizes cdtors.
24428         (whole_program_function_and_variable_visibility): Do
24429         ipa_discover_readonly_nonaddressable_vars in LTO mode.
24430         * ipa.c (process_references): Do not check optimize.
24431         (symbol_table::remove_unreachable_nodes): Update optimize check.
24432         (set_writeonly_bit): Update optimize check.
24433         (pass_ipa_cdtor_merge::gate): Do not check optimize.
24434         (pass_ipa_single_use::gate): Remove.
24435
24436 2017-07-06  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
24437
24438         * config/rs6000/rs6000.c (union_defs, union_uses, insn_is_load_p,
24439         insn_is_store_p, insn_is_swap_p, const_load_sequence_p, v2df_reduction_p,
24440         rtx_is_swappable_p, insn_is_swappable_p, chain_contains_only_swaps,
24441         mark_swaps_for_removal, swap_const_vector_halves, adjust_subreg_index,
24442         permute_load, permute_store, adjust_extract, adjust_splat,
24443         adjust_xxpermdi, adjust_concat, adjust_vperm, handle_special_swappables,
24444         replace_swap_with_copy, dump_swap_insn_table,
24445         alignment_with_canonical_addr, alignment_mask, find_alignment_op,
24446         recombine_lvx_pattern, recombine_stvx_pattern,
24447         recombine_lvx_stvx_patterns, rs6000_analyze_swaps,
24448         make_pass_analyze_swaps): Move all code related to p8 swap optimizations
24449         to file rs6000-p8swap.c.
24450         * config/rs6000/rs6000-p8swap.c: New file.
24451         * config/rs6000/t-rs6000: Add rule to build rs6000-p8swap.o.
24452         * config.gcc: Add rs6000-p8swap.o to extra_objs for powerpc*-*-*
24453         and rs6000*-*-* targets.
24454
24455 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
24456
24457         * Makefile.in (selftest): Remove dependency on s-selftest-c++.
24458
24459 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24460
24461         * lto-wrapper.c (merge_and_complain): Do not merge
24462         fexceptions, fnon_call_exceptions, ftrapv, ffp_contract_, fmath_errno,
24463         fsigned_zeros, ftrapping_math, fwrapv.
24464         (append_compiler_options): Do not track these options.
24465         (append_linker_options): Likewie
24466
24467 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24468
24469         * cgraphunit.c (cgraph_node::finalize_function): When
24470         !flag_toplevel_reorde set no_reorder flag.
24471         (varpool_node::finalize_decl): Likewise.
24472         (symbol_table::compile): Drop no toplevel reorder path.
24473
24474 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24475
24476         * bb-reorder.c (better_edge_p): Do not build traces across abnormal/eh
24477         edges; zero probability is not better than uninitialized.
24478
24479 2017-07-06  Maxim Ostapenko  <m.ostapenko@samsung.com>
24480
24481         * asan.h (asan_sanitize_allocas_p): Declare.
24482         * asan.c (asan_sanitize_allocas_p): New function.
24483         (handle_builtin_stack_restore): Bail out if !asan_sanitize_allocas_p.
24484         (handle_builtin_alloca): Likewise.
24485         * cfgexpand.c (expand_used_vars): Do not add allocas unpoisoning stuff
24486         if !asan_sanitize_allocas_p.
24487         * params.def (asan-instrument-allocas): Add new option.
24488         * params.h (ASAN_PROTECT_ALLOCAS): Define.
24489         * opts.c (common_handle_option): Disable allocas sanitization for
24490         KASan by default.
24491
24492 2017-07-06  Maxim Ostapenko  <m.ostapenko@samsung.com>
24493
24494         * asan.c: Include gimple-fold.h.
24495         (get_last_alloca_addr): New function.
24496         (handle_builtin_stackrestore): Likewise.
24497         (handle_builtin_alloca): Likewise.
24498         (asan_emit_allocas_unpoison): Likewise.
24499         (get_mem_refs_of_builtin_call): Add new parameter, remove const
24500         quallifier from first paramerer. Handle BUILT_IN_ALLOCA,
24501         BUILT_IN_ALLOCA_WITH_ALIGN and BUILT_IN_STACK_RESTORE builtins.
24502         (instrument_builtin_call): Pass gimple iterator to
24503         get_mem_refs_of_builtin_call.
24504         (last_alloca_addr): New global.
24505         * asan.h (asan_emit_allocas_unpoison): Declare.
24506         * builtins.c (expand_asan_emit_allocas_unpoison): New function.
24507         (expand_builtin): Handle BUILT_IN_ASAN_ALLOCAS_UNPOISON.
24508         * cfgexpand.c (expand_used_vars): Call asan_emit_allocas_unpoison
24509         if function calls alloca.
24510         * gimple-fold.c (replace_call_with_value): Remove static keyword.
24511         * gimple-fold.h (replace_call_with_value): Declare.
24512         * internal-fn.c: Include asan.h.
24513         * sanitizer.def (BUILT_IN_ASAN_ALLOCA_POISON,
24514         BUILT_IN_ASAN_ALLOCAS_UNPOISON): New builtins.
24515
24516 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
24517
24518         * Makefile.in (SELFTEST_FLAGS): Drop "-x c", moving it to...
24519         (C_SELFTEST_FLAGS): New.
24520         (CPP_SELFTEST_FLAGS): New.
24521         (SELFTEST_DEPS): New, from deps of s-selftest.
24522         (C_SELFTEST_DEPS): New, from deps of s-selftest.
24523         (CPP_SELFTEST_DEPS): New.
24524         (selftest): Add dependency on s-selftest-c++.
24525         (s-selftest): Rename to...
24526         (s-selftest-c): ...this, moving deps to SELFTEST_DEPS
24527         and C_SELFTEST_DEPS, and using C_SELFTEST_FLAGS rather
24528         than SELFTEST_FLAGS.
24529         (selftest-gdb): Rename to...
24530         (selftest-c-gdb): ...this, using C_SELFTEST_DEPS and
24531         C_SELFTEST_FLAGS.
24532         (selftest-gdb): Reintroduce as an alias for selftest-c-gdb.
24533         (selftest-valgrind): Rename to...
24534         (selftest-c-valgrind): ...this, using C_SELFTEST_DEPS and
24535         C_SELFTEST_FLAGS.
24536         (selftest-valgrind): Reintroduce as an alias for
24537         selftest-c-valgrind.
24538         (s-selftest-c++): New.
24539         (selftest-c++-gdb): New.
24540         (selftest-c++-valgrind): New.
24541
24542 2017-07-06  Olivier Hainque  <hainque@adacore.com>
24543
24544         * gcc.c (process_command): When deciding if undefined variables
24545         should be ignored when processing specs, accept "gcc -v" as well.
24546
24547 2017-07-06  Jan Hubicka  <hubicka@ucw.cz>
24548
24549         * auto-profile.c (afdo_set_bb_count, afdo_propagate_edge,
24550         afdo_annotate_cfg): Set counts/probabilities as determined by afdo.
24551
24552 2017-07-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
24553
24554         * config/arm/arm-cpus.in (armv8-r): Add new entry.
24555         * config/arm/arm-isa.h (ISA_ARMv8r): Define macro.
24556         * config/arm/arm-tables.opt: Regenerate.
24557         * config/arm/arm.h (enum base_architecture): Add BASE_ARCH_8R
24558         enumerator.
24559         * doc/invoke.texi: Mention -march=armv8-r and its extensions.
24560
24561 2017-07-06  Carl Love  <cel@us.ibm.com>
24562
24563         * ChangeLog: Clean up from mid air collision
24564
24565 2017-07-06  Carl Love  <cel@us.ibm.com>
24566
24567         * config/rs6000/rs6000-c.c: Add support for built-in functions
24568         vector signed int vec_subc (vector signed int, vector signed int);
24569         vector signed __int128 vec_subc (vector signed __int128,
24570                                          vector signed __int128);
24571         vector unsigned __int128 vec_subc (vector unsigned __int128,
24572                                            vector unsigned __int128);
24573         vector signed int vec_sube (vector signed int, vector signed int,
24574                                     vector signed int);
24575         vector unsigned int vec_sube (vector unsigned int,
24576                                       vector unsigned int,
24577                                       vector unsigned int);
24578         vector signed __int128 vec_sube (vector signed __int128,
24579                                          vector signed __int128,
24580                                          vector signed__int128);
24581         vector unsigned __int128 vec_sube (vector unsigned __int128,
24582                                            vector unsigned __int128,
24583                                            vector unsigned __int128);
24584         vector signed int vec_subec (vector signed int, vector signed int,
24585                                      vector signed int);
24586         vector unsigned int vec_subec (vector unsigned int,
24587                                        vector unsigned int,
24588                                        vector unsigned int);
24589         vector signed __int128 vec_subec (vector signed __int128,
24590                                           vector signed __int128,
24591                                           vector signed__int128);
24592         vector unsigned __int128 vec_subec (vector unsigned __int128,
24593                                             vector unsigned __int128,
24594                                             vector unsigned __int128);
24595         * config/rs6000/rs6000.c (ALTIVEC_BUILTIN_VEC_SUBE,
24596         ALTIVEC_BUILTIN_VEC_SUBEC): Add ef_builtins.
24597         * config/rs6000/rs6000-builtin.def (SUBE, SUBEC): Add
24598         BU_ALTIVEC_OVERLOAD_X definitions.
24599         * config/rs6000/altivec.h (vec_sube, vec_subec): Add builtin defines.
24600         * doc/extend.texi: Update the built-in documentation file for the new
24601         built-in functions.
24602
24603 2017-07-06  David Malcolm  <dmalcolm@redhat.com>
24604
24605         PR c++/79300
24606         * diagnostic-show-locus.c (layout::layout): Use start and finish
24607         spelling location for the start and finish of each range.
24608         * genmatch.c (linemap_client_expand_location_to_spelling_point):
24609         Add unused aspect param.
24610         * input.c (expand_location_1): Add "aspect" param, and use it
24611         to access the correct part of the location.
24612         (expand_location): Pass LOCATION_ASPECT_CARET to new param of
24613         expand_location_1.
24614         (expand_location_to_spelling_point): Likewise.
24615         (linemap_client_expand_location_to_spelling_point): Add "aspect"
24616         param, and pass it to expand_location_1.
24617
24618 2017-07-06  Sebastian Peryt  <sebastian.peryt@intel.com>
24619
24620         * config/i386/avx512fintrin.h (_mm_mask_getexp_round_ss,
24621         _mm_maskz_getexp_round_ss, _mm_mask_getexp_round_sd,
24622         _mm_maskz_getexp_round_sd, _mm_mask_getmant_round_sd,
24623         _mm_maskz_getmant_round_sd, _mm_mask_getmant_round_ss,
24624         _mm_maskz_getmant_round_ss, _mm_mask_getexp_ss, _mm_maskz_getexp_ss,
24625         _mm_mask_getexp_sd, _mm_maskz_getexp_sd, _mm_mask_getmant_sd,
24626         _mm_maskz_getmant_sd, _mm_mask_getmant_ss,
24627         _mm_maskz_getmant_ss): New intrinsics.
24628         (__builtin_ia32_getexpss128_mask): Changed to ...
24629         __builtin_ia32_getexpss128_round ... this.
24630         (__builtin_ia32_getexpsd128_mask): Changed to ...
24631         __builtin_ia32_getexpsd128_round ... this.
24632         * config/i386/i386-builtin-types.def
24633         ((V2DF, V2DF, V2DF, INT, V2DF, UQI, INT),
24634         (V4SF, V4SF, V4SF, INT, V4SF, UQI, INT)): New function type aliases.
24635         * config/i386/i386-builtin.def (__builtin_ia32_getexpsd_mask_round,
24636         __builtin_ia32_getexpss_mask_round,     __builtin_ia32_getmantsd_mask_round,
24637         __builtin_ia32_getmantss_mask_round): New builtins.
24638         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_INT_V2DF_UQI_INT,
24639         V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT): Handle new types.
24640         (CODE_FOR_avx512f_vgetmantv2df_mask_round,
24641         CODE_FOR_avx512f_vgetmantv4sf_mask_round): New cases.
24642         * config/i386/sse.md
24643         (avx512f_sgetexp<mode><round_saeonly_name>): Changed to ...
24644         avx512f_sgetexp<mode><mask_scalar_name>
24645         <round_saeonly_scalar_name> ... this.
24646         (vgetexp<ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|
24647         %0, %1, %2<round_saeonly_op3>}): Changed to ...
24648         vgetexp<ssescalarmodesuffix>
24649         \t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24650         %0<mask_scalar_operand3>, %1, %2<round_saeonly_scalar_mask_op3>} ... this.
24651         (avx512f_vgetmant<mode><round_saeonly_name>): Changed to ...
24652         avx512f_vgetmant<mode><mask_scalar_name>
24653         <round_saeonly_scalar_name> ... this.
24654         (vgetmant<ssescalarmodesuffix>\t{%3, <round_saeonly_op4>%2, %1, %0|
24655         %0, %1, %2<round_saeonly_op4>, %3}): Changed to ...
24656         vgetmant<ssescalarmodesuffix>
24657         \t{%3, <round_saeonly_scalar_mask_op4>%2, %1, %0<mask_scalar_operand4>|
24658         %0<mask_scalar_operand4>, %1, %2
24659         <round_saeonly_scalar_mask_op4>, %3} ... this.
24660         * config/i386/subst.md (mask_scalar_operand4,
24661         round_saeonly_scalar_mask_operand4,     round_saeonly_scalar_mask_op4,
24662         round_saeonly_scalar_nimm_predicate): New subst attributes.
24663
24664 2017-07-06  Julia Koval  <julia.koval@intel.com>
24665
24666         * config/i386/i386.c (ix86_erase_embedded_rounding):
24667         Remove code for old rounding pattern.
24668
24669 2017-07-06  Richard Earnshaw  <rearnsha@arm.com>
24670
24671         * config/arm/t-arm (GTM_H): Add arm-cpu.h.
24672
24673 2017-07-06  Christophe Lyon  <christophe.lyon@linaro.org>
24674
24675         * doc/sourcebuild.texi (Test Directives, Variants of
24676         dg-require-support): Add documentation for dg-require-stack-check.
24677
24678 2017-07-05  Sebastian Peryt  <sebastian.peryt@intel.com>
24679
24680         * config/i386/subst.md (mask_scalar, round_scalar,
24681         round_saeonly_scalar): New meta-templates.
24682         (mask_scalar_name, mask_scalar_operand3, round_scalar_name,
24683         round_scalar_mask_operand3, round_scalar_mask_op3,
24684         round_scalar_constraint, round_scalar_prefix, round_saeonly_scalar_name,
24685         round_saeonly_scalar_mask_operand3, round_saeonly_scalar_mask_op3,
24686         round_saeonly_scalar_constraint,
24687         round_saeonly_scalar_prefix): New subst attribute.
24688         * config/i386/sse.md
24689         (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): Renamed to ...
24690         <sse>_vm<plusminus_insn><mode>3<mask_scalar_name>
24691         <round_scalar_name> ... this.
24692         (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): Renamed to ...
24693         <sse>_vm<multdiv_mnemonic><mode>3<mask_scalar_name>
24694         <round_scalar_name> ... this.
24695         (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): Renamed to ...
24696         <sse>_vm<code><mode>3<mask_scalar_name>
24697         <round_saeonly_scalar_name> ... this.
24698         (v<plusminus_mnemonic><ssescalarmodesuffix>
24699         \t{<round_mask_op3>%2, %1, %0<mask_operand3>|
24700         %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
24701         v<plusminus_mnemonic><ssescalarmodesuffix>
24702         \t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24703         %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
24704         (v<multdiv_mnemonic><ssescalarmodesuffix>
24705         \t{<round_mask_op3>%2, %1, %0<mask_operand3>|
24706         %0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}): Changed to ...
24707         v<multdiv_mnemonic><ssescalarmodesuffix>
24708         \t{<round_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24709         %0<mask_scalar_operand3>, %1, %<iptr>2<round_scalar_mask_op3>} ... this.
24710         (v<maxmin_float><ssescalarmodesuffix>
24711         \t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|
24712         %0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}): Changed to ...
24713         v<maxmin_float><ssescalarmodesuffix>
24714         \t{<round_saeonly_scalar_mask_op3>%2, %1, %0<mask_scalar_operand3>|
24715         %0<mask_scalar_operand3>, %1, %<iptr>2
24716         <round_saeonly_scalar_mask_op3>} ... this.
24717
24718 2017-07-05  Richard Earnshaw  <rearnsha@arm.com>
24719
24720         * config/arm/arm.c (arm_fixed_condition_code_regs): New function.
24721         (TARGET_FIXED_CONDITION_CODE_REGS): Redefine.
24722
24723 2017-07-05  Richard Sandiford  <richard.sandiford@linaro.org>
24724             Alan Hayward  <alan.hayward@arm.com>
24725             David Sherwood  <david.sherwood@arm.com>
24726
24727         * combine.c (simplify_if_then_else): Remove "enum" before
24728         "machine_mode".
24729         * compare-elim.c (can_eliminate_compare): Likewise.
24730         * config/aarch64/aarch64-builtins.c (aarch64_simd_builtin_std_type):
24731         Likewise.
24732         (aarch64_lookup_simd_builtin_type): Likewise.
24733         (aarch64_simd_builtin_type): Likewise.
24734         (aarch64_init_simd_builtin_types): Likewise.
24735         (aarch64_simd_expand_args): Likewise.
24736         * config/aarch64/aarch64-protos.h (aarch64_simd_attr_length_rglist):
24737         Likewise.
24738         (aarch64_reverse_mask): Likewise.
24739         (aarch64_simd_emit_reg_reg_move): Likewise.
24740         (aarch64_gen_adjusted_ldpstp): Likewise.
24741         (aarch64_ccmp_mode_to_code): Likewise.
24742         (aarch64_operands_ok_for_ldpstp): Likewise.
24743         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
24744         * config/aarch64/aarch64.c (aarch64_ira_change_pseudo_allocno_class):
24745         Likewise.
24746         (aarch64_min_divisions_for_recip_mul): Likewise.
24747         (aarch64_reassociation_width): Likewise.
24748         (aarch64_get_condition_code_1): Likewise.
24749         (aarch64_simd_emit_reg_reg_move): Likewise.
24750         (aarch64_simd_attr_length_rglist): Likewise.
24751         (aarch64_reverse_mask): Likewise.
24752         (aarch64_operands_ok_for_ldpstp): Likewise.
24753         (aarch64_operands_adjust_ok_for_ldpstp): Likewise.
24754         (aarch64_gen_adjusted_ldpstp): Likewise.
24755         * config/aarch64/cortex-a57-fma-steering.c (fma_node::rename):
24756         Likewise.
24757         * config/arc/arc.c (legitimate_offset_address_p): Likewise.
24758         * config/arm/arm-builtins.c (arm_simd_builtin_std_type): Likewise.
24759         (arm_lookup_simd_builtin_type): Likewise.
24760         (arm_simd_builtin_type): Likewise.
24761         (arm_init_simd_builtin_types): Likewise.
24762         (arm_expand_builtin_args): Likewise.
24763         * config/arm/arm-protos.h (arm_expand_builtin): Likewise.
24764         * config/ft32/ft32.c (ft32_libcall_value): Likewise.
24765         (ft32_setup_incoming_varargs): Likewise.
24766         (ft32_function_arg): Likewise.
24767         (ft32_function_arg_advance): Likewise.
24768         (ft32_pass_by_reference): Likewise.
24769         (ft32_arg_partial_bytes): Likewise.
24770         (ft32_valid_pointer_mode): Likewise.
24771         (ft32_addr_space_pointer_mode): Likewise.
24772         (ft32_addr_space_legitimate_address_p): Likewise.
24773         * config/i386/i386-protos.h (ix86_operands_ok_for_move_multiple):
24774         Likewise.
24775         * config/i386/i386.c (ix86_setup_incoming_vararg_bounds): Likewise.
24776         (ix86_emit_outlined_ms2sysv_restore): Likewise.
24777         (iamcu_alignment): Likewise.
24778         (canonicalize_vector_int_perm): Likewise.
24779         (ix86_noce_conversion_profitable_p): Likewise.
24780         (ix86_mpx_bound_mode): Likewise.
24781         (ix86_operands_ok_for_move_multiple): Likewise.
24782         * config/microblaze/microblaze-protos.h
24783         (microblaze_expand_conditional_branch_reg): Likewise.
24784         * config/microblaze/microblaze.c
24785         (microblaze_expand_conditional_branch_reg): Likewise.
24786         * config/powerpcspe/powerpcspe.c (rs6000_init_hard_regno_mode_ok):
24787         Likewise.
24788         (rs6000_reassociation_width): Likewise.
24789         (rs6000_invalid_binary_op): Likewise.
24790         (fusion_p9_p): Likewise.
24791         (emit_fusion_p9_load): Likewise.
24792         (emit_fusion_p9_store): Likewise.
24793         * config/riscv/riscv-protos.h (riscv_regno_mode_ok_for_base_p):
24794         Likewise.
24795         (riscv_hard_regno_mode_ok_p): Likewise.
24796         (riscv_address_insns): Likewise.
24797         (riscv_split_symbol): Likewise.
24798         (riscv_legitimize_move): Likewise.
24799         (riscv_function_value): Likewise.
24800         (riscv_hard_regno_nregs): Likewise.
24801         (riscv_expand_builtin): Likewise.
24802         * config/riscv/riscv.c (riscv_build_integer_1): Likewise.
24803         (riscv_build_integer): Likewise.
24804         (riscv_split_integer): Likewise.
24805         (riscv_legitimate_constant_p): Likewise.
24806         (riscv_cannot_force_const_mem): Likewise.
24807         (riscv_regno_mode_ok_for_base_p): Likewise.
24808         (riscv_valid_base_register_p): Likewise.
24809         (riscv_valid_offset_p): Likewise.
24810         (riscv_valid_lo_sum_p): Likewise.
24811         (riscv_classify_address): Likewise.
24812         (riscv_legitimate_address_p): Likewise.
24813         (riscv_address_insns): Likewise.
24814         (riscv_load_store_insns): Likewise.
24815         (riscv_force_binary): Likewise.
24816         (riscv_split_symbol): Likewise.
24817         (riscv_force_address): Likewise.
24818         (riscv_legitimize_address): Likewise.
24819         (riscv_move_integer): Likewise.
24820         (riscv_legitimize_const_move): Likewise.
24821         (riscv_legitimize_move): Likewise.
24822         (riscv_address_cost): Likewise.
24823         (riscv_subword): Likewise.
24824         (riscv_output_move): Likewise.
24825         (riscv_canonicalize_int_order_test): Likewise.
24826         (riscv_emit_int_order_test): Likewise.
24827         (riscv_function_arg_boundary): Likewise.
24828         (riscv_pass_mode_in_fpr_p): Likewise.
24829         (riscv_pass_fpr_single): Likewise.
24830         (riscv_pass_fpr_pair): Likewise.
24831         (riscv_get_arg_info): Likewise.
24832         (riscv_function_arg): Likewise.
24833         (riscv_function_arg_advance): Likewise.
24834         (riscv_arg_partial_bytes): Likewise.
24835         (riscv_function_value): Likewise.
24836         (riscv_pass_by_reference): Likewise.
24837         (riscv_setup_incoming_varargs): Likewise.
24838         (riscv_print_operand): Likewise.
24839         (riscv_elf_select_rtx_section): Likewise.
24840         (riscv_save_restore_reg): Likewise.
24841         (riscv_for_each_saved_reg): Likewise.
24842         (riscv_register_move_cost): Likewise.
24843         (riscv_hard_regno_mode_ok_p): Likewise.
24844         (riscv_hard_regno_nregs): Likewise.
24845         (riscv_class_max_nregs): Likewise.
24846         (riscv_memory_move_cost): Likewise.
24847         * config/rl78/rl78-protos.h (rl78_split_movsi): Likewise.
24848         * config/rl78/rl78.c (rl78_split_movsi): Likewise.
24849         (rl78_addr_space_address_mode): Likewise.
24850         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
24851         Likewise.
24852         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Likewise.
24853         (rs6000_reassociation_width): Likewise.
24854         (rs6000_invalid_binary_op): Likewise.
24855         (fusion_p9_p): Likewise.
24856         (emit_fusion_p9_load): Likewise.
24857         (emit_fusion_p9_store): Likewise.
24858         * config/visium/visium-protos.h (prepare_move_operands): Likewise.
24859         (ok_for_simple_move_operands): Likewise.
24860         (ok_for_simple_move_strict_operands): Likewise.
24861         (ok_for_simple_arith_logic_operands): Likewise.
24862         (visium_legitimize_reload_address): Likewise.
24863         (visium_select_cc_mode): Likewise.
24864         (output_cbranch): Likewise.
24865         (visium_split_double_move): Likewise.
24866         (visium_expand_copysign): Likewise.
24867         (visium_expand_int_cstore): Likewise.
24868         (visium_expand_fp_cstore): Likewise.
24869         * config/visium/visium.c (visium_pass_by_reference): Likewise.
24870         (visium_function_arg): Likewise.
24871         (visium_function_arg_advance): Likewise.
24872         (visium_libcall_value): Likewise.
24873         (visium_setup_incoming_varargs): Likewise.
24874         (visium_legitimate_constant_p): Likewise.
24875         (visium_legitimate_address_p): Likewise.
24876         (visium_legitimize_address): Likewise.
24877         (visium_secondary_reload): Likewise.
24878         (visium_register_move_cost): Likewise.
24879         (visium_memory_move_cost): Likewise.
24880         (prepare_move_operands): Likewise.
24881         (ok_for_simple_move_operands): Likewise.
24882         (ok_for_simple_move_strict_operands): Likewise.
24883         (ok_for_simple_arith_logic_operands): Likewise.
24884         (visium_function_value_1): Likewise.
24885         (rtx_ok_for_offset_p): Likewise.
24886         (visium_legitimize_reload_address): Likewise.
24887         (visium_split_double_move): Likewise.
24888         (visium_expand_copysign): Likewise.
24889         (visium_expand_int_cstore): Likewise.
24890         (visium_expand_fp_cstore): Likewise.
24891         (visium_split_cstore): Likewise.
24892         (visium_select_cc_mode): Likewise.
24893         (visium_split_cbranch): Likewise.
24894         (output_cbranch): Likewise.
24895         (visium_print_operand_address): Likewise.
24896         * expmed.c (flip_storage_order): Likewise.
24897         * expmed.h (emit_cstore): Likewise.
24898         (flip_storage_order): Likewise.
24899         * genrecog.c (validate_pattern): Likewise.
24900         * hsa-gen.c (gen_hsa_addr): Likewise.
24901         * internal-fn.c (expand_arith_overflow): Likewise.
24902         * ira-color.c (allocno_copy_cost_saving): Likewise.
24903         * lra-assigns.c (find_hard_regno_for_1): Likewise.
24904         * lra-constraints.c (prohibited_class_reg_set_mode_p): Likewise.
24905         (process_invariant_for_inheritance): Likewise.
24906         * lra-eliminations.c (move_plus_up): Likewise.
24907         * omp-low.c (lower_oacc_reductions): Likewise.
24908         * simplify-rtx.c (simplify_subreg): Likewise.
24909         * target.def (TARGET_SETUP_INCOMING_VARARG_BOUNDS): Likewise.
24910         (TARGET_CHKP_BOUND_MODE): Likewise..
24911         * targhooks.c (default_chkp_bound_mode): Likewise.
24912         (default_setup_incoming_vararg_bounds): Likewise.
24913         * targhooks.h (default_chkp_bound_mode): Likewise.
24914         (default_setup_incoming_vararg_bounds): Likewise.
24915         * tree-ssa-math-opts.c (divmod_candidate_p): Likewise.
24916         * tree-vect-loop.c (calc_vec_perm_mask_for_shift): Likewise.
24917         (have_whole_vector_shift): Likewise.
24918         * tree-vect-stmts.c (vectorizable_load): Likewise.
24919         * doc/tm.texi: Regenerate.
24920
24921 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
24922
24923         Graceful degrade if Binutils PR21472 is not available.
24924
24925         PR target/81072
24926         * configure.ac [target=avr]: WARN instead of ERROR if avrxmega3
24927         .rodata in flash test fails.
24928         (HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH): Define it if test passes.
24929         * confgure: Regenerate.
24930         * config.in: Regenerate.
24931         * config/avr/avr.c (avr_asm_named_section)
24932         [HAVE_LD_AVR_AVRXMEGA3_RODATA_IN_FLASH]: Only trigger
24933         __do_copy_data for stuff in .rodata if flash_pm_offset = 0.
24934         (avr_asm_init_sections): Same.
24935
24936 2017-07-05  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
24937
24938         * config/arm/neon.md (fma<VCVTF:mode>4): Remove %?.
24939         (fma<VH:mode>4_intrinsic): Likewise.
24940         (*fmsub<VCVTF:mode>4): Likewise.
24941         (*fmsub<VH:mode>4_intrinsic): Likewise.
24942
24943 2017-07-05  Georg-Johann Lay  <avr@gjlay.de>
24944
24945         PR target/81305
24946         * config/avr/avr.c (avr_out_movhi_mr_r_xmega) [CONSTANT_ADDRESS_P]:
24947         Don't depend on "optimize > 0".
24948         (out_movhi_r_mr, out_movqi_mr_r): Same.
24949         (out_movhi_mr_r, out_movqi_r_mr): Same.
24950         (avr_address_cost) [CONSTANT_ADDRESS_P]: Don't depend cost for
24951         io_address_operand on "optimize > 0".
24952
24953 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24954
24955         * tree-loop-distribution.c: Add general explanantion on the pass.
24956         (generate_loops_for_partition): Mark distributed loop.
24957         (pg_add_dependence_edges): New parameter.  Handle alias data
24958         dependence specially and record it in the parameter if asked.
24959         (struct pg_vdata, pg_edata, pg_edge_callback_data): New structs.
24960         (init_partition_graph_vertices, add_partition_graph_edge): New.
24961         (pg_skip_alias_edge, free_partition_graph_edata_cb): New.
24962         (free_partition_graph_vdata, build_partition_graph): New.
24963         (sort_partitions_by_post_order, merge_dep_scc_partitions): New.
24964         (pg_collect_alias_ddrs, break_alias_scc_partitions): New.
24965         (data_ref_segment_size, latch_dominated_by_data_ref): New.
24966         (compute_alias_check_pairs, version_loop_by_alias_check): New.
24967         (version_for_distribution_p, finalize_partitions): New.
24968         (distribute_loop): Handle alias data dependence specially.  Factor
24969         out loop fusion code as functions and call these functions.
24970
24971 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24972
24973         * tree-loop-distribution.c (classify_partition): New parameter and
24974         better handle reduction statement.
24975         (rdg_build_partitions): Revise comment.
24976         (distribute_loop): Compute statements in all partitions and pass it
24977         to classify_partition.
24978
24979 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24980
24981         * tree-loop-distribution.c (enum partition_type): New.
24982         (struct partition): New field type.
24983         (partition_merge_into): Add parameter.  Update partition type.
24984         (data_dep_in_cycle_p, update_type_for_merge): New functions.
24985         (build_rdg_partition_for_vertex): Compute partition type.
24986         (rdg_build_partitions): Dump partition type.
24987         (distribute_loop): Update calls to partition_merge_into.
24988
24989 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24990
24991         * tree-loop-distribution.c (struct ddr_hasher): New.
24992         (ddr_hasher::hash, ::equal, get_data_dependence): New function.
24993         (ddrs_table): New.
24994         (classify_partition): Call get_data_dependence.
24995         (pg_add_dependence_edges): Ditto.
24996         (distribute_loop): Release data dependence hash table.
24997
24998 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
24999
25000         * tree-loop-distribution.c (ref_base_address): Delete.
25001         (similar_memory_accesses): Rename ...
25002         (share_memory_accesses): ... to this.  Check if partitions access
25003         the same memory reference.
25004         (distribute_loop): Call share_memory_accesses.
25005
25006 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25007
25008         * tree-loop-distribution.c (struct partition): New field recording
25009         its data reference.
25010         (partition_alloc, partition_free): Init and release data refs.
25011         (partition_merge_into): Merge data refs.
25012         (build_rdg_partition_for_vertex): Collect data refs for partition.
25013         (pg_add_dependence_edges): Change parameters from vector to bitmap.
25014         Update uses.
25015         (distribute_loop): Remve data refs from vertice data of partition
25016         graph.
25017
25018 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25019
25020         * tree-loop-distribution.c (params.h): Include header file.
25021         (MAX_DATAREFS_NUM, DR_INDEX): New macro.
25022         (datarefs_vec): New global var.
25023         (create_rdg_vertices): Use datarefs_vec directly.
25024         (free_rdg): Don't free data references.
25025         (build_rdg): Update use.  Don't free data references.
25026         (distribute_loop): Compute global variable for data references.
25027         Bail out if there are too many data references.
25028
25029 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25030
25031         * tree-loop-distribution.c (loop_nest): New global var.
25032         (build_rdg): Use loop directly, rather than loop nest.
25033         (pg_add_dependence_edges): Remove loop nest parameter.  Use global
25034         variable directly.
25035         (distribute_loop): Compute global variable loop nest.  Update use.
25036
25037 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25038
25039         * tree-loop-distribution.c (enum fuse_type, fuse_message): New.
25040         (partition_merge_into): New parameter.  Dump reason for fusion.
25041         (distribute_loop): Update use of partition_merge_into.
25042
25043 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25044
25045         * tree-loop-distribution.c (bb_top_order_index): New.
25046         (bb_top_order_index_size, bb_top_order_cmp): New.
25047         (stmts_from_loop): Use topological order.
25048         (pass_loop_distribution::execute): Compute and release topological
25049         order for basic blocks.
25050
25051 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25052
25053         * tree-loop-distribution.c (pass_loop_distribution::execute): Skip
25054         if no loops.
25055
25056 2017-07-05  Bin Cheng  <bin.cheng@arm.com>
25057
25058         * cfgloop.h (struct loop): Add comment.  New field orig_loop_num.
25059         * cfgloopmanip.c (lv_adjust_loop_entry_edge): Comment change.
25060         * internal-fn.c (expand_LOOP_DIST_ALIAS): New function.
25061         * internal-fn.def (LOOP_DIST_ALIAS): New.
25062         * tree-vectorizer.c (fold_loop_vectorized_call): Rename to ...
25063         (fold_loop_internal_call): ... this.
25064         (vect_loop_dist_alias_call): New function.
25065         (set_uid_loop_bbs): Call fold_loop_internal_call.
25066         (vectorize_loops): Fold IFN_LOOP_VECTORIZED and IFN_LOOP_DIST_ALIAS
25067         internal calls.
25068
25069 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
25070
25071         PR target/81300
25072         * config/i386/i386.md (setcc + movzbl/and to xor + setcc peepholes):
25073         Require dead FLAGS_REG at the beginning of a peephole.
25074
25075 2017-07-04  Uros Bizjak  <ubizjak@gmail.com>
25076
25077         PR target/81294
25078         * config/i386/adxintrin.h (_subborrow_u32): Swap _X and _Y
25079         arguments in the call to __builtin_ia32_sbb_u32.
25080         (_subborrow_u64): Swap _X and _Y arguments in the call to
25081         __builtin_ia32_sbb_u64.
25082
25083 2017-07-04  Jakub Jelinek  <jakub@redhat.com>
25084
25085         PR debug/81278
25086         * tree-vrp.c (compare_assert_loc): Turn into a function template
25087         with stable template parameter.  Only test if a->e is NULL,
25088         !a->e == !b->e has been verified already.  Use e == NULL or
25089         e != NULL instead of e or ! e tests.  If stable is true, don't use
25090         iterative_hash_expr, on the other side allow a or b or both NULL
25091         and sort the NULLs last.
25092         (process_assert_insertions): Sort using compare_assert_loc<false>
25093         instead of compare_assert_loc, later sort using
25094         compare_assert_loc<true> before calling process_assert_insertions_for
25095         in a loop.  Use break instead of continue once seen NULL pointer.
25096
25097 2017-07-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
25098
25099         * config/arm/driver-arm.c (arm_cpu_table): Add entry for ARM
25100         Cortex-R7 and Cortex-R8 processors.
25101
25102 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
25103
25104         * ipa-utils.c (ipa_merge_profiles): Fix merging when dst is
25105         uninitialized while src is not.
25106
25107 2017-07-04  Richard Earnshaw  <rearnsha@arm.com>
25108
25109         * common/config/arm/arm-common.c: Adjust include path for
25110         arm-cpu-cdata.h
25111         * config/arm/t-arm (TM_H): Adjust path for arm-cpu.h.
25112         (arm-cpu.h): Create in build directory.  Adjust dependency rules.
25113         (arm-cpu-data.h): Likewise.
25114         (arm-cpu-cdata.h): Likewise.
25115         * config/arm/arm-cpu.h: Delete.
25116         * config/arm/arm-cpu-cdata.h: Delete.
25117         * config/arm/arm-cpu-data.h: Delete.
25118
25119 2017-07-04  James Greenhalgh  <james.greenhalgh@arm.com>
25120
25121         * config/arm/arm-cpus.in (cortex-a55): New.
25122         (cortex-a75): Likewise.
25123         (cortex-a75.cortex-a55): Likewise.
25124         * config/arm/driver-arm.c (arm_cpu_table): Add cortex-a55 and
25125         cortex-a75.
25126         * doc/invoke.texi (-mcpu): Document cortex-a55 and cortex-a75.
25127         * config/arm/arm-cpu-cdata.h: Regenerate.
25128         * config/arm/arm-cpu-data.h: Regenerate.
25129         * config/arm/arm-cpu.h: Regenerate.
25130         * config/arm/arm-tables.opt: Regenerate.
25131         * config/arm/arm-tune.md: Regenerate.
25132
25133 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
25134
25135         * haifa-sched.c (sched_create_recovery_edges): Update profile.
25136
25137 2017-07-04  Jan Hubicka  <hubicka@ucw.cz>
25138
25139         * bb-reorder.c (better_edge_p): Fix handling of uninitialized
25140         probability.
25141
25142 2017-07-04  Richard Sandiford  <richard.sandiford@linaro.org>
25143
25144         PR tree-optimization/81292
25145         * tree-ssa-strlen.c (handle_builtin_strlen): When setting
25146         full_string_p, also call adjust_related_strinfos if the adjustment
25147         is simple, otherwise invalidate related strinfos.
25148
25149 2017-07-04  Martin Liska  <mliska@suse.cz>
25150
25151         PR sanitizer/81040
25152         * sanopt.c (sanitize_rewrite_addressable_params): Mark the
25153         newly created variable as DECL_IGNORED_P.
25154
25155 2017-07-04  Martin Liska  <mliska@suse.cz>
25156
25157         PR ipa/81293
25158         * ipa-inline.c (inline_small_functions):
25159         Use xstrdup_for_dump.
25160
25161 2017-07-04  Tom de Vries  <tom@codesourcery.com>
25162
25163         * graph.c (draw_cfg_edges): Save and restore EDGE_DFS_BACK.
25164
25165 2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
25166
25167         PR target/81033
25168         * config/darwin.c (darwin_function_switched_text_sections):
25169         Fix spaces.
25170
25171 2017-07-03  Jan Hubicka  <hubicka@ucw.cz>
25172
25173         * tree-vect-loop-manip.c (vect_do_peeling): Fix scaling up.
25174
25175 2017-07-03  Richard Earnshaw  <rearnsha@arm.com>
25176
25177         * doc/invoke.texi (ARM Options): Add -mbe8 and -mbe32 to option summary.
25178
25179 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25180
25181         * tree-vect-loop.c (vect_analyze_loop_2): Treat min_scalar_loop_bound,
25182         min_profitable_iters, and th as inclusive lower bounds.
25183         Fix LOOP_VINFO_PEELING_FOR_GAPS condition.
25184         (vect_estimate_min_profitable_iters): Return inclusive lower bounds
25185         for min_profitable_iters and min_profitable_estimate.
25186         (vect_transform_loop): Treat th as an inclusive lower bound.
25187         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
25188
25189 2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
25190
25191         PR target/81033
25192         * config/darwin.c (darwin_function_switched_text_sections):
25193         Replace DECL_NAME with DECL_ASSEMBLER_NAME, split assemble_name_raw
25194         in two pieces, and suppress the use of buf.
25195
25196 2017-07-03  Nathan Sidwell  <nathan@acm.org>
25197
25198         * hash-table.h (hash_table_mod1): Fix indentation.
25199
25200 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25201
25202         PR middle-end/81290
25203         * predict.c (force_edge_cold): Be more careful about propagation
25204         backward.
25205         * profile-count.h (profile_probability::guessed,
25206         profile_probability::fdo, profile_count::guessed, profile_count::fdo):
25207         New.
25208         * tree-ssa-threadupdate.c (recompute_probabilities): Result is guessed.
25209
25210 2017-07-03  James Greenhalgh  <james.greenhalgh@arm.com>
25211
25212         * doc/invoke.texi (rcpc architecture extension): Document it.
25213
25214 2017-07-03  Richard Biener  <rguenther@suse.de>
25215
25216         PR tree-optimization/60510
25217         * tree-vect-loop.c (vect_create_epilog_for_reduction): Pass in
25218         the scalar reduction PHI and use it.
25219         (vectorizable_reduction): Properly guard the single_defuse_cycle
25220         path for non-SLP reduction chains where we cannot use it.
25221         Rework reduc_def/index and vector type deduction.  Rework
25222         vector operand gathering during reduction op code-gen.
25223         * tree-vect-slp.c (vect_analyze_slp): For failed SLP reduction
25224         chains dissolve the chain and leave it to non-SLP reduction
25225         handling.
25226
25227 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25228
25229         * tree-data-ref.h (dr_alignment): Declare.
25230         * tree-data-ref.c (dr_alignment): New function.
25231         * tree-vectorizer.h (dataref_aux): Remove base_element_aligned.
25232         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
25233         set it.
25234         * tree-vect-stmts.c (vectorizable_store): Use dr_alignment.
25235
25236 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25237
25238         * tree-data-ref.h (innermost_loop_behavior): Add base_alignment
25239         and base_misalignment fields.
25240         (DR_BASE_ALIGNMENT, DR_BASE_MISALIGNMENT): New macros.
25241         * tree-data-ref.c: Include builtins.h.
25242         (dr_analyze_innermost): Set up the new innmost_loop_behavior fields.
25243         * tree-vectorizer.h (STMT_VINFO_DR_BASE_ALIGNMENT): New macro.
25244         (STMT_VINFO_DR_BASE_MISALIGNMENT): Likewise.
25245         * tree-vect-data-refs.c: Include tree-cfg.h.
25246         (vect_compute_data_ref_alignment): Use the new innermost_loop_behavior
25247         fields instead of calculating an alignment here.
25248         (vect_analyze_data_refs): Use dr_analyze_innermost.  Dump the new
25249         innermost_loop_behavior fields.
25250
25251 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25252
25253         * tree-data-ref.h (innermost_loop_behavior): Add a step_alignment
25254         field.
25255         (DR_STEP_ALIGNMENT): New macro.
25256         * tree-vectorizer.h (STMT_VINFO_DR_STEP_ALIGNMENT): Likewise.
25257         * tree-data-ref.c (dr_analyze_innermost): Initalize step_alignment.
25258         (create_data_ref): Print it.
25259         * tree-vect-stmts.c (vectorizable_load): Use the step alignment
25260         to tell whether the step preserves vector (mis)alignment.
25261         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
25262         Move the check for an integer step and generalise to all INTEGER_CST.
25263         (vect_analyze_data_refs): Set DR_STEP_ALIGNMENT when setting DR_STEP.
25264         Print the outer step alignment.
25265
25266 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25267
25268         * tree-data-ref.h (innermost_loop_behavior): Replace aligned_to
25269         with offset_alignment.
25270         (DR_ALIGNED_TO): Delete.
25271         (DR_OFFSET_ALIGNMENT): New macro.
25272         * tree-vectorizer.h (STMT_VINFO_DR_ALIGNED_TO): Delete.
25273         (STMT_VINFO_DR_OFFSET_ALIGNMENT): New macro.
25274         * tree-data-ref.c (dr_analyze_innermost): Update after above changes.
25275         (create_data_ref): Likewise.
25276         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
25277         (vect_analyze_data_refs): Likewise.
25278         * tree-if-conv.c (if_convertible_loop_p_1): Use memset before
25279         creating dummy innermost behavior.
25280
25281 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25282
25283         * tree-data-ref.h (dr_analyze_innermost): Replace the dr argument
25284         with a "innermost_loop_behavior *" and refeence tree.
25285         * tree-data-ref.c (dr_analyze_innermost): Likewise.
25286         (create_data_ref): Update call accordingly.
25287         * tree-predcom.c (find_looparound_phi): Likewise.
25288
25289 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25290
25291         * tree-vectorizer.h (_stmt_vec_info): Replace individual dr_*
25292         fields with dr_wrt_vec_loop.
25293         (STMT_VINFO_DR_BASE_ADDRESS, STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET)
25294         (STMT_VINFO_DR_STEP, STMT_VINFO_DR_ALIGNED_TO): Update accordingly.
25295         (STMT_VINFO_DR_WRT_VEC_LOOP): New macro.
25296         (vect_dr_behavior): New function.
25297         (vect_create_addr_base_for_vector_ref): Remove loop parameter.
25298         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
25299         vect_dr_behavior.  Use a step_preserves_misalignment_p boolean to
25300         track whether the step preserves the misalignment.
25301         (vect_create_addr_base_for_vector_ref): Remove loop parameter.
25302         Use vect_dr_behavior.
25303         (vect_setup_realignment): Update call accordingly.
25304         (vect_create_data_ref_ptr): Likewise.  Use vect_dr_behavior.
25305         * tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Update
25306         call to vect_create_addr_base_for_vector_ref.
25307         (vect_create_cond_for_align_checks): Likewise.
25308         * tree-vect-patterns.c (vect_recog_bool_pattern): Copy
25309         STMT_VINFO_DR_WRT_VEC_LOOP as a block.
25310         (vect_recog_mask_conversion_pattern): Likewise.
25311         * tree-vect-stmts.c (compare_step_with_zero): Use vect_dr_behavior.
25312         (new_stmt_vec_info): Remove redundant zeroing.
25313
25314 2017-07-03  Richard Earnshaw  <rearnsha@arm.com>
25315
25316         * common/config/arm/arm-common.c (arm_be8_option): New function.
25317         * config/arm/arm-isa.h (isa_feature): Add new feature bit isa_bit_be8.
25318         (ISA_ARMv6): Add isa_bit_be8.
25319         * config/arm/arm.h (arm_be8_option): Add prototype.
25320         (BE8_SPEC_FUNCTION): New define.
25321         (EXTRA_SPEC_FUNCTIONS): Add BE8_SPEC_FUNCTION.
25322         * config/arm/arm.opt (mbig-endian): Mark as Negative of mlittle-endian.
25323         (mlittle-endian): Similarly.
25324         (mbe8, mbe32): New options.
25325         * config/arm/bpabi.h (BE8_LINK_SPEC): Call arm_be8_option.
25326         * doc/invoke.texi (ARM Options): Document -mbe8 and -mbe32.
25327
25328 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25329
25330         * tree-cfg.c (gimple_find_sub_bbs): Fix profile updating.
25331
25332 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25333
25334         * tree-cfgcleanup.c (want_merge_blocks_p): New function.
25335         (cleanup_tree_cfg_bb): Use it.
25336         * profile-count.h (profile_count::of_for_merging, profile_count::merge):
25337         New functions.
25338         * tree-cfg.c (gimple_merge_blocks): Use profile_count::merge.
25339
25340 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25341
25342         PR bootstrap/81285
25343         * loop-doloop.c (add_test): Update profile.
25344
25345 2017-07-03  Martin Liska  <mliska@suse.cz>
25346
25347         PR sanitize/81040
25348         * sanopt.c (rewrite_usage_of_param): New function.
25349         (sanitize_rewrite_addressable_params): Likewise.
25350         (pass_sanopt::execute): Call rewrite_usage_of_param.
25351
25352 2017-07-03  Richard Biener  <rguenther@suse.de>
25353
25354         * tree-vect-loop.c (vect_create_epilog_for_reduction): Revert
25355         back to using VIEW_CONVERT_EXPR.
25356
25357 2017-07-03  Martin Liska  <mliska@suse.cz>
25358
25359         PR other/78366
25360         * doc/extend.texi: Document when a resolver function is
25361         generated for target_clones.
25362
25363 2017-07-03  Martin Liska  <mliska@suse.cz>
25364
25365         * asan.c (asan_emit_stack_protection): Unpoison just red zones
25366         and shadow memory of auto variables which are subject of
25367         use-after-scope sanitization.
25368         (asan_expand_mark_ifn): Add do set only when is_poison.
25369
25370 2016-07-03  Richard Biener  <rguenther@suse.de>
25371
25372         * tree-vect-loop.c (vect_analyze_loop_operations): Also analyze
25373         reduction PHIs.
25374         (vect_force_simple_reduction): Record reduction def -> phi mapping.
25375         (vectorizable_reduction): Perform reduction PHI creation when
25376         visiting a reduction PHI and adjust and simplify code generation
25377         phase of the reduction op.  Cache dts, use fold_binary, not fold_build2.
25378         (vect_transform_loop): Visit reduction PHIs.
25379         * tree-vect-slp.c (vect_get_and_check_slp_defs): Record reduction
25380         defs into the SLP tree.
25381         (vect_build_slp_tree): Reduction defs terminate the recursion.
25382         * tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Allow lookup
25383         of reduction defs.
25384         (vect_get_vec_defs_for_stmt_copy): Export.
25385         (vect_get_vec_defs): Likewise.
25386         * tree-vectorizer.h (struct _stmt_vec_info): Amend reduc_def
25387         purpose.
25388         (vect_get_vec_defs_for_stmt_copy): Declare.
25389         (vect_get_vec_defs): Likewise.
25390
25391 2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
25392
25393         * tree-data-ref.c (dr_analyze_innermost): Replace the "nest"
25394         parameter with a "loop" parameter and use it instead of the
25395         loop containing DR_STMT.  Don't check simple_iv when doing
25396         BB analysis.  Describe the two analysis modes in the comment.
25397
25398 2017-07-03  Tom de Vries  <tom@codesourcery.com>
25399
25400         PR tree-optimization/69468
25401         * tree-ssa-tail-merge.c (ignore_edge_flags): New constant.
25402         (find_same_succ_bb): Handle ignore_edge_flags.
25403
25404 2017-07-03  Tom de Vries  <tom@codesourcery.com>
25405
25406         PR tree-optimization/81192
25407         * tree-ssa-tail-merge.c (same_succ_hash): Use bb->loop_father->num in
25408         hash.
25409         (same_succ::equal): Don't find bbs to be equal if bb->loop_father
25410         differs.
25411         (find_same_succ_bb): Remove obsolete test on bb->loop_father->latch.
25412
25413 2017-07-03  Tom de Vries  <tom@codesourcery.com>
25414
25415         PR tree-optimization/81192
25416         * tree-ssa-tail-merge.c (same_succ_flush_bb): Handle
25417         BB_SAME_SUCC (bb) == NULL.
25418
25419 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25420
25421         * cfgrtl.c (rtl_verify_edges): Enable checking of profile_probability
25422         consistency.
25423
25424 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25425
25426         * dumpfile.c: Include profile-count.h
25427         * tree-cfg.c (gimple_duplicate_sese_tail): Drop UNUSED attributes;
25428         update profile.
25429         (insert_cond_bb): Update profile.
25430         * tree-cfg.h (insert_cond_bb): Update prototype.
25431         * tree-chkp-opt.c (chkp_optimize_string_function_calls): Update.
25432         * tree-dump.c: Do not include tree-cfg.
25433
25434 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25435
25436         * bb-reorder.c (fix_up_crossing_landing_pad): Update profile.
25437
25438 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25439
25440         * expect.c (dw2_build_landing_pads): Update profile of the landing pad
25441         bb.
25442
25443 2017-07-02  Jan Hubicka  <hubicka@ucw.cz>
25444
25445         * tree-complex.c (expand_complex_div_wide): update profile.
25446
25447 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25448             Alan Hayward  <alan.hayward@arm.com>
25449             David Sherwood  <david.sherwood@arm.com>
25450
25451         * Makefile.in (MACHMODE_H): Remove insn-modes.h
25452         (CORETYPES_H): New define.
25453         (MOSTLYCLEANFILES): Add insn-modes-inline.h.
25454         (insn-modes-inline.h, s-modes-inline-h): New rules.
25455         (generated_files): Add insn-modes-inline.h.
25456         (RTL_BASE_H, TREE_CORE_H): Use CORETYPES_H instead of coretypes.h.
25457         (build/gensupport.o, build/ggc-none.o, build/print-rtl.o): Likewise.
25458         (build/read-md.o, build/read-rtl.o, build/rtl.o): Likewise.
25459         (build/vec.o, build/hash-table.o, build/inchash.o): Likewise.
25460         (build/gencondmd.o, build/genattr.o, build/genattr-common.o): Likewise.
25461         (build/genattrtab.o, build/genautomata.o, build/gencheck.o): Likewise.
25462         (build/gencodes.o, build/genconditions.o): Likewise.
25463         (build/genconfig.o, build/genconstants.o, build/genemit.o): Likewise.
25464         (build/genenums.o, build/genextract.o, build/genflags.o): Likewise.
25465         (build/gentarget-def.o, build/genmddeps.o, build/genopinit.o)
25466         (build/genoutput.o, build/genpeep.o, build/genpreds.o): Likewise.
25467         (build/genrecog.o, build/genmddump.o, build/genmatch.o): Likewise.
25468         (build/gencfn-macros.o, build/gcov-iov.o): Likewise.
25469         * coretypes.h: Include everything up to real.h for generators.
25470         Include insn-modes.h first.  Include wide-int-print.h after
25471         wide-int.h.  Include insn-modes-inline.h and then machmode.h.
25472         * machmode.h: Don't include insn-modes.h here.
25473         * function-tests.c: Remove includes of signop.h, machmode.h,
25474         double-int.h and wide-int.h.
25475         * rtl.h: Likewise.
25476         * gcc-rich-location.c: Remove includes of machmode.h, double-int.h
25477         and wide-int.h.
25478         * optc-save-gen.awk: Likewise.
25479         * gencheck.c (BITS_PER_UNIT): Delete dummy definition.
25480         * godump.c: Remove include of wide-int-print.h.
25481         * pretty-print.h: Likewise.
25482         * wide-int-print.cc: Likewise.
25483         * wide-int.cc: Likewise.
25484         * hash-map-tests.c: Remove include of signop.h.
25485         * hash-set-tests.c: Likewise.
25486         * rtl-tests.c: Likewise.
25487         * mkconfig.sh: Remove include of machmode.h.
25488         * genmodes.c (emit_insn_modes_h): Split emission of inline functions
25489         into...
25490         (emit_insn_modes_inline_h): ...this new function.  Emit the code
25491         into an insn-modes-inline.h header file, adding appropriate
25492         include guards and end comments.
25493         (emit_insn_modes_c_header): Remove include of machmode.h.
25494         (emit_min_insn_modes_c_header): Include coretypes.h rather than
25495         machmode.h.
25496         (main): Handle -i flag and call emit_insn_modes_inline_h when
25497         it is passed.
25498
25499 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25500
25501         * tree-ssa-strlen.c (strinfo): Rename the length field to
25502         nonzero_chars.  Add a full_string_p field.
25503         (compare_nonzero_chars, zero_length_string_p): New functions.
25504         (get_addr_stridx): Add an offset_out parameter.
25505         Use compare_nonzero_chars.
25506         (get_stridx): Update accordingly.  Use compare_nonzero_chars.
25507         (new_strinfo): Update after above changes to strinfo.
25508         (set_endptr_and_length): Set full_string_p.
25509         (get_string_length): Update after above changes to strinfo.
25510         (unshare_strinfo): Update call to new_strinfo.
25511         (maybe_invalidate): Likewise.
25512         (get_stridx_plus_constant): Change off to unsigned HOST_WIDE_INT.
25513         Use compare_nonzero_chars and zero_string_p.  Treat nonzero_chars
25514         as a uhwi instead of an shwi.  Update after above changes to
25515         strinfo and new_strinfo.
25516         (zero_length_string): Assert that chainsi contains full strings.
25517         Use zero_length_string_p.  Update call to new_strinfo.
25518         (adjust_related_strinfos): Update after above changes to strinfo.
25519         Copy full_string_p from origsi.
25520         (adjust_last_stmt): Use zero_length_string_p.
25521         (handle_builtin_strlen): Update after above changes to strinfo and
25522         new_strinfo.  Install the lhs as the string length if the previous
25523         entry didn't describe a full string.
25524         (handle_builtin_strchr): Update after above changes to strinfo
25525         and new_strinfo.
25526         (handle_builtin_strcpy): Likewise.
25527         (handle_builtin_strcat): Likewise.
25528         (handle_builtin_malloc): Likewise.
25529         (handle_pointer_plus): Likewise.
25530         (handle_builtin_memcpy): Likewise.  Track nonzero characters
25531         that aren't necessarily followed by a nul terminator.
25532         (handle_char_store): Likewise.
25533
25534 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25535
25536         PR tree-optimization/80769
25537         * tree-ssa-strlen.c (strinfo): Document that "stmt" is also used
25538         for malloc and calloc.  Document the new invariant that all related
25539         strinfos have delayed lengths or none do.
25540         (verify_related_strinfos): Move earlier in file.
25541         (set_endptr_and_length): New function, split out from...
25542         (get_string_length): ...here.  Also set the lengths of related
25543         strinfos.
25544         (zero_length_string): Assert that chainsi has known (rather than
25545         delayed) lengths.
25546         (adjust_related_strinfos): Likewise.
25547
25548 2017-07-02  Richard Sandiford  <richard.sandiford@linaro.org>
25549
25550         PR tree-optimization/81136
25551         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Only
25552         assert that two references with the same misalignment have the same
25553         compile-time misalignment if those compile-time misalignments
25554         are known.
25555
25556 2017-07-01  Andi Kleen  <ak@linux.intel.com>
25557
25558         * print-tree.c (print_node): Print all attributes.
25559
25560 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25561
25562         * cfg.c (scale_bbs_frequencies): New function.
25563         * cfg.h (scale_bbs_frequencies): Declare it.
25564         * cfgloopanal.c (single_likely_exit): Cleanup.
25565         * cfgloopmanip.c (scale_loop_frequencies): Take profile_probability
25566         as parameter.
25567         (scale_loop_profile): Likewise.
25568         (loop_version): Likewise.
25569         (create_empty_loop_on_edge): Update.
25570         * cfgloopmanip.h (scale_loop_frequencies, scale_loop_profile,
25571         scale_loop_frequencies, scale_loop_profile, loopify,
25572         loop_version): Update prototypes.
25573         * modulo-sched.c (sms_schedule): Update.
25574         * predict.c (unlikely_executed_edge_p): Also check probability.
25575         (probably_never_executed_edge_p): Fix typo.
25576         * tree-if-conv.c (version_loop_for_if_conversion): Update.
25577         * tree-parloops.c (gen_parallel_loop): Update.
25578         * tree-ssa-loop-ivcanon.c (try_peel_loop): Update.
25579         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
25580         * tree-ssa-loop-split.c (split_loop): Update.
25581         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update.
25582         * tree-vect-loop-manip.c (vect_do_peeling): Update.
25583         (vect_loop_versioning): Update.
25584         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
25585
25586 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25587
25588         * trans-mem.c (split_bb_make_tm_edge): Update profile.
25589
25590 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25591
25592         * tree-if-conv.c (combine_blocks): Use make_single_succ_edge
25593         to keep profile consistent.
25594
25595 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25596
25597         * cfgrtl.c (rtl_flow_call_edges_add): Update profile.
25598         * tree-cfg.c (gimple_flow_call_edges_add): Likewise.
25599         * profile-count.h (max_safe_multiplier): Make unsigned.
25600         (profile_count::guessed_zero): New.
25601
25602 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25603
25604         * bb-reorder.c (fix_up_crossing_landing_pad,
25605         fix_crossing_conditional_branches): Use make_single_succ_edge
25606         to keep profile consistent.
25607
25608 2017-07-01  Jan Hubicka  <hubicka@ucw.cz>
25609
25610         * tree-vect-loop.c (optimize_mask_stores): Use make_single_succ_edge
25611         to update profile.
25612
25613 2017-07-01  Jakub Jelinek  <jakub@redhat.com>
25614
25615         PR sanitizer/81262
25616         * bb-reorder.c (fix_up_fall_thru_edges): Move variable declarations to
25617         the right scopes, make sure cond_jump isn't preserved between multiple
25618         iterations.  Search for fallthru edge whenever there are 3+ edges and
25619         use find_fallthru_edge for it.
25620
25621 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25622
25623         Patch by Alexander Monakov <amonakov@ispras.ru>
25624         * sel-sched-ir.c (compute_succs_info): Handle uninitialized
25625         probabilities consistently.
25626
25627 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25628
25629         * pa.c (pa_expand_compare_and_swap_loop): Update call of
25630         emit_cmp_and_jump_insns.
25631
25632 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25633
25634         PR ipa/81261
25635         * tree-inline.c (expand_call_inline): Combine profile statuses.
25636
25637 2017-06-30  Andrew Pinski  <apinski@cavium.com>
25638
25639         * tree-if-conv.c (predicate_scalar_phi): Update new_stmt if
25640         fold_stmt returned true.
25641
25642 2017-06-30  Nathan Sidwell  <nathan@acm.org>
25643
25644         * ggc.h (empty_string): Delete.
25645         * cfgexpand.c (expand_asm_stmt): Use plain "".
25646         * optabs.c (expand_asm_memory_barrier): Likewise.
25647         * stringpool.c (empty_string): Delete.
25648         (digit_vector, digit_string): Delete.
25649         (ggc_alloc_string): Use plain "", don't optimize single digit
25650         strings.  Use ggc_alloc_atomic.
25651
25652 2017-06-30  Richard Earnshaw  <rearnsha@arm.com>
25653
25654         * rtlanal.c (insn_rtx_cost): If a parallel contains exactly one
25655         comparison set and one other set, use the cost of the non-comparison
25656         set.
25657
25658 2017-06-30  Nathan Sidwell  <nathan@acm.org>
25659
25660         * ggc.h: Replace all 'static inline' with plain 'inline'.  Fix
25661         some formatting.
25662
25663 2017-06-30  Peter Bergner  <bergner@vnet.ibm.com>
25664
25665         * tree-cfg.c (group_case_labels_stmt): Merge scanning and compressing
25666         loops.  Remove now unneeded calls to gimple_switch_set_label() that
25667         just set removed labels to NULL_TREE.
25668
25669 2017-06-30  Aldy Hernandez  <aldyh@redhat.com>
25670
25671         * tree-ssanames.c (set_range_info_raw): Abstract from ...
25672         (set_range_info): ...here.  Only call set_range_info_raw if domain
25673         is useful.
25674         (set_nonzero_bits): Call set_range_info_raw.
25675         * tree-ssanames.h (set_range_info_raw): New.
25676
25677 2017-06-30  Jakub Jelinek  <jakub@redhat.com>
25678
25679         PR target/81225
25680         * config/i386/sse.md (vec_extract_lo_<mode><mask_name>): For V8FI,
25681         V16FI and VI8F_256 iterators, use <store_mask_predicate> instead
25682         of nonimmediate_operand and <store_mask_constraint> instead of m
25683         for the input operand.  For V8FI iterator, always split if input
25684         is a MEM.  For V16FI and V8SF_256 iterators, don't test if both
25685         operands are MEM if <mask_applied>.  For VI4F_256 iterator, use
25686         <store_mask_predicate> instead of register_operand and
25687         <store_mask_constraint> instead of v for the input operand.  Make
25688         sure both operands aren't MEMs for if not <mask_applied>.
25689
25690 2017-06-30  Sylvestre Ledru  <sylvestre@debian.org>
25691
25692         * lto-wrapper.c (copy_file) Close both file descriptors before
25693         exiting normally.
25694
25695 2017-06-30  Martin Liska  <mliska@suse.cz>
25696
25697         PR ipa/81214
25698         * multiple_target.c (create_dispatcher_calls): Make ifunc
25699         also for function that don't have calls or are not referenced.
25700
25701 2017-06-30  Richard Biener  <rguenther@suse.de>
25702
25703         * tree-vect-slp.c (vect_slp_analyze_node_operations): Only
25704         analyze the first scalar stmt.  Move vector type computation
25705         for the BB case here from ...
25706         * tree-vect-stmts.c (vect_analyze_stmt): ... here.  Guard
25707         live operation processing in the SLP case properly.
25708
25709 2017-06-30  Richard Biener  <rguenther@suse.de>
25710
25711         * graph.c (draw_cfg_node_succ_edges): Fix broken dot syntax.
25712
25713 2017-06-30  Martin Liska  <mliska@suse.cz>
25714
25715         PR sanitizer/81021
25716         * tree-eh.c (lower_resx): Call BUILT_IN_ASAN_HANDLE_NO_RETURN
25717         before BUILT_IN_UNWIND_RESUME when ASAN is used.
25718
25719 2017-06-30  Yvan Roux  <yvan.roux@linaro.org>
25720
25721         * doc/invoke.texi (AArch64): Add missing options and remove redundant
25722         ones.
25723
25724 2017-06-30  Richard Biener  <rguenther@suse.de>
25725
25726         PR tree-optimization/81249
25727         * tree-vect-loop.c (vect_create_epilog_for_reduction): Convert
25728         condition reduction result to original scalar type.
25729
25730 2017-06-30  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
25731
25732         * profile-count.h (enum profile_quality): Fix typos and whitespace
25733         issues.
25734
25735 2017-06-30  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
25736
25737         * config/s390/s390.c (s390_expand_setmem): Adjust to the new data
25738         type for branch probabilities.
25739
25740 2017-06-29  Julian Brown  <julian@codesourcery.com>
25741             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
25742
25743         * config/aarch64/aarch64-fusion-pairs.def: Add ALU_BRANCH entry.
25744         * config/aarch64/aarch64.c (AARCH64_FUSE_ALU_BRANCH): New fusion type.
25745         (thunderx2t99_tunings): Set AARCH64_FUSE_ALU_BRANCH flag.
25746         (aarch_macro_fusion_pair_p): Add support for AARCH64_FUSE_ALU_BRANCH.
25747
25748 2017-06-29  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
25749
25750         * config/aarch64/aarch64.c (aarch_macro_fusion_pair_p): Push the
25751         check for CC usage into AARCH64_FUSE_CMP_BRANCH.
25752         * config/i386/i386.c (ix86_macro_fusion_pair_p): Push the check for
25753         CC usage from generic code to here.
25754         * sched-deps.c (sched_macro_fuse_insns): Move the condition for
25755         CC usage into the target macros.
25756
25757 2017-06-29  Maya Rashish  <coypu@sdf.org>
25758
25759         * config/netbsd.h (NETBSD_LIB_SPEC): Add -lc when creating shared
25760         objects.
25761
25762 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25763
25764         * arm/arm-builtins.c: Include profile-count.h
25765         * except.c (sjlj_emit_function_enter): Use
25766         profile_probability::unlikely.
25767
25768 2017-06-29  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
25769
25770         * config/rs6000/rs6000.c (toc_relative_expr_p): Make tocrel_base
25771         and tocrel_offset be pointer args rather than implicitly using
25772         static versions.
25773         (legitimate_constant_pool_address_p, rs6000_emit_move,
25774         const_load_sequence_p, adjust_vperm): Add local tocrel_base and
25775         tocrel_offset and use in toc_relative_expr_p call.
25776         (print_operand, print_operand_address): Use static tocrel_base_oac
25777         and tocrel_offset_oac.
25778         (rs6000_output_addr_const_extra): Use static tocrel_base_oac and
25779         tocrel_offset_oac.
25780
25781 2017-06-29  Maya Rashish  <coypu@sdf.org>
25782
25783         * config/vax/builtins.md (ffssi2_internal): Correct constraint.
25784
25785 2017-06-29  Eric Botcazou  <ebotcazou@adacore.com>
25786
25787         * expr.c (expand_expr) <normal_inner_ref>: When testing for unaligned
25788         objects, take into account only the alignment of 'op0' and 'mode1' if
25789         'op0' is a MEM.
25790
25791 2017-06-29  Steve Ellcey  <sellcey@cavium.com>
25792
25793         * ccmp.c (ccmp_tree_comparison_p): New function.
25794         (ccmp_candidate_p): Update to use above function.
25795         (get_compare_parts): New function.
25796         (expand_ccmp_next): Update to use new functions.
25797         (expand_ccmp_expr_1): Take tree arg instead of gimple, update to use
25798         new functions.
25799         (expand_ccmp_expr): Pass tree instead of gimple to expand_ccmp_expr_1,
25800         take mode as argument.
25801         * ccmp.h (expand_ccmp_expr): Add mode as argument.
25802         * expr.c (expand_expr_real_1): Pass mode as argument.
25803
25804 2017-06-29  Segher Boessenkool  <segher@kernel.crashing.org>
25805
25806         * combine.c (combine_instructions): Print insns to dump_file, together
25807         with their costs.
25808
25809 2017-06-29  Jan Hubicka  <hubicka@ucw.cz>
25810
25811         * asan.c (asan_emit_stack_protection): Update.
25812         (create_cond_insert_point): Update.
25813         * auto-profile.c (afdo_propagate_circuit): Update.
25814         * basic-block.h (struct edge_def): Turn probability to
25815         profile_probability.
25816         (EDGE_FREQUENCY): Update.
25817         * bb-reorder.c (find_traces_1_round): Update.
25818         (better_edge_p): Update.
25819         (sanitize_hot_paths): Update.
25820         * cfg.c (unchecked_make_edge): Initialize probability to uninitialized.
25821         (make_single_succ_edge): Update.
25822         (check_bb_profile): Update.
25823         (dump_edge_info): Update.
25824         (update_bb_profile_for_threading): Update.
25825         * cfganal.c (connect_infinite_loops_to_exit): Initialize new edge
25826         probabilitycount to 0.
25827         * cfgbuild.c (compute_outgoing_frequencies): Update.
25828         * cfgcleanup.c (try_forward_edges): Update.
25829         (outgoing_edges_match): Update.
25830         (try_crossjump_to_edge): Update.
25831         * cfgexpand.c (expand_gimple_cond): Update make_single_succ_edge.
25832         (expand_gimple_tailcall): Update.
25833         (construct_init_block): Use make_single_succ_edge.
25834         (construct_exit_block): Use make_single_succ_edge.
25835         * cfghooks.c (verify_flow_info): Update.
25836         (redirect_edge_succ_nodup): Update.
25837         (split_edge): Update.
25838         (account_profile_record): Update.
25839         * cfgloopanal.c (single_likely_exit): Update.
25840         * cfgloopmanip.c (scale_loop_profile): Update.
25841         (set_zero_probability): Remove.
25842         (duplicate_loop_to_header_edge): Update.
25843         * cfgloopmanip.h (loop_version): Update prototype.
25844         * cfgrtl.c (try_redirect_by_replacing_jump): Update.
25845         (force_nonfallthru_and_redirect): Update.
25846         (update_br_prob_note): Update.
25847         (rtl_verify_edges): Update.
25848         (purge_dead_edges): Update.
25849         (rtl_lv_add_condition_to_bb): Update.
25850         * cgraph.c: (cgraph_edge::redirect_call_stmt_to_calle): Update.
25851         * cgraphunit.c (init_lowered_empty_function): Update.
25852         (cgraph_node::expand_thunk): Update.
25853         * cilk-common.c: Include profile-count.h
25854         * dojump.c (inv): Remove.
25855         (jumpifnot): Update.
25856         (jumpifnot_1): Update.
25857         (do_jump_1): Update.
25858         (do_jump): Update.
25859         (do_jump_by_parts_greater_rtx): Update.
25860         (do_compare_rtx_and_jump): Update.
25861         * dojump.h (jumpifnot, jumpifnot_1, jumpif_1, jumpif, do_jump,
25862         do_jump_1. do_compare_rtx_and_jump): Update prototype.
25863         * dwarf2cfi.c: Include profile-count.h
25864         * except.c (dw2_build_landing_pads): Use make_single_succ_edge.
25865         (sjlj_emit_dispatch_table): Likewise.
25866         * explow.c: Include profile-count.h
25867         * expmed.c (emit_store_flag_force): Update.
25868         (do_cmp_and_jump): Update.
25869         * expr.c (compare_by_pieces_d::generate): Update.
25870         (compare_by_pieces_d::finish_mode): Update.
25871         (emit_block_move_via_loop): Update.
25872         (store_expr_with_bounds): Update.
25873         (store_constructor): Update.
25874         (expand_expr_real_2): Update.
25875         (expand_expr_real_1): Update.
25876         * expr.h (try_casesi, try_tablejump): Update prototypes.
25877         * gimple-pretty-print.c (dump_probability): Update.
25878         (dump_profile): New.
25879         (dump_gimple_label): Update.
25880         (dump_gimple_bb_header): Update.
25881         * graph.c (draw_cfg_node_succ_edges): Update.
25882         * hsa-gen.c (convert_switch_statements): Update.
25883         * ifcvt.c (cheap_bb_rtx_cost_p): Update.
25884         (find_if_case_1): Update.
25885         (find_if_case_2): Update.
25886         * internal-fn.c (expand_arith_overflow_result_store): Update.
25887         (expand_addsub_overflow): Update.
25888         (expand_neg_overflow): Update.
25889         (expand_mul_overflow): Update.
25890         (expand_vector_ubsan_overflow): Update.
25891         * ipa-cp.c (good_cloning_opportunity_p): Update.
25892         * ipa-split.c (split_function): Use make_single_succ_edge.
25893         * ipa-utils.c (ipa_merge_profiles): Update.
25894         * loop-doloop.c (add_test): Update.
25895         (doloop_modify): Update.
25896         * loop-unroll.c (compare_and_jump_seq): Update.
25897         (unroll_loop_runtime_iterations): Update.
25898         * lra-constraints.c (lra_inheritance): Update.
25899         * lto-streamer-in.c (input_cfg): Update.
25900         * lto-streamer-out.c (output_cfg): Update.
25901         * mcf.c (adjust_cfg_counts): Update.
25902         * modulo-sched.c (sms_schedule): Update.
25903         * omp-expand.c (expand_omp_for_init_counts): Update.
25904         (extract_omp_for_update_vars): Update.
25905         (expand_omp_ordered_sink): Update.
25906         (expand_omp_for_ordered_loops): Update.
25907         (expand_omp_for_generic): Update.
25908         (expand_omp_for_static_nochunk): Update.
25909         (expand_omp_for_static_chunk): Update.
25910         (expand_cilk_for): Update.
25911         (expand_omp_simd): Update.
25912         (expand_omp_taskloop_for_outer): Update.
25913         (expand_omp_taskloop_for_inner): Update.
25914         * omp-simd-clone.c (simd_clone_adjust): Update.
25915         * optabs.c (expand_doubleword_shift): Update.
25916         (expand_abs): Update.
25917         (emit_cmp_and_jump_insn_1): Update.
25918         (expand_compare_and_swap_loop): Update.
25919         * optabs.h (emit_cmp_and_jump_insns): Update prototype.
25920         * predict.c (predictable_edge_p): Update.
25921         (edge_probability_reliable_p): Update.
25922         (set_even_probabilities): Update.
25923         (combine_predictions_for_insn): Update.
25924         (combine_predictions_for_bb): Update.
25925         (propagate_freq): Update.
25926         (estimate_bb_frequencies): Update.
25927         (force_edge_cold): Update.
25928         * profile-count.c (profile_count::dump): Add missing space into dump.
25929         (profile_count::debug): Add newline.
25930         (profile_count::differs_from_p): Explicitly convert to unsigned.
25931         (profile_count::stream_in): Update.
25932         (profile_probability::dump): New member function.
25933         (profile_probability::debug): New member function.
25934         (profile_probability::differs_from_p): New member function.
25935         (profile_probability::differs_lot_from_p): New member function.
25936         (profile_probability::stream_in): New member function.
25937         (profile_probability::stream_out): New member function.
25938         * profile-count.h (profile_count_quality): Rename to ...
25939         (profile_quality): ... this one.
25940         (profile_probability): New.
25941         (profile_count): Update.
25942         * profile.c (compute_branch_probabilities): Update.
25943         * recog.c (peep2_attempt): Update.
25944         * sched-ebb.c (schedule_ebbs): Update.
25945         * sched-rgn.c (find_single_block_region): Update.
25946         (compute_dom_prob_ps): Update.
25947         (schedule_region): Update.
25948         * sel-sched-ir.c (compute_succs_info): Update.
25949         * stmt.c (struct case_node): Update.
25950         (do_jump_if_equal): Update.
25951         (get_outgoing_edge_probs): Update.
25952         (conditional_probability): Update.
25953         (emit_case_dispatch_table): Update.
25954         (expand_case): Update.
25955         (expand_sjlj_dispatch_table): Update.
25956         (emit_case_nodes): Update.
25957         * targhooks.c: Update.
25958         * tracer.c (better_p): Update.
25959         (find_best_successor): Update.
25960         * trans-mem.c (expand_transaction): Update.
25961         * tree-call-cdce.c: Update.
25962         * tree-cfg.c (gimple_split_edge): Upate.
25963         (move_sese_region_to_fn): Upate.
25964         * tree-cfgcleanup.c (cleanup_control_expr_graph): Upate.
25965         * tree-eh.c (lower_resx): Upate.
25966         (cleanup_empty_eh_move_lp): Upate.
25967         * tree-if-conv.c (version_loop_for_if_conversion): Update.
25968         * tree-inline.c (copy_edges_for_bb): Update.
25969         (copy_cfg_body): Update.
25970         * tree-parloops.c (gen_parallel_loop): Update.
25971         * tree-profile.c (gimple_gen_ic_func_profiler): Update.
25972         (gimple_gen_time_profiler): Update.
25973         * tree-ssa-dce.c (remove_dead_stmt): Update.
25974         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
25975         * tree-ssa-loop-im.c (execute_sm_if_changed): Update.
25976         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update.
25977         (unloop_loops): Update.
25978         (try_peel_loop): Update.
25979         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
25980         * tree-ssa-loop-split.c (connect_loops): Update.
25981         (split_loop): Update.
25982         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Update.
25983         (hoist_guard): Update.
25984         * tree-ssa-phionlycprop.c (propagate_rhs_into_lhs): Update.
25985         * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update.
25986         (value_replacement): Update.
25987         * tree-ssa-reassoc.c (branch_fixup): Update.
25988         * tree-ssa-tail-merge.c (replace_block_by): Update.
25989         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges): Update.
25990         (create_edge_and_update_destination_phis): Update.
25991         (compute_path_counts): Update.
25992         (recompute_probabilities): Update.
25993         (update_joiner_offpath_counts): Update.
25994         (freqs_to_counts_path): Update.
25995         (duplicate_thread_path): Update.
25996         * tree-switch-conversion.c (hoist_edge_and_branch_if_true): Update.
25997         (struct switch_conv_info): Update.
25998         (gen_inbound_check): Update.
25999         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
26000         (vect_do_peeling): Update.
26001         (vect_loop_versioning): Update.
26002         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
26003         (optimize_mask_stores): Update.
26004         * ubsan.c (ubsan_expand_null_ifn): Update.
26005         * value-prof.c (gimple_divmod_fixed_value): Update.
26006         (gimple_divmod_fixed_value_transform): Update.
26007         (gimple_mod_pow2): Update.
26008         (gimple_mod_pow2_value_transform): Update.
26009         (gimple_mod_subtract): Update.
26010         (gimple_mod_subtract_transform): Update.
26011         (gimple_ic): Update.
26012         (gimple_stringop_fixed_value): Update.
26013         (gimple_stringops_transform): Update.
26014         * value-prof.h: Update.
26015
26016 2017-06-29  Carl Love  <cel@us.ibm.com>
26017
26018         * config/rs6000/rs6000-c.c: Add support for built-in functions
26019         vector signed int vec_signed (vector float);
26020         vector signed long long vec_signed (vector double);
26021         vector signed int vec_signed2 (vector double, vector double);
26022         vector signed int vec_signede (vector double);
26023         vector signed int vec_signedo (vector double);
26024         * config/rs6000/rs6000.c (rs6000_generate_vsigned2_code): Add
26025         instruction generator.
26026         * config/rs6000/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS,
26027         UNSPEC_VSX_VSIGNED2): Add UNSPECS.
26028         (vsx_xvcvspsxws, vsx_xvcvdpuxds_scale, vsx_xvcvspuxws, vsigned2_v2df):
26029         Add define_insn.
26030         (vsignedo_v2df, vsignede_v2df, vunsigned2_v2df, vunsignedo_v2df,
26031         vunsignede_v2df): Add define_expands.
26032         * config/rs6000/rs6000-builtin.def (VEC_SIGNED, VEC_UNSIGNED,
26033         VEC_SIGNED2, VEC_UNSIGNED2, VEC_SIGNEDE, VEC_UNSIGNEDE, VEC_SIGNEDO,
26034         VEC_UNSIGNEDO): Add definitions.
26035         * config/vsx.md (UNSPEC_VSX_XVCVSPSXWS, UNSPEC_VSX_XVCVSPSXDS,
26036         UNSPEC_VSX_VSIGNED2): Add UNSPECs.
26037         (vsx_xvcvspsxws, vsx_xvcvspuxws): Add define_insn.
26038         (vsigned2_v2df, vsigendo_v2df, vsignede_v2df,
26039         vunsigned2_v2df, vunsignedo_v2df, vunsignede_v2df): Add define_expands.
26040         * config/rs6000/altivec.h (vec_signed, vec_signed2,
26041         vec_signede and vec_signedo, vec_unsigned, vec_unsigned2,
26042         vec_unsignede, vec_unsignedo): Add builtin defines.
26043         * config/rs6000-protos.h (rs6000_generate_vsigned2_code): Add extern
26044         declaration.
26045         * doc/extend.texi: Update the built-in documentation file for the
26046         new built-in functions.
26047
26048 2017-06-29  Richard Biener  <rguenther@suse.de>
26049
26050         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Do not add
26051         reduction chains to LOOP_VINFO_REDUCTIONS.
26052         * tree-vect-slp.c (vect_analyze_slp): Continue looking for
26053         SLP reductions after processing reduction chains.
26054
26055 2017-06-29  Nathan Sidwell  <nathan@acm.org>
26056
26057         * builtins.c (fold_builtin_FUNCTION): Use
26058         lang_hooks.decl_printable_name.
26059
26060 2017-06-29  Peter Bergner  <bergner@vnet.ibm.com>
26061
26062         PR middle-end/81194
26063         * cfgexpand.c (expand_gimple_stmt_1): Handle switch statements
26064         with only one label.
26065         * stmt.c (expand_case): Assert NCASES is greater than one.
26066
26067 2017-06-29  Richard Biener  <rguenther@suse.de>
26068
26069         * tree-cfg.c (group_case_labels_stmt): Return whether we changed
26070         anything.
26071         (group_case_labels): Likewise.
26072         (find_taken_edge): Push sanity checking on val to workers...
26073         (find_taken_edge_cond_expr): ... here
26074         (find_taken_edge_switch_expr): ... and here, handle cases
26075         with just a default label.
26076         * tree-cfg.h (group_case_labels_stmt): Adjust prototype.
26077         (group_case_labels): Likewise.
26078         * tree-cfgcleanup.c (execute_cleanup_cfg_post_optimizing): When
26079         group_case_labels does anything cleanup the CFG again.
26080
26081 2017-06-29  Bin Cheng  <bin.cheng@arm.com>
26082
26083         PR tree-optimization/81196
26084         * tree-ssa-loop-niter.c (number_of_iterations_cond): Handle loop
26085         exit condition comparing two IVs.
26086
26087 2017-06-29  Richard Earnshaw  <rearnsha@arm.com>
26088
26089         * config/arm/parsecpu.awk (gen_comm_data): Add initializer for
26090         profile to the dummy entry at the end of the list of architectures.
26091         * config/arm/arm-cpu-cdata.h: Regenerated.
26092
26093 2017-06-29  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26094             Michael Collison <michael.collison@arm.com>
26095
26096         PR target/70119
26097         * config/aarch64/aarch64.md (*aarch64_<optab>_reg_<mode>3_mask1):
26098         New pattern.
26099         (*aarch64_reg_<mode>3_neg_mask2): New pattern.
26100         (*aarch64_reg_<mode>3_minus_mask): New pattern.
26101         (*aarch64_<optab>_reg_di3_mask2): New pattern.
26102         * config/aarch64/aarch64.c (aarch64_rtx_costs): Account for cost
26103         of shift when the shift amount is masked with constant equal to
26104         the size of the mode.
26105         * config/aarch64/predicates.md (subreg_lowpart_operator): New
26106         predicate.
26107
26108 2017-06-29  Martin Liska  <mliska@suse.cz>
26109
26110         * config/i386/i386.opt: Change range from [1,5] to [0,5].
26111
26112 2017-06-29  Yury Gribov  <tetra2005@gmail.com>
26113
26114         PR bootstrap/80565
26115         * ipa-cp.c (allocate_and_init_ipcp_value): Add initialization
26116         code.
26117         * ipa-inline.h
26118         (edge_growth_cache_entry::edge_growth_cache_entry): New
26119         function.
26120         (reset_edge_growth_cache): Update to use constructor.
26121
26122 2017-06-28  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
26123
26124         * config/aarch64/aarch64.h (AARCH64_EXPAND_ALIGNMENT): New.
26125         (DATA_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT.
26126         (LOCAL_ALIGNMENT): Update to use AARCH64_EXPAND_ALIGNMENT.
26127
26128 2017-06-28  Sebastian Peryt  <sebastian.peryt@intel.com>
26129
26130         * config/i386/avx512vlintrin.h (_mm256_permutexvar_epi64)
26131         (_mm256_permutexvar_epi32, _mm256_permutex_epi64): New intrinsics.
26132
26133 2017-06-28  Szabolcs Nagy  <szabolcs.nagy@arm.com>
26134
26135         * config.gcc (*-linux-musl*): Add t-musl tmake_file.
26136         (*-linux-uclibc*): Add t-uclibc tmake_file.
26137         * config/t-musl: New.
26138         * config/t-uclibc: New.
26139
26140 2017-06-28  Richard Earnshaw  <rearnsha@arm.com>
26141
26142         * config/arm/parsecpu.awk (profile): Parse new keyword in an arch
26143         context.
26144         (gen_comm_data): Emit architectural setting of arch_prof.
26145         * config/arm/arm-cpus.in (armv6-m, armv6s-m, armv7-a, armv7ve): Set the
26146         profile.
26147         (armv7-r, armv7-m, armv7e-m, armv8-a, armv8.1-a, armv8.2-a): Likewise.
26148         (armv8-m.base, armv8-m.main): Likewise.
26149         * arm-protos.h (arm_build_target): Add profile field.
26150         (arch_option): Likewise.
26151         * config/arm/arm.c (arm_configure_build_target): Copy the profile to
26152         the active target.
26153         * config/arm/arm.h (TARGET_ARM_ARCH_PROFILE): Use
26154         arm_active_target.profile.
26155
26156 2017-06-28  Richard Biener  <rguenther@suse.de>
26157
26158         PR middle-end/81227
26159         * fold-const.c (negate_expr_p): Use TYPE_UNSIGNED, not
26160         TYPE_OVERFLOW_WRAPS.
26161         * match.pd (negate_expr_p): Likewise.
26162         * tree-ssa-reassoc.c (optimize_range_tests_diff): Use
26163         fold_build2, not fold_binary.
26164
26165 2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>
26166
26167         * config/aarch64/aarch64 (aarch64_expand_mov_immediate):
26168         Convert memory address to Pmode.
26169         (aarch64_print_operand): Assert MEM operands are always Pmode.
26170
26171 2017-06-28  Wilco Dijkstra  <wdijkstr@arm.com>
26172
26173         PR target/79665
26174         * config/arm/aarch-common.c (arm_no_early_alu_shift_dep):
26175         Remove redundant if.
26176         (aarch_forward_to_shift_is_not_shifted_reg): Remove.
26177         * config/arm/aarch-common-protos.h
26178         (aarch_forward_to_shift_is_not_shifted_re): Remove.
26179         * config/arm/cortex-a53.md: Use arm_no_early_alu_shift_dep in bypass.
26180
26181 2017-06-28  Michael Meissner  <meissner@linux.vnet.ibm.com>
26182
26183         PR ipa/81238
26184         * multiple_target.c (create_dispatcher_calls): Set the default
26185         clone to be static, not public.
26186
26187 2017-06-28  Richard Biener  <rguenther@suse.de>
26188
26189         * tree-vect-loop.c (vectorizable_reduction): Move special
26190         cond reduction IV var creation ...
26191         (vect_create_epilog_for_reduction): ... here.  Remove induction_index
26192         parameter.  Use STMT_VINFO_VECTYPE.
26193         * tree-vect-slp.c (vect_get_constant_vectors): Properly reset
26194         constant_p.
26195
26196 2017-06-28  Martin Liska  <mliska@suse.cz>
26197
26198         PR ipa/81128
26199         * ipa-visibility.c (non_local_p): Handle visibility.
26200
26201 2017-06-28  Martin Liska  <mliska@suse.cz>
26202
26203         PR driver/79659
26204         * common.opt: Add IntegerRange to various options.
26205         * opt-functions.awk (integer_range_info): New function.
26206         * optc-gen.awk: Add integer_range_info to cl_options struct.
26207         * opts-common.c (decode_cmdline_option): Handle
26208         CL_ERR_INT_RANGE_ARG.
26209         (cmdline_handle_error): Likewise.
26210         * opts.c (print_filtered_help): Show valid interval in
26211         when --help is provided.
26212         * opts.h (struct cl_option): Add range_min and range_max fields.
26213         * config/i386/i386.opt: Add IntegerRange for -mbranch-cost.
26214
26215 2017-06-28  Marc Glisse  <marc.glisse@inria.fr>
26216
26217         * match.pd ((X & ~Y) | (~X & Y)): Generalize to + and ^.
26218         (x * C EQ/NE y * C): New transformation.
26219
26220 2017-06-28  Christophe Lyon  <christophe.lyon@linaro.org>
26221
26222         * genmultilib (combination_space): Accept '+' in option names.
26223
26224 2017-06-28  Martin Liska  <mliska@suse.cz>
26225
26226         PR sanitizer/81224
26227         * asan.c (instrument_derefs): Bail out inner references
26228         that are hard register variables.
26229
26230 2017-06-28  Jakub Jelinek  <jakub@redhat.com>
26231
26232         PR target/81175
26233         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Use def_builtin
26234         rather than def_builtin_pure for __builtin_ia32_gatherpf*.
26235
26236 2017-06-28  Richard Biener  <rguenther@suse.de>
26237
26238         * tree-vectorizer.h (vect_get_vec_defs): Remove.
26239         (vect_get_slp_defs): Adjust.
26240         * tree-vect-loop.c (get_initial_defs_for_reduction): Split
26241         out from ...
26242         * tree-vect-slp.c (vect_get_constant_vectors): ... here and
26243         simplify.
26244         * tree-vect-loop.c (vect_create_epilog_for_reduction): Use
26245         get_initial_defs_for_reduction instead of vect_get_vec_defs.
26246         (vectorizable_reduction): Adjust.
26247         * tree-vect-slp.c (vect_get_constant_vectors): Remove reduction
26248         handling.
26249         (vect_get_slp_defs): Likewise.
26250         * tree-vect-stmts.c (vect_get_vec_defs): Make static and adjust.
26251         (vectorizable_bswap): Adjust.
26252         (vectorizable_call): Likewise.
26253         (vectorizable_conversion): Likewise.
26254         (vectorizable_assignment): Likewise.
26255         (vectorizable_shift): Likewise.
26256         (vectorizable_operation): Likewise.
26257         (vectorizable_store): Likewise.
26258         (vectorizable_condition): Likewise.
26259         (vectorizable_comparison): Likewise.
26260
26261 2017-06-28  Michael Collison  <michael.collison@arm.com>
26262
26263         PR target/68535
26264         * config/arm/arm.c (gen_ldm_seq): Remove last unnecessary
26265         set of base_reg
26266         (arm_gen_movmemqi): Removed unused variable 'i'.
26267         Convert 'for' loop into 'while' loop.
26268         (arm_expand_prologue): Remove last unnecessary set of insn.
26269         (thumb_pop): Remove unused variable 'pushed_words'.
26270         (thumb_exit): Remove last unnecessary set of regs_to_pop.
26271
26272 2017-06-28  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
26273
26274         * config/s390/predicates.md: Use s390_rel_address_ok_p.
26275         * config/s390/s390-protos.h: Add prototype of
26276         s390_rel_address_ok_p.
26277         * config/s390/s390.c (s390_got_symbol): New function.
26278         (s390_rel_address_ok_p): New function.
26279         (legitimize_pic_address): Use s390_rel_address_ok_p.
26280         (s390_load_got): Use s390_got_symbol.
26281         (s390_option_override): Issue error if
26282         -mno-pic-data-is-text-relative is used without -fpic/-fPIC.
26283         * config/s390/s390.h (TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE):
26284         New macro.
26285         * config/s390/s390.opt: New option mpic-data-is-text-relative.
26286
26287 2017-06-27  Andrew Pinski  <apinski@cavium.com>
26288
26289         * match.pd (X >/>=/</<= 0 ? 1.0 : -1.0): New patterns.
26290         (X * copysign (1.0, X)): New pattern.
26291         (X * copysign (1.0, -X)): New pattern.
26292         (copysign (-1.0, CST)): New pattern.
26293
26294 2017-06-27  Joseph Myers  <joseph@codesourcery.com>
26295
26296         * genmultilib (combination_space): Remove variable.
26297         Validate reuse rules against regular expression for any sequence
26298         of multilib options in any order.
26299
26300 2017-06-27  Michael Collison  <michael.collison@arm.com>
26301
26302         * config/aarch64/aarch64-simd.md (aarch64_combine<mode>): Directly
26303         call aarch64_split_simd_combine.
26304         * (aarch64_combine_internal<mode>): Delete pattern.
26305         * config/aarch64/aarch64.c (aarch64_split_simd_combine):
26306         Allow register and subreg operands.
26307
26308 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
26309
26310         * config/i386/vxworks.h (ASM_SPEC): Remove definition. No target
26311         specific need, just fallback on defaults.
26312         (ASM_OUTPUT_ALIGNED_BSS): Add #undef before #define.
26313
26314 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
26315             Olivier Hainque  <hainque@adacore.com>
26316
26317         * config/i386/vxworks.h (DBX_REGISTER_NUMBER): Pick distinct
26318         map for 64bits.
26319         (TARGET_OS_CPP_BUILTINS): builtin_define CPU to X86_64 for 64bit
26320         targets. Pick a default if no particular attempt applied.
26321         (STACK_CHECK_PROTECT): Double for 64bit targets, which have
26322         larger contexts.
26323
26324 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
26325
26326         * config.gcc (i*86-wrs-vxworks7): Handle new acceptable triplet.
26327         (x86_64-wrs-vxworks7): Likewise.
26328
26329 2017-06-27  Marek Polacek  <polacek@redhat.com>
26330
26331         PR sanitizer/81223
26332         * ubsan.c (instrument_null): Check get_base_address's result for null.
26333
26334 2017-06-27  Marc Glisse  <marc.glisse@inria.fr>
26335
26336         * match.pd ((A+-B)+(C-A), (A+B)-(A-C)): New transformations.
26337
26338 2017-06-27  Marc Glisse  <marc.glisse@inria.fr>
26339
26340         * builtin-types.def (BT_FENV_T_PTR, BT_CONST_FENV_T_PTR,
26341         BT_FEXCEPT_T_PTR, BT_CONST_FEXCEPT_T_PTR): New primitive types.
26342         (BT_FN_INT_FENV_T_PTR, BT_FN_INT_CONST_FENV_T_PTR,
26343         BT_FN_INT_FEXCEPT_T_PTR_INT, BT_FN_INT_CONST_FEXCEPT_T_PTR_INT):
26344         New function types.
26345         * builtins.def (BUILT_IN_FECLEAREXCEPT, BUILT_IN_FEGETENV,
26346         BUILT_IN_FEGETEXCEPTFLAG, BUILT_IN_FEGETROUND,
26347         BUILT_IN_FEHOLDEXCEPT, BUILT_IN_FERAISEEXCEPT,
26348         BUILT_IN_FESETENV, BUILT_IN_FESETEXCEPTFLAG,
26349         BUILT_IN_FESETROUND, BUILT_IN_FETESTEXCEPT,
26350         BUILT_IN_FEUPDATEENV): New builtins.
26351         * tree-core.h (TI_FENV_T_PTR_TYPE, TI_CONST_FENV_T_PTR_TYPE,
26352         TI_FEXCEPT_T_PTR_TYPE, TI_CONST_FEXCEPT_T_PTR_TYPE): New entries.
26353         * tree.h (fenv_t_ptr_type_node, const_fenv_t_ptr_type_node,
26354         fexcept_t_ptr_type_node, const_fexcept_t_ptr_type_node): New
26355         macros.
26356         (builtin_structptr_types): Adjust size.
26357         * tree.c (builtin_structptr_types): Add four entries.
26358
26359 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
26360             Olivier Hainque  <hainque@adacore.com>
26361
26362         * config/vxworks.h (VXWORKS_LIB_SPEC): Incorporate ...
26363         (TLS_SYM): New local macro, forcing reference to __tls__ on
26364         link command lines for VxWorks 7 RTPs, triggering initialization
26365         of tlsLib.
26366         (VXWORKS_HAVE_TLS): New macro. State whether the target VxWorks
26367         OS features TLS support, true for RTPs on VxWorks 7.
26368         * config/vxworks.c (vxworks_override_options): Setup emutls
26369         accordingly.
26370
26371 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
26372
26373         * predict.c (test_prediction_value_range): Use -1U instead of -1
26374         to avoid narrowing conversion warning.
26375         * dumpfile.c (dump_options): Wrap all value into dump_flags_t cast
26376         to avoid narrowing conversion warning.
26377         * opt-functions.awk (var_ref): Return (unsigned short) -1 instead of
26378         -1.
26379         * optc-gen.awk (END): Expect (unsigned short) -1 instead of -1.
26380
26381 2017-06-27  Jerome Lambourg  <lambourg@adacore.com>
26382
26383         * config/vxworks.h (VXWORKS_LIBS_RTP): Alternative definition for
26384         64bit configurations.
26385         (PTR_DIFF_TYPE): Alternative definition for TARGET_LP64.
26386         (SIZE_TYPE): Likewise.
26387         * config/vxworks.c (vxworks_emutls_var_fields): Use
26388         long_unsigned_type_node instead of unsigned_type_node as the offset
26389         field type, which is "pointer" mode in emutls.c.
26390
26391 2017-06-27  Jakub Jelinek  <jakub@redhat.com>
26392
26393         PR sanitizer/81209
26394         * ubsan.c (ubsan_encode_value): Initialize DECL_CONTEXT on var.
26395
26396         PR middle-end/81207
26397         * gimple-fold.c (replace_call_with_call_and_fold): Handle
26398         gimple_vuse copying separately from gimple_vdef copying.
26399
26400 2017-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
26401
26402         * value-prof.c (free_hist): Remove call to memset and the enclosing if
26403         condition.
26404
26405 2017-06-26  Jerome Lambourg  <lambourg@adacore.com>
26406             Olivier Hainque  <hainque@adacore.com>
26407
26408         * config.gcc (*-*-vxworks*): Add TARGET_VXWORKS7=1 to tm_defines
26409         for all vxworks7 targets.
26410         * config/vxworks.h (TARGET_VXWORKS7): If not defined, define to 0.
26411         (VXWORKS_ADDITIONAL_CPP_SPEC): Alternative definition for VXWORKS7.
26412         (VXWORKS_LIBS_RTP, VXWORKS_LIBS_RTP_DIR): New macros, allowing
26413         variations for VX6/VX7 and 32/64bits later on in ...
26414         (VXWORKS_LIB_SPEC): Leverage new macros.
26415         (VXWORKS_OS_CPP_BUILTINS): Define _VSB_CONFIG_FILE for VXWORKS7,
26416         as well as _ALLOW_KEYWORD_MACROS when "inline" is not a keyword.
26417
26418 2017-06-26  Jerome Lambourg  <lambourg@adacore.com>
26419
26420         * config/vxworks.h (VXWORKS_OS_CPP_BUILTINS): builtin_define
26421         _VX_TOOL_FAMILY and _VX_TOOL to gnu.
26422
26423 2017-06-26  Carl Love  <cel@us.ibm.com>
26424
26425         * config/rs6000/rs6000-c.c: Add support for built-in functions
26426         vector bool char vec_reve (vector bool char);
26427         vector signed char vec_reve (vector signed char);
26428         vector unsigned char vec_reve (vector unsigned char);
26429         vector bool int vec_reve (vector bool int);
26430         vector signed int vec_reve (vector signed int);
26431         vector unsigned int vec_reve (vector unsigned int);
26432         vector bool long long vec_reve (vector bool long long);
26433         vector signed long long vec_reve (vector signed long long);
26434         vector unsigned long long vec_reve (vector unsigned long long);
26435         vector bool short vec_reve (vector bool short);
26436         vector signed short vec_reve (vector signed short);
26437         vector double vec_reve (vector double);
26438         vector float vec_reve (vector float);
26439         * config/rs6000/rs6000-builtin.def (VREVE_V2DI, VREVE_V4SI,
26440         VREVE_V8HI, VREVE_V16QI, VREVE_V2DF, VREVE_V4SF, VREVE): New builtin.
26441         * config/rs6000/altivec.md (UNSPEC_VREVEV): New UNSPEC.
26442         (altivec_vreve): New pattern.
26443         * config/rs6000/altivec.h (vec_reve): New define.
26444         * doc/extend.texi (vec_rev): Update the built-in documentation file
26445         for the new built-in functions.
26446
26447 2016-06-26  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
26448
26449         PR tree-optimization/71815
26450         * gimple-ssa-strength-reduction.c (uses_consumed_by_stmt): New
26451         function.
26452         (find_basis_for_candidate): Call uses_consumed_by_stmt rather than
26453         has_single_use.
26454         (slsr_process_phi): Likewise.
26455         (replace_uncond_cands_and_profitable_phis): Don't replace a
26456         multiply candidate with a stride of 1 (copy or cast).
26457         (phi_incr_cost): Call uses_consumed_by_stmt rather than
26458         has_single_use.
26459         (lowest_cost_path): Likewise.
26460         (total_savings): Likewise.
26461
26462 2017-06-26  Richard Biener  <rguenther@suse.de>
26463
26464         PR target/81175
26465         * config/i386/i386.c (ix86_init_mmx_sse_builtins):
26466         Use def_builtin_pure for all gather builtins.
26467
26468 2017-06-26  Richard Biener  <rguenther@suse.de>
26469
26470         PR tree-optimization/81203
26471         * tree-tailcall.c (find_tail_calls): Do not move stmts into
26472         non-dominating BBs.
26473
26474 2017-06-26  Marek Polacek  <polacek@redhat.com>
26475
26476         PR c/80116
26477         * doc/invoke.texi: Document -Wmultistatement-macros.
26478
26479 2017-06-26  Christophe Lyon  <christophe.lyon@linaro.org>
26480
26481         * doc/sourcebuild.texi (ARM-specific attributes): Document new
26482         arm_neon_ok_no_float_abi effective target.
26483
26484 2017-06-26  Richard Biener  <rguenther@suse.de>
26485
26486         PR tree-optimization/80928
26487         * cfghooks.c (duplicate_block): Do not copy BB_DUPLICATED flag.
26488         (copy_bbs): Set BB_DUPLICATED flag early.
26489         (execute_on_growing_pred): Do not execute for BB_DUPLICATED
26490         marked blocks.
26491         (execute_on_shrinking_pred): Likewise.
26492         * tree-ssa.c (ssa_redirect_edge): Do not look for PHI args in
26493         BB_DUPLICATED blocks.
26494         * tree-ssa-phionlycoprop.c (eliminate_degenerate_phis_1): Properly
26495         iterate over all PHIs considering removal of *gsi.
26496
26497 2017-06-23  Jim Wilson  <jim.wilson@linaro.org>
26498
26499         * doc/invoke.texi (AArch64 Options, -mtune): Re-add falkor and
26500         qdf24xx.
26501
26502 2017-06-23  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
26503
26504         * config/rs6000/rs6000-string.c: (expand_block_clear,
26505         do_load_for_compare, select_block_compare_mode,
26506         compute_current_alignment, expand_block_compare,
26507         expand_strncmp_align_check, expand_strn_compare,
26508         expand_block_move, rs6000_output_load_multiple)
26509         Move functions related to string/block move/compare
26510         to a separate file.
26511         * config/rs6000/rs6000.c: Move above functions to rs6000-string.c.
26512         * config/rs6000/rs6000-protos.h (rs6000_emit_dot_insn): Add prototype
26513         for this function which is now used in two files.
26514         * config/rs6000/t-rs6000: Add rule to compile rs6000-string.o.
26515         * config.gcc: Add rs6000-string.o to extra_objs for
26516         targets powerpc*-*-* and rs6000*-*-*.
26517
26518 2017-06-23  Michael Meissner  <meissner@linux.vnet.ibm.com>
26519
26520         PR target/80510
26521         * config/rs6000/rs6000.md (ALTIVEC_DFORM): Do not allow DImode in
26522         32-bit, since indexed is not valid for DImode.
26523         (mov<mode>_hardfloat32): Reorder ISA 2.07 load/stores before ISA
26524         3.0 d-form load/stores to be the same as mov<mode>_hardfloat64.
26525         (define_peephole2 for Altivec d-form load): Add 32-bit support.
26526         (define_peephole2 for Altivec d-form store): Likewise.
26527
26528         PR ipa/81185
26529         * multiple_target.c (create_dispatcher_calls): Only create the
26530         dispatcher call if the function is the default clone of a
26531         versioned function.
26532
26533 2017-06-23  Segher Boessenkool  <segher@kernel.crashing.org>
26534
26535         PR middle-end/80902
26536         * builtins.c (expand_builtin_atomic_fetch_op): If emitting code after
26537         a call, force the call to not be a tail call.
26538
26539 2017-06-23  Jeff Law  <law@redhat.com>
26540
26541         * doc/contrib.texi: Add entry for Steven Pemberton's work on
26542         enquire.
26543
26544 2017-06-23  Will Schmidt  <will_schmidt@vnet.ibm.com>
26545
26546         * config/rs6000/rs6000.c: Add include of ssa-propagate.h for
26547         update_call_from_tree().  (rs6000_gimple_fold_builtin): Add
26548         handling for early expansion of vector shifts (sl,sr,sra,rl).
26549         (builtin_function_type): Add vector shift right instructions
26550         to the unsigned argument list.
26551
26552 2017-06-23  Bernd Edlinger  <bernd.edlinger@hotmail.de>
26553
26554         rtl-optimizatoin/79286
26555         * ira.c (update_equiv_regs): Revert to using may_trap_or_fault_p again.
26556         * rtlanal.c (rtx_addr_can_trap_p_1): SYMBOL_REF_FUNCTION_P can never
26557         trap.  PIC register plus a const unspec without offset can never trap.
26558
26559 2017-06-23  Marc Glisse  <marc.glisse@inria.fr>
26560
26561         * tree.h (builtin_structptr_type): New type.
26562         (builtin_structptr_types): Declare new array.
26563         * tree.c (builtin_structptr_types): New array.
26564         (free_lang_data, build_common_tree_nodes): Use it.
26565
26566 2017-06-23  Jonathan Wakely  <jwakely@redhat.com>
26567
26568         PR c++/81187
26569         * doc/invoke.texi (-Wnoexcept-type): Fix name of option, from
26570         -Wnoexcept.
26571
26572 2017-06-22  Matt Turner  <mattst88@gmail.com>
26573
26574         * config/i386/driver-i386.c (host_detect_local_cpu): Add Kaby
26575         Lake models to skylake case.  Assume skylake for unknown
26576         models with clflushopt.
26577
26578 2017-06-22  Jeff Law  <law@redhat.com>
26579
26580         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Handle
26581         frame sizes that do not satisfy aarch64_uimm12_shift.
26582
26583 2017-06-22  Jan Hubicka <hubicka@ucw.cz>
26584
26585         * profile-count.h (apply_probability,
26586         apply_scale, probability_in): Fix checks for zero.
26587
26588 2017-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
26589
26590         * incpath.c (add_sysroot_to_chain): Allow for $SYSROOT prefix.
26591         * doc/cppdiropts.texi (-I @var{dir}): Document it.
26592
26593 2016-06-22  Richard Biener  <rguenther@suse.de>
26594
26595         * tree-vect-loop.c (vect_model_reduction_cost): Handle
26596         COND_REDUCTION and INTEGER_INDUC_COND_REDUCTION without
26597         REDUC_MAX_EXPR support.
26598         (vectorizable_reduction): Likewise.
26599         (vect_create_epilog_for_reduction): Likewise.
26600
26601 2017-06-22  James Greenhalgh  <james.greenhalgh@arm.com>
26602
26603         * match.pd (A / (1 << B) -> A >> B): New.
26604         * generic-match-head.c: Include optabs-tree.h.
26605         * gimple-match-head.c: Likewise.
26606         * optabs-tree.h (target_supports_op_p): New.
26607         * optabs-tree.c (target_supports_op_p): New.
26608
26609 2017-06-22  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
26610
26611         * configure.ac (gcc_cv_ld_static_dynamic): Also check stderr for
26612         $gcc_cv_ld --help output.
26613         (gcc_cv_ld_demangle): Likewise.
26614         (gcc_cv_ld_eh_frame_hdr): Likewise.
26615         (gcc_cv_ld_pie): Likewise.
26616         (gcc_cv_ld_as_needed): Likewise.  Prefer native forms unless $gnu_ld.
26617         (gcc_cv_ld_buildid): Likewise.
26618         (gcc_cv_ld_sysroot): Likewise.
26619         (ld_bndplt_support): Likewise.
26620         (ld_pushpopstate_support): Likewise.
26621         * configure: Regenerate.
26622         * config/sol2.h [!USE_GLD] (SYSROOT_SPEC): Define.
26623
26624 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
26625
26626         PR target/81151
26627         * config/i386/sse.md (round<mode>2): Renumber match_dup and
26628         operands indexes to avoid gap between operands and match_dups.
26629
26630 2017-06-21  Andrew Pinski  <apinski@cavium.com>
26631
26632         * config/aarch64/aarch64-cost-tables.h (thunderx_extra_costs):
26633         Increment Arith_shift and Arith_shift_reg by 1.
26634         * config/aarch64/aarch64-tuning-flags.def (cheap_shift_extend):
26635         New tuning flag.
26636         * config/aarch64/aarch64.c (thunderx_tunings): Enable
26637         AARCH64_EXTRA_TUNE_CHEAP_SHIFT_EXTEND.
26638         (aarch64_strip_extend): Add new argument and test for it.
26639         (aarch64_cheap_mult_shift_p): New function.
26640         (aarch64_rtx_mult_cost): Call aarch64_cheap_mult_shift_p and don't
26641         add a cost if it is true.
26642         Update calls to aarch64_strip_extend.
26643         (aarch64_rtx_costs): Update calls to aarch64_strip_extend.
26644
26645 2017-06-21  Andrew Pinski  <apinski@cavium.com>
26646
26647         * config/aarch64/aarch64-cores.def (thunderxt88p1): Use thunderxt88
26648         tunings.
26649         (thunderxt88): Likewise.
26650         * config/aarch64/aarch64.c (thunderxt88_prefetch_tune): New variable.
26651         (thunderx_prefetch_tune): New variable.
26652         (thunderx2t99_prefetch_tune): Update for the correct values.
26653         (thunderxt88_tunings): New variable.
26654         (thunderx_tunings): Use thunderx_prefetch_tune instead of
26655         generic_prefetch_tune.
26656         (thunderx2t99_tunings): Use AUTOPREFETCHER_WEAK.
26657
26658 2017-06-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
26659
26660         * config/aarch64/atomics.md (aarch64_compare_and_swap<mode>_lse,
26661         SHORT): Relax operand 3 to aarch64_reg_or_zero and constraint to Z.
26662         (aarch64_compare_and_swap<mode>_lse, GPI): Likewise.
26663         (aarch64_atomic_cas<mode>, SHORT): Likewise for operand 2.
26664         (aarch64_atomic_cas<mode>, GPI): Likewise.
26665
26666 2017-06-21  Martin Liska  <mliska@suse.cz>
26667
26668         * gimplify.c (gimplify_label_expr): Insert GIMPLE_PREDICT
26669         statements on cold and hot labels.
26670         * predict.c (tree_estimate_probability_bb): Remove the
26671         prediction from this place.
26672
26673 2017-06-21  Martin Liska  <mliska@suse.cz>
26674
26675         PR tree-optimization/79489
26676         * gimplify.c (maybe_add_early_return_predict_stmt): New
26677         function.
26678         (gimplify_return_expr): Call the function.
26679         * predict.c (tree_estimate_probability_bb): Remove handling
26680         of early return.
26681         * predict.def: Update comment about early return predictor.
26682         * gimple-predict.h (is_gimple_predict): New function.
26683         * predict.def: Change default value of early return to 66.
26684         * tree-tailcall.c (find_tail_calls): Skip GIMPLE_PREDICT
26685         statements.
26686         * passes.def: Put pass_strip_predict_hints to the beginning of
26687         IPA passes.
26688
26689 2017-06-21  Pierre-Marie de Rodat  <derodat@adacore.com>
26690
26691         * dwarf2out.c (gen_decl_die): Remove the guard to skip file-scope
26692         FUNCTION_DECL declarations.
26693         (dwarf2out_early_global_decl): Remove the guard to skip FUNCTION_DECL
26694         declarations.
26695         (dwaf2out_decl): Likewise.
26696         * godump.c (go_early_global_decl): Skip call to the real debug hook
26697         for FUNCTION_DECL declarations.
26698         * passes.c (rest_of_decl_compilation): Skip call to the
26699         early_global_decl debug hook for FUNCTION_DECL declarations, unless
26700         -fdump-go-spec is passed.
26701
26702 2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
26703
26704         * config/i386/i386.c (struct builtin_isa): New field pure_p.
26705         Reorder for compactness.
26706         (def_builtin, def_builtin2, ix86_add_new_builtins): Handle pure_p.
26707         (def_builtin_pure, def_builtin_pure2): New functions.
26708         (ix86_init_mmx_sse_builtins) [__builtin_ia32_stmxcsr]: Mark as pure.
26709
26710 2017-06-21  Marc Glisse  <marc.glisse@inria.fr>
26711
26712         * match.pd (nop_convert): New predicate.
26713         ((A +- CST1) +- CST2): Allow some NOP conversions.
26714
26715 2017-06-21  Jakub Jelinek  <jakub@redhat.com>
26716
26717         PR c++/81130
26718         * gimplify.c (omp_add_variable): Don't force GOVD_SEEN for types
26719         with ctors/dtors if GOVD_SHARED is set.
26720
26721 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
26722
26723         * config/aarch64/aarch64.md (movti_aarch64):
26724         Emit mov rather than orr.
26725         (movtf_aarch64): Likewise.
26726         * config/aarch64/aarch64-simd.md (aarch64_simd_mov):
26727         Emit mov rather than orr.
26728
26729 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
26730
26731         * config/aarch64/aarch64-simd.md (aarch64_simd_dup):
26732         Swap alternatives, make integer dup more expensive.
26733
26734 2017-06-21  Wilco Dijkstra  <wdijkstr@arm.com>
26735
26736         * config/aarch64/aarch64.c (aarch64_legitimate_constant_p):
26737         Return true for non-tls symbols.
26738
26739 2017-06-21  James Greenhalgh  <james.greenhalgh@arm.com>
26740
26741         * config/aarch64/aarch64-cores.def (cortex-a55): New.
26742         (cortex-a75): Likewise.
26743         (cortex-a75.cortex-a55): Likewise.
26744         * config/aarch64/aarch64-tune.md: Regenerate.
26745         * doc/invoke.texi (-mtune): Document new values for -mtune.
26746
26747 2017-06-21  Tom de Vries  <tom@codesourcery.com>
26748
26749         * doc/sourcebuild.texi (Add Options, Features for dg-add-options): Add
26750         stack_size feature.
26751         (Effective-Target Keywords, Other attributes): Suggest using
26752         dg-add-options stack_size feature to get stack limit in stack_size
26753         effective target documentation.
26754
26755 2017-06-21  Julian Brown  <julian@codesourcery.com>
26756             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
26757
26758         * config/aarch64/aarch64-simd.md (aarch64_crypto_pmulldi)
26759         (aarch64_crypto_pmullv2di): Change type attribute to crypto_pmull.
26760         * config/aarch64/thunderx2t99.md (thunderx2t99_pmull): New
26761         reservation.
26762         * config/arm/cortex-a53.md (cortex_a53_advsimd_type): Add crypto_pmull to
26763         attribute type list for neon_multiply.
26764         * config/arm/cortex-a57.md (cortex_a57_neon_type): Add crypto_pmull to
26765         attribute type list for neon_multiply.
26766         * config/arm/crypto.md (crypto_vmullp64): Change type to crypto_pmull.
26767         * config/arm/exynos-m1.md (exynos_m1_neon_type): Add crypto_pmull to
26768         attribute type list for neon_multiply.
26769         * config/arm/types.md (crypto_pmull): Add.
26770         * config/arm/xgene1.md (xgene1_neon_pmull): Add crypto_pmull to
26771         attribute type list.
26772
26773 2017-06-20  Andreas Tobler  <andreast@gcc.gnu.org>
26774
26775         * config.gcc (armv6*-*-freebsd*): Change the target_cpu_cname to
26776         arm1176jzf-s.
26777
26778 2017-06-20  Jakub Jelinek  <jakub@redhat.com>
26779
26780         * ira-costs.c (find_costs_and_classes): Initialize cost_classes later
26781         to make sure not to dereference a NULL cost_classes_ptr pointer.
26782
26783 2017-06-20  Carl Love  <cel@us.ibm.com>
26784
26785         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
26786         ALTIVEC_BUILTIN_VMULESW, ALTIVEC_BUILTIN_VMULEUW,
26787         ALTIVEC_BUILTIN_VMULOSW, ALTIVEC_BUILTIN_VMULOUW entries.
26788         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin,
26789         builtin_function_type): Add ALTIVEC_BUILTIN_* case statements.
26790         * config/rs6000/altivec.md (MVULEUW, VMULESW, VMULOUW,
26791         VMULOSW): New enum "unspec" values.
26792         (vec_widen_umult_even_v4si, vec_widen_smult_even_v4si,
26793         vec_widen_umult_odd_v4si, vec_widen_smult_odd_v4si,
26794         altivec_vmuleuw, altivec_vmulesw, altivec_vmulouw,
26795         altivec_vmulosw): New patterns.
26796         * config/rs6000/rs6000-builtin.def (VMLEUW, VMULESW, VMULOUW,
26797         VMULOSW): Add definitions.
26798
26799 2017-06-20  Julia Koval  <julia.koval@intel.com>
26800
26801         * config/i386/i386.c: Fix rounding expand for new pattern.
26802         * config/i386/subst.md: Fix pattern (parallel -> unspec).
26803
26804 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
26805
26806         * config/aarch64/aarch64-option-extensions.def (rcpc): New.
26807         * config/aarch64/aarch64.h (AARCH64_FL_RCPC): New.
26808
26809 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
26810
26811         * config/aarch64/aarch64-option-extensions.def (fp16): Fix expected
26812         feature string.
26813
26814 2017-06-20  James Greenhalgh  <james.greenhalgh@arm.com>
26815
26816         * config/aarch64/aarch64-cores.def: Rearrange to sort by
26817         architecture, then by implementer ID.
26818         * config/aarch64/aarch64-tune.md: Regenerate.
26819
26820 2017-06-20  Richard Biener  <rguenther@suse.de>
26821
26822         PR middle-end/81097
26823         * fold-const.c (split_tree): Fold to type before negating.
26824
26825 2017-06-20  David Malcolm  <dmalcolm@redhat.com>
26826
26827         * diagnostic-show-locus.c
26828         (selftest::test_fixit_deletion_affecting_newline): New function.
26829         (selftest::diagnostic_show_locus_c_tests): Call it.
26830
26831 2017-06-20  Andreas Schwab  <schwab@suse.de>
26832
26833         PR target/80970
26834         * config/m68k/m68k.md (bsetdreg, bchgdreg, bclrdreg): Use "=d"
26835         instead of "+d".
26836
26837 2017-06-20  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
26838
26839         * config/arm/arm-c.c (arm_cpu_builtins): New block to define
26840         __ARM_FEATURE_COPROC according to support.
26841
26842 2017-06-20  Jakub Jelinek  <jakub@redhat.com>
26843
26844         * tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
26845         Rewritten to avoid overflow for > 32-bit pointers.
26846
26847         PR sanitizer/81125
26848         * ubsan.h (ubsan_encode_value): Workaround buggy clang++ parser
26849         by removing enum keyword.
26850         (ubsan_type_descriptor): Likewise.  Formatting fix.
26851
26852         PR target/81121
26853         * config/i386/i386.md (TARGET_USE_VECTOR_CONVERTS float si->{sf,df}
26854         splitter): Require TARGET_SSE2 in the condition.
26855
26856 2017-06-20  Michael Meissner  <meissner@linux.vnet.ibm.com>
26857
26858         PR target/79799
26859         * config/rs6000/rs6000.c (rs6000_expand_vector_init): Add support
26860         for doing vector set of SFmode on ISA 3.0.
26861         * config/rs6000/vsx.md (vsx_set_v4sf_p9): Likewise.
26862         (vsx_set_v4sf_p9_zero): Special case setting 0.0f to a V4SF
26863         element.
26864         (vsx_insert_extract_v4sf_p9): Add an optimization for inserting a
26865         SFmode value into a V4SF variable that was extracted from another
26866         V4SF variable without converting the element to double precision
26867         and back to single precision vector format.
26868         (vsx_insert_extract_v4sf_p9_2): Likewise.
26869
26870 2017-06-19  Jakub Jelinek  <jakub@redhat.com>
26871
26872         * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Multiply
26873         in UWHI to avoid undefined overflow.
26874
26875         PR sanitizer/81125
26876         * ubsan.h (enum ubsan_encode_value_phase): New.
26877         (ubsan_encode_value): Change second argument to
26878         enum ubsan_encode_value_phase with default value of
26879         UBSAN_ENCODE_VALUE_GENERIC.
26880         * ubsan.c (ubsan_encode_value): Change second argument to
26881         enum ubsan_encode_value_phase PHASE from bool IN_EXPAND_P,
26882         adjust uses, for UBSAN_ENCODE_VALUE_GENERIC use just
26883         create_tmp_var_raw instead of create_tmp_var and use a
26884         TARGET_EXPR.
26885         (ubsan_expand_bounds_ifn, ubsan_build_overflow_builtin,
26886         instrument_bool_enum_load, ubsan_instrument_float_cast): Adjust
26887         ubsan_encode_value callers.
26888
26889         PR sanitizer/81111
26890         * ubsan.c (ubsan_encode_value): If current_function_decl is NULL,
26891         use create_tmp_var_raw instead of create_tmp_var, mark it addressable
26892         just by setting TREE_ADDRESSABLE on the result and use a TARGET_EXPR.
26893
26894 2017-06-19  Richard Biener  <rguenther@suse.de>
26895
26896         PR middle-end/81118
26897         * tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Clear niter
26898         estimates if we changed anything.
26899
26900 2017-06-19  Richard Biener  <rguenther@suse.de>
26901
26902         PR tree-optimization/80887
26903         * tree-ssa-sccvn.c (mprts_hook_cnt): New global.
26904         (vn_lookup_simplify_result): Allow only mprts_hook_cnt succesful
26905         simplified lookups, then reset mprts_hook.
26906         (vn_nary_build_or_lookup_1): Set mprts_hook_cnt to 9 before
26907         simplifying.
26908         (try_to_simplify): Likewise.
26909
26910 2017-06-19  Martin Liska  <mliska@suse.cz>
26911
26912         PR sanitizer/80879
26913         * gimplify.c (gimplify_switch_expr):
26914         Initialize live_switch_vars for SWITCH_BODY == STATEMENT_LIST.
26915
26916 2017-06-19  Martin Liska  <mliska@suse.cz>
26917
26918         * doc/install.texi: Document that PGO runs in 4 stages.
26919
26920 2017-06-19  Martin Liska  <mliska@suse.cz>
26921
26922         PR ipa/80732
26923         * attribs.c (make_dispatcher_decl): Do not append '.ifunc'
26924         to dispatcher function name.
26925         * multiple_target.c (replace_function_decl): New function.
26926         (create_dispatcher_calls): Redirect both edges and references.
26927
26928 2017-06-19  Jan Hubicka <hubicka@ucw.cz>
26929
26930         * profile-count.c (profile_count::dump): Dump quality.
26931         (profile_count::differs_from_p): Update for unsigned val.
26932         * profile-count.h (profile_count_quality): New enum.
26933         (profile_count): Turn m_val to 62bit unsigned, add quality tracking.
26934
26935 2017-06-19  Richard Biener  <rguenther@suse.de>
26936
26937         * tree-ssa-loop-niter.h (estimate_numbers_of_iterations): Take
26938         struct function as arg.
26939         (estimate_numbers_of_iterations): Export overload with loop arg.
26940         (free_numbers_of_iterations_estimates_loop): Use an overload of
26941         free_numbers_of_iterations_estimates instead.
26942         * tree-cfg.c (remove_bb): Adjust.
26943         * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Likewise.
26944         * tree-parloops.c (gen_parallel_loop): Likewise.
26945         * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables):
26946         Likewise.
26947         (tree_unroll_loops_completely): Likewise.
26948         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop):
26949         Use an overload instead and export.
26950         (estimated_loop_iterations): Adjust.
26951         (max_loop_iterations): Likewise.
26952         (likely_max_loop_iterations): Likewise.
26953         (estimate_numbers_of_iterations): Take struct function as arg
26954         and adjust.
26955         (loop_exits_before_overflow): Adjust.
26956         (free_numbers_of_iterations_estimates_loop): Use an overload.
26957         * tree-vect-loop.c (vect_analyze_loop_form): Adjust.
26958         * tree-vectorizer.c (vect_free_loop_info_assumptions): Likewise.
26959
26960 2017-06-19  Richard Biener  <rguenther@suse.de>
26961
26962         PR ipa/81112
26963         * ipa-prop.c (find_constructor_constant_at_offset): Handle
26964         RANGE_EXPR conservatively.
26965
26966 2017-06-16  Carl Love  <cel@us.ibm.com>
26967
26968         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
26969         definitions for vec_float, vec_float2, vec_floato,
26970         vec_floate built-ins.
26971         * config/rs6000/vsx.md (define_c_enum "unspec"): Add RTL code
26972         for instructions vsx_xvcvsxws vsx_xvcvuxwsp, float2, floato and
26973         floate.
26974         * config/rs6000/rs6000-builtin.def (FLOAT2_V2DI, FLOATE_V2DF,
26975         FLOATE_2DI, FLOATO_V2DF, FLOATEE_V2DI, XVCVSXWSP_V4SF,
26976         UNS_FLOATO_V2DI, UNS_FLOATE_V2DI): Add definitions.
26977         * config/altivec.md (define_insn "p8_vmrgew_<mode>",
26978         define_mode_attr VF_sxddp): Add V4SF type to p8_vmrgew.
26979         * config/rs6000/altivec.h (vec_float, vec_float2, vec_floate,
26980         vec_floato): Add builtin defines.
26981         * doc/extend.texi (vec_float, vec_float2, vec_floate, vec_floato):
26982         Update the built-in documentation file for the new built-in
26983         functions.
26984
26985 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26986
26987         * config/arm/arm.opt (marm): Mark as the negative of of -mthumb.
26988         (mthumb): Mark as the negative of -marm.
26989
26990 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26991
26992         * doc/invoke.texi (ARM Options, -mcpu): Document supported
26993         extension options.
26994         (ARM Options, -mtune): Document that this accepts the same
26995         extension options as -mcpu.
26996         (ARM Options, -mfpu): Document addition of -mfpu=auto.
26997
26998 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
26999
27000         * doc/invoke.texi (ARM Options, -march=): Document new syntax and
27001         permitted extensions.
27002
27003 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27004
27005         * config/arm/arm-cpus.in (armv7): Add extension +nofp.
27006         (armv7-r): Add aliases vfpv3xd and vfpv3-d16.
27007         (armv8-m.main): Add option +nodsp.
27008         * config/arm/arm-cpu-cdata.h: Regenerated.
27009
27010 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27011
27012         * config/arm/t-fuchsia: New file.
27013         * config.gcc (arm*-*-fuchsia*): Use it.
27014
27015 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27016
27017         * config/arm/t-symbian: Rewrite for new option infrastructure.
27018
27019 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27020
27021         * config/arm/t-phoenix (MULTILIB_REUSE): Clear variable.
27022         (MULTILIB_REQUIRED): Likewise.
27023
27024 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27025
27026         * config/arm/t-linux-eabi (MULTILIB_EXCEPTIONS): Set to empty.
27027         (MULTILIB_RESUE): Likewise.
27028         (MULTILIB_MATCHES): Likewise.
27029         (MULTLIB_REQUIRED): Likewise.
27030
27031 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27032
27033         * config/arm/t-rtems: Rewrite for new option framework.
27034
27035 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27036
27037         * config/arm/t-aprofile (v7_a_nosimd_variants, v7_a_simd_variants)
27038         (v7ve_nosimd_variatns, v7ve_vfpv3_simd_variants)
27039         (v7ve_vfpv4_simd_variants, v8_a_nosimd_variants, v8_a_simd_variants)
27040         (v8_1_a_simd_variants, v8_2_a_simd_variants): Move to ...
27041         * config/arm/t-multilib: ... here.
27042         (MULTILIB_OPTIONS): Add armv7 and armv7+fp architectures.
27043         (MULTILIB_MATCHES): Use armv7 libraries for armv7-r.  Also use for
27044         armv7-a and armv8*-a when A-profile libraries have not been built.
27045         * config/arm/t-rmprofile: Rewrite.
27046
27047 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27048
27049         * genmultilib (multilib_reuse): Allow an explicit period to be escaped
27050         with a backslash.  Remove the backslash after substituting unescaped
27051         periods.
27052         * doc/fragments.texi (MULTILIB_REUSE): Document it.
27053
27054 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27055
27056         * config.gcc: (arm*-*-*): When building a-profile libraries, force
27057         the driver to pass through the default setting of -mfloat-abi.
27058         * common/config/arm/arm-common.c (arm_target_thumb_only): Return -marm
27059         rather than NULL.
27060         * config/arm/t-multilib (MULTILIB_REUSE): Initialize to empty.
27061         (all_feat_combs): New rule.
27062         (MULTILIB_OPTIONS): Use explicit ARM and Thumb directories.  Rework
27063         default libraries.
27064         * config/arm/t-aprofile: Rewrite.
27065
27066 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27067
27068         * config/arm/arm.h (FPUTYPE_AUTO): Define.
27069         * config/arm/arm.c (arm_option_override): Use FPUTYPE_AUTO if the
27070         fpu is not specified by the user/command-line.
27071         * config/arm/bpabi.h (FPUTYPE_DEFAULT): Delete.
27072         * config/arm/netbsd-elf.h (FPUTYPE_DEFAULT): Delete.
27073         * config/arm/linux-elf.h (FPUTYPE_DEFAULT): Delete.
27074         * config/arm/vxworks.h (FPUTYPE_DEFAULT): Delete.
27075         * common/config/arm/arm-common.c (arm_canon_arch_option): Use
27076         FPUTYPE_AUTO insted of FPUTYPE_DEFAULT.
27077
27078 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27079
27080         * config/arm/elf.h (MULTILIB_DEFAULTS): Delete.
27081         * config/arm/t-arm-elf: Rewritten.
27082
27083 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27084
27085         * config/arm/arm.h (TARGET_HARD_FLOAT): Also check that we
27086         have some floating-point instructions.
27087         (TARGET_SOFT_FLOAT): Define as inverse of TARGET_HARD_FLOAT.
27088         (TARGET_MAYBE_HARD_FLOAT): New macro.
27089         * config/arm/arm-builtins.c (arm_init_builtins): Use
27090         TARGET_MAYBE_HARD_FLOAT.
27091         * config/arm/arm.c (arm_option_override): Use TARGET_HARD_FLOAT_ABI.
27092
27093 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27094
27095         * common/config/arm/arm-common.c: Define INCLUDE_LIST.
27096         (configargs.h): Include it.
27097         (arm_print_hint_for_fpu_option): New function.
27098         (arm_parse_fpu_option): New function.
27099         (candidate_extension): New class.
27100         (arm_canon_for_multilib): New function.
27101         * config/arm/arm.h (CANON_ARCH_SPEC_FUNCTION): New macro.
27102         (EXTRA_SPEC_FUNCTIONS): Add CANON_ARCH_SPEC_FUNCTION.
27103         (ARCH_CANONICAL_SPECS): New macro.
27104         (DRIVER_SELF_SPECS): Add ARCH_CANONICAL_SPECS.
27105
27106 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27107
27108         * config.gcc (arm*-*-*): Ensure both target_cpu_cname and with_cpu
27109         are set after handling multilib fragments.  Set target_cpu_default2
27110         from with_cpu.
27111
27112 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27113
27114         * config.gcc (arm*-*-fucshia*): Set target_cpu_cname to the real
27115         cpu name.
27116         (arm*-*-*): Set target_cpu_default2 to a quoted string.
27117         * config/arm/parsecpu.awk (check_cpu): Validate any extension
27118         options.
27119         (check_arch): Likewise.
27120         * config/arm/arm.c (arm_configure_build_target): Handle
27121         TARGET_CPU_DEFAULT being a string constant.  Scan any feature
27122         options in the default.
27123
27124 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27125
27126         * config/arm/arm-protos.h (cpu_arch_extension): Add field to record
27127         when an option is an alias of another.
27128         * config/arm/parsecpu.awk (optalias): New parser token.
27129         (gen_comm_data): Mark non-alias options as such.  Emit entries
27130         for extension aliases.
27131         * config/arm/arm-cpus.in (armv5e): Make vfpv2 an alias.
27132         (armv5te, armv5tej, armv6, armv6j, armv6k, armv6z): Likewise.
27133         (armv6kz, armv6zk, armv6t2): Likewise.
27134         (armv7): Make vfpv3-d16 an alias.
27135         (armv7-a): Make vfpv3-d16, neon and neon-vfpv3 aliases.  Sort in
27136         canonical order.
27137         (armv7ve): Make vfpv4-d16, neon-vfpv3 and neon-vfpv4 aliases.
27138         Sort in canonical order.
27139         (armv8-a): Sort in canonical order.
27140         (armv8.1-a, armv8.2-a):  Likewise.
27141         (generic-armv7-a): Make neon and neon-vfpv3 aliases.  Sort in
27142         canonical order.
27143         (cortex-a9): Sort in canonical order.
27144         * config/arm/arm.c (selftests.h): Include it.
27145         (arm_test_cpu_arch_data): New function.
27146         (arm_run_self_tests): New function.
27147         (TARGET_RUN_TARGET_SELFTESTS): Redefine.
27148         (targetm): Move declaration to the end of the file.
27149         * arm-cpu-cdata.h: Regenerated.
27150
27151 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27152
27153         * config/arm/arm.h (TARGET_MODE_SPECS): Add additional parameter to
27154         call to target_mode_check describing the type of option passed.
27155         * common/config/arm/arm-common.c (arm_arch_core_flag): Delete.
27156         (arm_target_thumb_only): Use arm_parse_arch_option_name or
27157         arm_parse_cpu_option_name to match parameters against list of
27158         available targets.
27159         * config/arm/parsecpu.awk (gen_comm_data): Don't generate
27160         arm_arch_core_flags data structure.
27161         * config/arm/arm-cpu_cdata.h: Regenerated.
27162
27163 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27164
27165         * common/config/arm/arm-common.c (arm_initialize_isa): Moved here from
27166         config/arm/arm.c.
27167         (arm_print_hint_for_cpu_option): Likewise.
27168         (arm_print_hint_for_arch_option): Likewise.
27169         (arm_parse_cpu_option_name): Likewise.
27170         (arm_parse_arch_option_name): Likewise.
27171         * config/arm/arm.c (arm_identify_fpu_from_isa): Use the computed number
27172         of entries in the all_fpus list.
27173         * config/arm/arm-protos.h (all_architectures, all_cores): Declare.
27174         (arm_parse_cpu_option_name): Declare.
27175         (arm_parse_arch_option_name): Declare.
27176         (arm_parse_option_features): Declare.
27177         (arm_intialize_isa): Declare.
27178         * config/arm/parsecpu.awk (gen_data): Move CPU and architecture
27179         data tables to ...
27180         (gen_comm_data): ... here.  Make definitions non-static.
27181         * config/arm/arm-cpu-data.h: Regenerated.
27182         * config/arm/arm-cpu-cdata.h: Regenerated.
27183
27184 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27185
27186         * config/arm/arm-protos.h (arm_build_target): Remove arch_core.
27187         (cpu_arch_extension): New structure.
27188         (cpu_arch_option, arch_option, cpu_option): New structures.
27189         * config/arm/parsecpu.awk (gen_headers): Build an enumeration of
27190         architecture types.
27191         (gen_data): Generate new format data tables.
27192         * config/arm/arm.c (cpu_tune): New structure.
27193         (cpu_option, processors): Delete.
27194         (arm_print_hint_for_core_or_arch): Delete.  Replace with ...
27195         (arm_print_hint_for_cpu_option): ... this and ...
27196         (arm_print_hint_for_arch_option): ... this.
27197         (arm_parse_arch_cpu_name): Delete.  Replace with ...
27198         (arm_parse_cpu_option_name): ... this and ...
27199         (arm_parse_arch_option_name): ... this.
27200         (arm_unrecognized_feature): Change type of target parameter to
27201         cpu_arch_option.
27202         (arm_parse_arch_cpu_features): Delete.  Replace with ...
27203         (arm_parse_option_features): ... this.
27204         (arm_configure_build_target): Rework to use new configuration data
27205         tables.
27206         (arm_print_tune_info): Rework for new configuration data tables.
27207         * config/arm/arm-cpu-data.h: Regenerated.
27208         * config/arm/arm-cpu.h: Regenerated.
27209
27210 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27211
27212         * Makefile.in (OBJS): Move sbitmap.o from here ...
27213         (OBJS-libcommon): ... to here.
27214
27215 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27216
27217         * config/arm/arm-isa.h (ISA_ALL_FPU_INTERNAL): Renamed from ISA_ALL_FPU.
27218         (ISA_ALL_CRYPTO): New macro.
27219         (ISA_ALL_SIMD): New macro
27220         (ISA_ALL_FP): New macro.
27221         * config/arm/arm.c (fpu_bitlist): Update initializer.
27222         * config/arm/arm-cpus.in: Use new ISA_ALL macros to disable crypto,
27223         simd or fp.
27224         (arm9e): Add fpu.  Add option for nofp
27225         (arm946e-s, arm966e-s, arm968e-s, arm10e, arm1020e, arm1022e): Likewise.
27226         (arm926ej-s, arm1026ej-s): Likewise.
27227         (generic-armv7-a): Add fpu.  Add options for simd, vfpv3, vfpv3-d16,
27228         vfpv3-fp16, vfpv3-d16-fp16, vfpv4, vfpv4-d16, neon, neon-vfp3,
27229         neon-fp16, neon-vfpv4, nofp and nosimd.
27230         (cortex-a5, cortex-a7): Add fpu.  Add options for nosimd and nofp.
27231         (cortex-a8): Add fpu.  Add option for nofp.
27232         (cortex-a9): Add fpu.  Add options for nosimd and nofp.
27233         (cortex-a12, cortex-a15, cortex-a17): Add fpu.  Add option for nofp.
27234         (cortex-r4f): Add fpu.
27235         (cortex-r5): Add fpu.  Add options for nofp.dp and nofp.
27236         (cortex-r7): Use idiv option from architecture.  Add fpu.  Add option
27237         for nofp.
27238         (cortex-r8): Likewise.
27239         (cortex-m4): Add fpu.  Add option for nofp.
27240         (cortex-a15.cortex-a7): Add fpu.  Add option for nofp.
27241         (cortex-a17.cortex-a7): Likewise.
27242         (cortex-a32): Add fpu.  Add options for crypto and nofp.
27243         (cortex-a35, cortex-a53): Likewise.
27244         (cortex-a57): Add fpu.  Add option for crypto.
27245         (cortex-a72, cortex-a73): Likewise.
27246         (exynos-m1): Likewise.
27247         (cortex-a57.cortex-a53, cortex-a72.cortex-a53): Likewise.
27248         (cortex-a73.cortex-a35, cortex-a73.cortex-a53): Likewise.
27249         (cortex-m33): Add fpu.  Add option for nofp.
27250         * config/arm/arm-cpu-cdata.h: Regenerated
27251         * config/arm/arm-cpu-data.h: Regenerated.
27252
27253 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27254
27255         * arm-cpus.in (armv5e): Add options fp, vfpv2 and nofp.
27256         (armv5te, armv5tej): Likewise.
27257         (armv6, armv6j, armv6k, armv6z, armv6kz, armv6zk, armv6t2): Likewise.
27258         (armv7): Add options fp and vfpv3-d16.
27259         (armv7-a): Add options fp, simd, vfpv3, vfpv3-d16, vfpv3-d16-fp16,
27260         vfpv3-fp16, vfpv4, vfpv4-d16, neon, neon-vfpv3, neon-fp16, neon-vfpv4,
27261         nofp and nosimd.
27262         (armv7ve): Likewise.
27263         (armv7-r): Add options fp, fp.sp, idiv, nofp and noidiv.
27264         (armv7e-m): Add options fp, fpv5, fp.dp and nofp.
27265         (armv8-a): Add nocrypto option.
27266         (armv8.1-a, armv8.2-a): Likewise.
27267         (armv8-m.main): add options fp, fp.dp and nofp.
27268
27269 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27270
27271         * config/arm/arm-cpus.in (armv8-a): Add options crc, simd crypto and
27272         nofp.
27273         (armv8-a+crc): Delete.
27274         (armv8.1-a): Add options simd, crypto and nofp.
27275         (armv8.2-a): Add options fp16, simd, crypto and nofp.
27276         (armv8.2-a+fp16): Delete.
27277         (armv8-m.main): Add option dsp.
27278         (armv8-m.main+dsp): Delete.
27279         (cortex-a8): Add fpu.  Add nofp option.
27280         (cortex-a9): Add fpu.  Add nofp and nosimd options.
27281         * config/arm/parsecpu.awk (gen_data): Generate option tables and
27282         link to main cpu and architecture data structures.
27283         (gen_comm_data): Only put isa attributes from the main architecture
27284         in common tables.
27285         (option): New statement for architecture and CPU entries.
27286         * arm.c (struct cpu_option): New structure.
27287         (struct processors): Add entry for options.
27288         (arm_unrecognized_feature): New function.
27289         (arm_parse_arch_cpu_name): Ignore any characters after the first
27290         '+' character.
27291         (arm_parse_arch_cpu_feature): New function.
27292         (arm_configure_build_target): Separate out any CPU and architecture
27293         features and parse separately.  Don't error out if -mfpu=auto is
27294         used with only an architecture string.
27295         (arm_print_asm_arch_directives): New function.
27296         (arm_file_start): Call it.
27297         * config/arm/arm-cpu-cdata.h: Regenerated.
27298         * config/arm/arm-cpu-data.h: Likewise.
27299         * config/arm/arm-tables.opt: Likewise.
27300
27301 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27302
27303         * config/arm/elf.h (ASM_SPEC): Only pass -mfpu through to the
27304         assembler when it is not -mfpu=auto.
27305
27306 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27307
27308         * config/arm/arm.h (BIG_LITTLE_SPEC): Delete macro.
27309         (ASM_REWRITE_SPEC_FUNCTIONS): New macro.
27310         (BIG_LITTLE_CPU_SPEC_FUNCTIONS): Delete macro.
27311         (ASM_CPU_SPEC): Rewrite.
27312         (MCPU_MTUNE_NATIVE_FUNCTIONS): New macro.
27313         (EXTRA_SPEC_FUNCTIONS): Move outside of ifdef.  Use
27314         MCPU_MTUNE_NATIVE_FUNCTIONS and ASM_REWRITE_SPEC_FUNCTIONS.  Remove
27315         reference to BIG_LITTLE_CPU_SPEC_FUNCTIONS.
27316         * common/config/arm/arm-common.c (arm_rewrite_selected_cpu): Ensure
27317         copied string is NUL-terminated.  Also strip any characters prefixed
27318         by '+'.
27319         (arm_rewrite_selected_arch): New function.
27320         (arm_rewrite_march): New function.
27321
27322 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
27323
27324         * config/arm/arm.opt (x_arm_arch_string): New TargetSave option.
27325         (x_arm_cpu_string, x_arm_tune_string): Likewise.
27326         (march, mcpu, mtune): Convert to string-based options.
27327         * config/arm/arm.c (arm_print_hint_for_core_or_arch): New function.
27328         (arm_parse_arch_cpu_name): New function.
27329         (arm_configure_build_target): Use arm_parse_arch_cpu_name to
27330         identify selected architecture or CPU.
27331         (arm_option_save): New function.
27332         (TARGET_OPTION_SAVE): Redefine.
27333         (arm_option_restore): Restore string options.
27334         (arm_option_print): Print string options.
27335
27336 2017-06-16  Martin Sebor  <msebor@redhat.com>
27337
27338         PR tree-optimization/80933
27339         PR tree-optimization/80934
27340         * builtins.c (fold_builtin_3): Do not handle bcmp here.
27341         * gimple-fold.c (gimple_fold_builtin_bcmp): New function.
27342         (gimple_fold_builtin_bcopy, gimple_fold_builtin_bzero): Likewise.
27343         (gimple_fold_builtin): Call them.
27344
27345 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27346
27347         * gimple-ssa-isolate-paths.c (isolate_path): Set edge leading to path
27348         as unlikely; update profile.
27349
27350 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27351
27352         * predict.c (force_edge_cold): Handle declaring edges impossible
27353         more aggresively.
27354
27355 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27356
27357         * tree-ssa-loop-ivcanon.c (remove_exits_and_undefined_stmts): Update
27358         profile.
27359         (try_unroll_loop_completely): Fix reporting.
27360
27361 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27362
27363         * tree-ssa-tail-merge.c (replace_block_by): Fix profile updating.
27364
27365 2017-06-16  James Greenhalgh  <james.greenhalgh@arm.com>
27366
27367         PR target/71778
27368         * config/arm/arm-builtins.c (arm_expand_builtin_args): Return TARGET
27369         if given a non-constant argument for an intrinsic which requires a
27370         constant.
27371
27372 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27373
27374         * profile.c (compare_freqs): New function.
27375         (branch_prob): Sort edge list.
27376         (find_spanning_tree): Assume that the list is priority sorted.
27377
27378 2017-06-16  Richard Biener  <rguenther@suse.de>
27379
27380         PR tree-optimization/81090
27381         * passes.def (pass_record_bounds): Remove.
27382         * tree-pass.h (make_pass_record_bounds): Likewise.
27383         * tree-ssa-loop.c (pass_data_record_bounds, pass_record_bounds,
27384         make_pass_record_bounds): Likewise.
27385         * tree-ssa-loop-ivcanon.c (canonicalize_induction_variables): Do
27386         not free niter estimates at the beginning but at the end.
27387         * tree-scalar-evolution.c (scev_finalize): Free niter estimates.
27388
27389 2017-06-16  Richard Biener  <rguenther@suse.de>
27390
27391         * tree-switch-conversion.c (emit_case_bit_tests): Adjust
27392         initializer to workaround ICE in host GCC 4.8.
27393
27394 2017-06-16  Jan Hubicka  <hubicka@ucw.cz>
27395
27396         * ipa-inline-transform.c (update_noncloned_frequencies): Update also
27397         counts.
27398         (clone_inlined_nodes): Update.
27399
27400 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
27401
27402         * config/aarch64/aarch64.c (qdf24xx_prefetch_tune): Update
27403         prefetch settings, and enable prefetching by default at -O3.
27404
27405 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
27406
27407         * config/aarch64/aarch64.c (aarch64_override_options_internal):
27408         Set flag_prefetch_loop_arrays according to tuning data.
27409
27410 2017-06-16  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
27411
27412         * config/aarch64/aarch64-protos.h (struct cpu_prefetch_tune):
27413         New tune structure.
27414         (struct tune_params): Use cpu_prefetch_tune instead of cache_line_size.
27415         [Unrelated to main purpose of the patch] Place the pointer field last
27416         to enable type checking errors when tune structure are wrongly merged.
27417         * config/aarch64/aarch64.c (generic_prefetch_tune,)
27418         (exynosm1_prefetch_tune, qdf24xx_prefetch_tune,)
27419         (thunderx2t99_prefetch_tune): New tune constants.
27420         (tune_params *_tunings): Update all tunings (no functional change).
27421         (aarch64_override_options_internal): Set PARAM_SIMULTANEOUS_PREFETCHES,
27422         PARAM_L1_CACHE_SIZE, PARAM_L1_CACHE_LINE_SIZE, and PARAM_L2_CACHE_SIZE
27423         from tunings structures.
27424
27425 2017-06-16  Jakub Jelinek  <jakub@redhat.com>
27426
27427         PR sanitizer/81094
27428         * ubsan.c (instrument_null): Add T argument, use it instead
27429         of computing it based on IS_LHS.
27430         (instrument_object_size): Likewise.
27431         (pass_ubsan::execute): Adjust instrument_null and
27432         instrument_object_size callers to pass gimple_get_lhs or
27433         gimple_assign_rhs1 result to it.  Use instrument_null instead of
27434         calling get_base_address and instrument_mem_ref.  Handle
27435         aggregate call arguments for object-size sanitization.
27436
27437 2017-06-16  Yury Gribov  <tetra2005@gmail.com>
27438
27439         PR tree-optimization/81089
27440         * tree-vrp.c (is_masked_range_test): Validate operands of
27441         subexpression.
27442
27443 2017-06-15  Martin Sebor  <msebor@redhat.com>
27444
27445         PR c++/80560
27446         * dumpfile.c (dump_register): Avoid calling memset to initialize
27447         a class with a default ctor.
27448         * gcc.c (struct compiler): Remove const qualification.
27449         * genattrtab.c (gen_insn_reserv): Replace memset with initialization.
27450         * hash-table.h: Ditto.
27451         * ipa-cp.c (allocate_and_init_ipcp_value): Replace memset with
27452           assignment.
27453         * ipa-prop.c (ipa_free_edge_args_substructures): Ditto.
27454         * omp-low.c (lower_omp_ordered_clauses): Replace memset with
27455         default ctor.
27456         * params.h (struct param_info): Make struct members non-const.
27457         * tree-switch-conversion.c (emit_case_bit_tests): Replace memset
27458         with default initialization.
27459         * vec.h (vec_copy_construct, vec_default_construct): New helper
27460         functions.
27461         (vec<T>::copy, vec<T>::splice, vec<T>::reserve): Replace memcpy
27462         with vec_copy_construct.
27463         (vect<T>::quick_grow_cleared): Replace memset with default ctor.
27464         (vect<T>::vec_safe_grow_cleared, vec_safe_grow_cleared): Same.
27465         * doc/invoke.texi (-Wclass-memaccess): Document.
27466
27467 2017-06-15  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
27468
27469         * emit-rtl.h (is_leaf): Update comment about local
27470         register allocator.
27471
27472 2017-06-15  Jozef Lawrynowicz   <jozef.l@somniumtech.com>
27473
27474         PR target/78818
27475         * config/msp430/msp430.c (msp430_data_attr): Check that it's possible
27476         for a variable to have a section before checking if the section has a
27477         name.
27478         Set section to.persistent if persistent attribute is set.
27479         Warn if .persistent attribute is used on an automatic variable.
27480
27481 2017-06-15  Eric Botcazou  <ebotcazou@adacore.com>
27482
27483         PR rtl-optimization/80474
27484         * reorg.c (update_block): Do not ignore instructions in a delay slot.
27485
27486 2017-06-15  Segher Boessenkool  <segher@kernel.crashing.org>
27487
27488         * config/rs6000/rs6000.md (add<mode>3): Use reg_or_subregno instead
27489         of REGNO.
27490
27491 2017-06-14  Maciej W. Rozycki  <macro@imgtec.com>
27492
27493         * config/mips/mips.md (MIPS16_T_REGNUM): Remove constant.
27494         (casesi): Emit bounds checking as RTL.
27495         (casesi_internal_mips16_<mode>): Remove bounds checking.
27496
27497 2017-06-14  Max Filippov  <jcmvbkbc@gmail.com>
27498
27499         * config/xtensa/xtensa.c (xtensa_option_override): Append
27500         MASK_CONST16 to target_flags in the absence of TARGET_L32R.
27501         (hwloop_optimize, hwloop_fail, hwloop_pattern_reg,
27502          xtensa_doloop_hooks): Define unconditionally.
27503         (xtensa_reorg_loops): Only call reorg_loops in the presence of
27504         TARGET_LOOPS.
27505         * config/xtensa/xtensa.h (TARGET_L32R): New definition.
27506         (TARGET_DEFAULT): Remove XCHAL_HAVE_L32R condition and account
27507         for it in xtensa_option_override.
27508         (HARD_FRAME_POINTER_IS_FRAME_POINTER,
27509          HARD_FRAME_POINTER_IS_ARG_POINTER): New definitions.
27510
27511 2017-06-14  Boris Kolpackov  <boris@codesynthesis.com>
27512
27513         * doc/cppopts.texi: Document '-' special value to -MF.
27514
27515 2017-06-14  Wilco Dijkstra  <wdijkstr@arm.com>
27516
27517         * config/arm/cortex-a53.md (cortex_a53_fpalu) Adjust latency.
27518         (cortex_a53_fconst): Likewise.
27519         (cortex_a53_fpmul): Likewise.
27520         (cortex_a53_f_load_64): Likewise.
27521         (cortex_a53_f_load_many): Likewise.
27522         (cortex_a53_advsimd_alu): Likewise.
27523         (cortex_a53_advsimd_alu_q): Likewise.
27524         (cortex_a53_advsimd_mul): Likewise.
27525         (cortex_a53_advsimd_mul_q): Likewise.
27526         (fpmac bypass): Add new bypass for fpmac-fpmac case.
27527         Add missing fmul, r2f_cvt and fconst cases.
27528
27529 2017-06-14  Richard Biener  <rguenther@suse.de>
27530
27531         PR middle-end/81088
27532         * fold-const.c (split_tree): Drop TREE_OVERFLOW flag from
27533         literal constants.
27534         (fold_binary_loc): When associating do not treat pre-existing
27535         TREE_OVERFLOW on literal constants as a reason to allow
27536         TREE_OVERFLOW on associated literal constants.
27537
27538 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
27539
27540         * config/sparc/sparc.h (MASK_ISA): Add MASK_LEON and MASK_LEON3.
27541         (MASK_FEATURES): New macro.
27542         * config/sparc/sparc.c (sparc_option_override): Remove the special
27543         handling of -mfpu and generalize it to all MASK_FEATURES switches.
27544
27545 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
27546
27547         * simplify-rtx.c (simplify_binary_operation_1) <UDIV>: Do not simplify
27548         a division of 0 if non-call exceptions are enabled.
27549
27550 2017-06-14  Andrew Pinski  <apinski@cavium.com>
27551             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
27552
27553         PR target/71663
27554         * config/aarch64/aarch64.c (aarch64_expand_vector_init):
27555         Improve vector initialization code gen for only variable case.
27556
27557 2017-06-14  Eric Botcazou  <ebotcazou@adacore.com>
27558
27559         * config/sparc/driver-sparc.c (cpu_names): Add SPARC-T5 entry.
27560
27561 2017-06-14  Richard Biener  <rguenther@suse.de>
27562
27563         PR tree-optimization/81083
27564         * tree-ssa-sccvn.c (vn_reference_lookup_3): Do not use abnormals
27565         as values.
27566
27567 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27568
27569         * config/rs6000/rs6000.c: Update all comments that mentioned SPE.
27570         (rs6000_expand_builtin): Remove RS6000_BTC_EVSEL.
27571         * config/rs6000/rs6000.h (RS6000_BTC_EVSEL): Delete.
27572         * config/rs6000/vxworks.h (VXCPU_FOR_8548): Delete.  Adjust former use.
27573         * config/rs6000/vxworksae.h (VXCPU_FOR_8548): Delete.
27574         * config/rs6000/vxworksmils.h (VXCPU_FOR_8548): Delete.
27575
27576 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27577
27578         * config/rs6000/rs6000-opts.h (enum rs6000_vector): Delete VECTOR_SPE.
27579         * config/rs6000/rs6000.c (rs6000_debug_vector_unit): Delete VECTOR_SPE.
27580
27581 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27582
27583         * config/rs6000/rs6000.h (FIXED_SCRATCH): Delete.
27584
27585 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27586
27587         * config/rs6000/t-rtems: Don't handle SPE.
27588
27589 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27590
27591         * config/rs6000/t-linux: Don't handle SPE.
27592
27593 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27594
27595         * config/rs6000/eabispe.h: Delete file.
27596
27597 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27598
27599         * config/rs6000/t-spe: Delete file.
27600
27601 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27602
27603         * config/rs6000/rs6000.c (SPE_CONST_OFFSET_OK): Delete.
27604         (rs6000_legitimate_offset_address_p): Return false for anything in
27605         V2SImode or V2SFmode.
27606
27607 2017-06-13  Segher Boessenkool  <segher@kernel.crashing.org>
27608
27609         * config/rs6000/rs6000-modes.def: Remove all 8-byte vector modes
27610         except V2SF and V2SI.  Rearrange the vector modes, and add comments.
27611         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Remove V8QImode
27612         and V4HImode.
27613         (reg_offset_addressing_ok_p): Remove V4HImode and V1DImode.
27614         (rs6000_legitimate_offset_address_p): Ditto.
27615         (rs6000_emit_move): Ditto.
27616         (rs6000_init_builtins): Remove V4HI_type_node.
27617
27618 2017-06-13  Martin Liska  <mliska@suse.cz>
27619
27620         PR sanitize/78204
27621         * asan.c (asan_sanitize_stack_p): Use sanitize_flags_p.
27622         (gate_asan): Likewise.
27623         * asan.h (asan_no_sanitize_address_p): Remove the function.
27624         (sanitize_flags_p): New function.
27625         * builtins.def: Fix coding style.
27626         * common.opt: Use renamed enum value.
27627         * convert.c (convert_to_integer_1): Use sanitize_flags_p.
27628         * doc/extend.texi: Document no_sanitize attribute.
27629         * flag-types.h (enum sanitize_code): Rename SANITIZE_NONDEFAULT
27630         to SANITIZE_UNDEFINED_NONDEFAULT.
27631         * gcc.c (sanitize_spec_function): Use the renamed enum value.
27632         * gimple-fold.c (optimize_atomic_compare_exchange_p):
27633         Use sanitize_flags_p.
27634         * gimplify.c (gimplify_function_tree): Likewise.
27635         * ipa-inline.c (sanitize_attrs_match_for_inline_p): Likewise.
27636         * opts.c (parse_no_sanitize_attribute): New function.
27637         (common_handle_option): Use renamed enum value.
27638         * opts.h (parse_no_sanitize_attribute): Declare.
27639         * tree.c (sanitize_flags_p): New function.
27640         * tree.h: Declared here.
27641         * tsan.c: Use sanitize_flags_p.
27642         * ubsan.c (ubsan_expand_null_ifn): Likewise.
27643         (instrument_mem_ref): Likewise.
27644         (instrument_bool_enum_load): Likewise.
27645         (do_ubsan_in_current_function): Remove the function.
27646         (pass_ubsan::execute): Use sanitize_flags_p.
27647         * ubsan.h: Remove do_ubsan_in_current_function
27648         * tree-cfg.c (print_no_sanitize_attr_value): New function.
27649         (dump_function_to_file): Use it here.
27650
27651 2017-06-13  Martin Jambor  <mjambor@suse.cz>
27652
27653         PR tree-optimization/80803
27654         PR tree-optimization/81063
27655         * tree-sra.c (subtree_mark_written_and_enqueue): Move up in the file.
27656         (propagate_subaccesses_across_link): Enqueue subtree whenever
27657         necessary instead of relying on the caller.
27658
27659 2017-06-13  Martin Jambor  <mjambor@suse.cz>
27660
27661         * tree-sra.c (add_access_to_work_queue): Only enqueue accesses
27662         that have a first_link.
27663         (sort_and_splice_var_accesses): Do not check first_link before
27664         enquing.
27665         (subtree_mark_written_and_enqueue): Likewise.
27666         (propagate_all_subaccesses): Likewise and do not stop at first
27667         parent with a first_link.
27668
27669 2017-06-13  Martin Jambor  <mjambor@suse.cz>
27670
27671         * tree-sra.c (dump_access_tree_1): Fix accidental dumping to stderr
27672         instead of f.
27673
27674 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
27675
27676         * match.pd: New pattern.
27677
27678 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
27679
27680         * tree-vrp.c (is_masked_range_test): New function.
27681         (register_edge_assert_for): Determine ranges for
27682         some bit tests.
27683
27684 2017-06-13  Yury Gribov  <tetra2005@gmail.com>
27685
27686         PR tree-optimization/67328
27687         * fold-const.c (maskable_range_p): New function.
27688         (build_range_check): Generate bittests if possible.
27689
27690 2017-06-13  Martin Liska  <mliska@suse.cz>
27691
27692         * gimple-pretty-print.c (dump_probability): Add new argument.
27693         (dump_edge_probability): Dump both probability and count.
27694         (dump_gimple_label): Likewise.
27695         (dump_gimple_bb_header): Likewise.
27696
27697 2017-06-13  Georg-Johann Lay  <avr@gjlay.de>
27698
27699         PR target/81072
27700         * config/avr/avr-devices.c: Fix indentation.
27701         * config/avr/gen-avr-mmcu-specs.c: Dito.
27702
27703 2017-06-13  Richard Biener  <rguenther@suse.de>
27704
27705         * tree-vect-loop.c (vect_model_reduction_cost): Do not fail,
27706         instead get vector type from stmt_info.
27707         (vectorizable_reduction): Adjust.  Remove dead code.
27708
27709 2017-06-13  Richard Biener  <rguenther@suse.de>
27710
27711         PR middle-end/81065
27712         * fold-const.c (extract_muldiv_1): Remove bogus distribution
27713         case of C * (x * C2 + C3).
27714         (fold_addr_of_array_ref_difference): Properly fold index difference.
27715
27716 2017-06-12  David S. Miller  <davem@davemloft.net>
27717
27718         PR target/80968
27719         * config/sparc/sparc.md (return expander): Emit frame blockage if
27720         function uses alloca.
27721
27722 2017-06-12  Richard Sandiford  <richard.sandiford@linaro.org>
27723
27724         * combine.c (make_field_assignment): Check len rather than the mode
27725         precision when calling force_to_mode.
27726
27727 2017-06-12  Georg-Johann Lay  <avr@gjlay.de>
27728
27729         Support multilibs and devices that see flash in RAM address range.
27730
27731         PR target/81072
27732         * config/avr/avr-arch.h (avr_arch_id) <ARCH_AVRXMEGA3>: New enum.
27733         (avr_mcu_t) <flash_pm_offset>: New field.
27734         (avr_device_specific_features) <AVR_ISA_RCALL>: New enum.
27735         * config/avr/avr.h (AVR_SHORT_CALLS): New define.
27736         (AVR_HAVE_JMP_CALL): Don't set if AVR_SHORT_CALLS.
27737         (AVR_TINY_PM_OFFSET): Remove macro.
27738         * config/avr/avr.opt (-mshort-calls): New option.
27739         * config/avr/gen-avr-mmcu-specs.c (print_mcu)
27740         [*self_spec]: Add / remove -mshort-calls depending on AVR_ISA_RCALL.
27741         * config/avr/avr-c.c (avr_cpu_cpp_builtins)
27742         <__AVR_SHORT_CALLS__>: Built-in define if AVR_SHORT_CALLS.
27743         <__AVR_HAVE_JMP_CALL__>: Use AVR_HAVE_JMP_CALL as condition
27744         instead of avr_arch->have_jmp_call.
27745         <__AVR_PM_BASE_ADDRESS__>: Built-in define if avr_arch->flash_pm_offset.
27746         [AVR_TINY] <__AVR_TINY_PM_BASE_ADDRESS__>: Use
27747         avr_arch->flash_pm_offset to define.
27748         * config/avr/avr-devices.c (avr_arch_types): Add initializers for
27749         new field flash_pm_offset.  Add entry for avrxmega3.
27750         (avr_texinfo): Add entry for avrxmega3.
27751         * config/avr/avr-mcus.def: Add entries for: avrxmega3,
27752         attiny212, attiny214,
27753         attiny412, attiny414, attiny416, attiny417,
27754         attiny814, attiny816, attiny817,
27755         attiny1614, attiny1616, attiny1617,
27756         attiny3214, attiny3216, attiny3217.
27757         * config/avr/avr.c (avr_assemble_integer)[AVR_TINY]: Use
27758         avr_arch->flash_pm_offset instead of AVR_TINY_PM_OFFSET.
27759         (avr_print_operand_address) [AVR_TINY]: Same.
27760         (avr_asm_init_sections) <readonly_data_section>: Only patch
27761         callback if avr_arch->flash_pm_offset = 0.
27762         (avr_asm_named_section) <avr_need_copy_data_p>: Skip setting it
27763         for rodata if avr_arch->flash_pm_offset != 0.
27764         (avr_encode_section_info) [AVR_TINY]: Adjust comment.
27765         * config/avr/genmultilib.awk (dir_rcall, opt_rcall): New vars.
27766         (opts) [AVR_ISA_RCALL]: Append opt_rcall.
27767         (m_options): Append opt_rcall.
27768         (m_dirnames): Append dir_rcall.
27769         * config/avr/t-multilib: Regenerate.
27770
27771         * configure.ac [target=avr]: Check whether avrxmega3 default
27772         linker description file works as needed.
27773         * configure: Regenerate.
27774         * doc/avr-mmcu.texi: Regenerate.
27775         * doc/invoke.texi (AVR Options) <-mshort-calls>: Document it.
27776         <__AVR_ARCH__>: Document avrxmega3 and 103.
27777         <__AVR_HAVE_JMP_CALL__>: Adjust documentation.
27778         <__AVR_SHORT_CALLS__>: Document it.
27779         <__AVR_PM_BASE_ADDRESS__>: Document it.
27780         * doc/extend.texi (AVR Options) <-mshort-calls>: Document it.
27781         (AVR Variable Attributes) <progmem>: Document this is
27782         not needed for avrxmega3.
27783         (AVR Named Address Spaces) <__flash>: Dito.
27784
27785 2017-06-12  Jan Hubicka  <hubicka@ucw.cz>
27786
27787         * cgraph.c (cgraph_node::dump): Complain about profile insanities.
27788
27789 2017-06-12  Doug Rupp  <rupp@adacore.com>
27790
27791         * config.gcc (*-*-vxworks*): Set use_gcc_stdint to "provide".
27792         Append vxworks-stdint.h to the tm_file list.
27793         * config/vxworks-stdint.h: New file.
27794
27795 2017-06-12  Martin Liska  <mliska@suse.cz>
27796
27797         PR tree-optimization/81041
27798         * tree-profile.c (gimple_gen_ic_func_profiler):
27799         Create an extra BB in profile-generate
27800         (gimple_gen_time_profiler): Likewise.
27801
27802 2017-06-12  Jakub Jelinek  <jakub@redhat.com>
27803
27804         PR tree-optimization/81003
27805         * tree-ssa-reassoc.c (force_into_ssa_name): New function.
27806         (update_range_test): Use it instead of force_gimple_operand_gsi.
27807
27808 2017-06-12  Richard Biener  <rguenther@suse.de>
27809
27810         PR tree-optimization/81053
27811         * tree-vect-loop.c (vect_is_simple_reduction): Handle PHI
27812         with backedge value not defined in loop.  Simplify def stmt
27813         compute.
27814
27815 2017-06-11  Tom de Vries  <tom@codesourcery.com>
27816
27817         PR target/79939
27818         * config/nvptx/nvptx.c (nvptx_cannot_force_const_mem): New function.
27819         Return true.
27820         (TARGET_CANNOT_FORCE_CONST_MEM): Redefine to
27821         nvptx_cannot_force_const_mem.
27822
27823 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27824
27825         * opts.c (finish_options): Move test for flag_split_stack after
27826         it has been initialized.
27827
27828 2017-06-11  Jason Merrill  <jason@redhat.com>
27829
27830         * tree.h (id_equal): New.
27831         * dwarf2out.c, hsa-gen.c, ipa-devirt.c, omp-expand.c,
27832         omp-simd-clone.c, read-rtl-function.c, tree-chkp.c, tree.c: Use it
27833         instead of strcmp of IDENTIFIER_POINTER.
27834
27835 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27836
27837         * ipa-inline-transform.c: Include function.h, cfg.h and basic-block.h
27838         (mark_all_inlined_calls_cdtor): Fix formating.
27839         (inline_transform): Rescale profile before inlining.
27840
27841 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27842
27843         * cgraph.h (cgraph_edge::clone): Update prototype.
27844         * cgraphclones.c (cgraph_edge::clone): Update profile scaling.
27845         (cgraph_node::create_clone): Update.
27846         (cgraph_node::create_version_clone): Update.
27847         * tree-inline.c (copy_bb): Update.
27848         (expand_call_inline): Update.
27849
27850 2017-06-10  Segher Boessenkool  <segher@kernel.crashing.org>
27851
27852         * config/rs6000/rs6000.c (emit_vrsave_prologue): New function,
27853         factored out from ...
27854         (rs6000_emit_prologue): ... here.
27855
27856 2017-06-10  Segher Boessenkool  <segher@kernel.crashing.org>
27857
27858         * config/rs6000/rs6000.c (emit_split_stack_prologue): New function,
27859         factored out from ...
27860         (rs6000_emit_prologue): ... here.
27861
27862 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27863
27864         * predict.c (drop_profile): Also drop individual bb/edge and cgraph
27865         edge counts.
27866         (handle_missing_profiles): Fix computation of tp_first_run.
27867         (counts_to_freqs): Do not touch freqs when count is 0.
27868
27869 2017-06-10  Jan Hubicka  <hubicka@ucw.cz>
27870
27871         * cgraphbuild.c (cgraph_edge::rebuild_references): Do not touch
27872         profile.
27873
27874 2017-06-10  Tom de Vries  <tom@codesourcery.com>
27875
27876         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
27877         attributes): Document signal effective target.
27878
27879 2017-06-10  Tom de Vries  <tom@codesourcery.com>
27880
27881         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
27882         Document effective target stack_size.
27883
27884 2017-06-09  David Malcolm  <dmalcolm@redhat.com>
27885
27886         * diagnostic.c (diagnostic_report_diagnostic): Only add fixits
27887         to the edit_context if they can be auto-applied.
27888
27889 2017-06-9  Ian Lance Taylor  <iant@golang.org>
27890
27891         * opts.c (finish_options): If -fsplit-stack, disable implicit
27892         -forder-blocks-and-partition.
27893         * doc/invoke.texi (Optimize Options): Document that when using
27894         -fsplit-stack -forder-blocks-and-partition is not implicitly
27895         enabled.
27896
27897 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
27898
27899         * builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST,
27900         ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST,
27901         ATTR_TMPURE_NORETURN_NOTHROW_LEAF_COLD_LIST): New.
27902         * builtins.def (abort, trap, unreachable): Declare cold.
27903         * calls.c (flags_from_decl_or_type): Lookup ECF_COLD.
27904         * tree-core.h (ECF_COLD): New.
27905         * tree.c (set_call_expr_flags): Handle ECF_COLD.
27906         (build_common_builtin_nodes): Mark unreachable and abort as cold.
27907
27908 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
27909
27910         * predict.c (unlikely_executed_stmt_p): Cleanup.
27911
27912 2017-06-09  Richard Biener  <rguenther@suse.de>
27913
27914         * tree-ssa-loop-im.c (execute_sm): Do not force multi-threaded
27915         model if the ref is always written to.
27916
27917 2017-06-09  Tamar Christina  <tamar.christina@arm.com>
27918
27919         * config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2): New.
27920
27921 2017-06-09  Tamar Christina  <tamar.christina@arm.com>
27922
27923         * config/arm/arm.c (arm_rtx_costs_internal): Make sdiv more expensive
27924         than udiv.
27925
27926 2017-06-09  Tom de Vries  <tom@codesourcery.com>
27927
27928         PR target/80855
27929         * config/nvptx/nvptx.md (define_expand "mov<QHSDISDFM>"): Error out with
27930         "target cannot support label values" when encountering LABEL_REF.
27931
27932 2017-06-09  Martin Liska  <mliska@suse.cz>
27933
27934         * tree-profile.c (gimple_gen_ic_profiler): Update comment.
27935         (gimple_gen_ic_func_profiler): Emit direct comparison
27936         of __gcov_indirect_call_callee with NULL.
27937         (gimple_gen_time_profiler): Change probability from
27938         PROB_VERY_UNLIKELY to PROB_UNLIKELY.
27939
27940 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
27941
27942         * profile.c (edge_gcov_counts): Turn to pointer.
27943         (compute_branch_probabilities, compute_branch_probabilities): Update.
27944         (branch_prob): Do not clear edge_gcov_count.
27945         * profile.h (edge_gcov_counts): Turn to pointer.
27946         (edge_gcov_count): Update.
27947
27948 2017-06-09  Jan Hubicka  <hubicka@ucw.cz>
27949
27950         * gimple.h (gimple_check_failed): Mark cold.
27951
27952 2017-06-09  Richard Biener  <rguenther@suse.de>
27953
27954         PR tree-optimization/66623
27955         * tree-vect-loop.c (vect_is_simple_reduction): Cleanup,
27956         refactor check_reduction into two parts, properly computing
27957         whether we have to check reduction validity for outer loop
27958         vectorization.
27959
27960 2017-06-09  Richard Biener  <rguenther@suse.de>
27961
27962         PR tree-optimization/79483
27963         * graphite-scop-detection.c (order): New global.
27964         (get_order): Compute bb to order mapping that satisfies code
27965         generation constraints.
27966         (cmp_pbbs): New helper.
27967         (build_scops): Start domwalk at entry block, sort generated
27968         pbbs.
27969
27970 2017-06-09  Richard Biener  <rguenther@suse.de>
27971
27972         PR middle-end/81007
27973         * ipa-polymorphic-call.c
27974         (ipa_polymorphic_call_context::restrict_to_inner_class):
27975         Skip FIELD_DECLs with error_mark_node type.
27976         * passes.def (all_lowering_passes): Run pass_build_cgraph_edges
27977         last again.
27978
27979 2017-06-09  Martin Liska  <mliska@suse.cz>
27980
27981         * predict.c (struct branch_predictor): New struct.
27982         (test_prediction_value_range): New test.
27983         (predict_c_tests): New function.
27984         * selftest-run-tests.c (selftest::run_tests): Run the function.
27985         * selftest.h: Declare new tests.
27986
27987 2017-06-09  Segher Boessenkool  <segher@kernel.crashing.org>
27988
27989         PR target/80966
27990         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that
27991         gen_add3_insn did not fail.
27992         * config/rs6000/rs6000.md (add<mode>3): If asked to add a constant to
27993         r0, construct that number in a temporary reg and add that reg to r0.
27994         If asked to put the result in r0 as well, fail.
27995
27996 2017-06-08  Will Schmidt  <will_schmidt@vnet.ibm.com>
27997
27998         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
27999         for early expansion of vec_eqv.
28000
28001 2017-06-08  Jakub Jelinek  <jakub@redhat.com>
28002
28003         PR middle-end/81005
28004         * ubsan.c (instrument_null): Avoid pointless code temporary.
28005         (pass_ubsan::execute): Instrument aggregate arguments of calls.
28006
28007 2017-06-08  Uros Bizjak  <ubizjak@gmail.com>
28008
28009         PR target/81015
28010         Revert:
28011         2016-12-14  Uros Bizjak  <ubizjak@gmail.com>
28012
28013         PR target/59874
28014         * config/i386/i386.md (*ctzhi2): New insn_and_split pattern.
28015         (*clzhi2): Ditto.
28016
28017 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28018
28019         * predict.c (unlikely_executed_edge_p): Move ahead.
28020         (probably_never_executed_edge_p): Use it.
28021
28022 2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>
28023
28024         PR middle-end/79988
28025         * tree-chkp.c (chkp_gimple_call_builtin_p): Remove
28026         gimple_call_builtin_p call.
28027
28028 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28029
28030         * system.h (fancy_abort): Annotate by ATTRIBUTE_COLD.
28031         * rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
28032         rtl_check_failed_type2, rtl_check_failed_code1,
28033         rtl_check_failed_code2, rtl_check_failed_code_mode,
28034         rtl_check_failed_block_symbol, cwi_check_failed_bounds,
28035         rtvec_check_failed_bounds, rtl_check_failed_flag,
28036         _fatal_insn_not_found, _fatal_insn): Likewise.
28037         * tree.h (tree_contains_struct_check_failed,
28038         tree_check_failed, tree_not_check_failed,
28039         tree_class_check_failed, tree_range_check_failed,
28040         tree_not_class_check_failed, tree_int_cst_elt_check_failed,
28041         tree_vec_elt_check_failed, phi_node_elt_check_failed,
28042         tree_operand_check_failed, omp_clause_check_failed,
28043         omp_clause_operand_check_failed, omp_clause_range_check_failed):
28044         Likewise.
28045
28046 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28047
28048         * cgraph.c (cgraph_edge::maybe_hot_p): Do not check
28049         flag_branch_probabilities.
28050         * ipa-inline.c (edge_badness): Likewise.
28051         * ipa-profile.c (ipa_propagate_frequency_1): Likewise.
28052         * postreload-gcse.c (eliminate_partially_redundant_load): Likewise.
28053         * predict.c (maybe_hot_frequency_p): Likewise.
28054         (probably_never_executed): Likewise.
28055         * sched-ebb.c (schedule_ebbs): Likewise.
28056         * sched-rgn.c (find_single_block_region): Likewise.
28057         * tracer.c (tail_duplicate): Likewise.
28058
28059 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28060
28061         * opts.c (finish_options): x_flag_reorder_blocks_and_partition no
28062         longer requires x_flag_profile_use.
28063
28064 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28065
28066         * cfgrtl.c (cfg_layout_initialize): Check crtl->has_bb_partition
28067         instead of flag_reorder_blocks_and_partition.
28068         * dbxout.c (dbxout_function_end): Likewise.
28069         * dwarf2out.c (gen_subprogram_die): Likewise.
28070         * haifa-sched.c (sched_create_recovery_edges): Likewise.
28071         * hw-doloop.c (reorg_loops): Likewise.
28072         * varasm.c (assemble_start_function,
28073         assemble_end_function): Likewise.
28074         (decide_function_section): Do not check for
28075         flag_reorder_blocks_and_partition.
28076
28077 2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>
28078
28079         * tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
28080         New function.
28081         (chkp_get_hard_register_fake_addr_expr): Ditto.
28082         (chkp_build_addr_expr): Add check for hard reg case.
28083         (chkp_parse_array_and_component_ref): Ditto.
28084         (chkp_find_bounds_1): Ditto.
28085         (chkp_process_stmt): Don't generate bounds store for
28086         hard reg case.
28087
28088 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28089
28090         * predict.c (maybe_hot_bb_p): Do not check profile status.
28091         (maybe_hot_edge_p): Likewise.
28092         (probably_never_executed): Check for zero counts even if profile
28093         is not read.
28094         (unlikely_executed_edge_p): New function.
28095         (unlikely_executed_stmt_p): New function.
28096         (unlikely_executed_bb_p): New function.
28097         (set_even_probabilities): Use unlikely predicates.
28098         (combine_predictions_for_bb): Likewise.
28099         (predict_paths_for_bb): Likewise.
28100         (predict_paths_leading_to_edge): Likewise.
28101         (determine_unlikely_bbs): New function.
28102         (estimate_bb_frequencies): Use it.
28103         (compute_function_frequency): Use zero counts even if profile is
28104         not read.
28105         * profile-count.h: Fix typo.
28106
28107 2017-08-08  Julia Koval  <julia.koval@intel.com>
28108
28109         * config/i386/avx512bwintrin.h (_mm512_mask_cvtepi16_storeu_epi8,
28110         _mm512_mask_cvtsepi16_storeu_epi8,
28111         _mm512_mask_cvtusepi16_storeu_epi8): New intrinsics.
28112         * config/i386/avx512vlbwintrin.h (_mm256_mask_cvtepi16_storeu_epi8,
28113         _mm_mask_cvtsepi16_storeu_epi8, _mm256_mask_cvtsepi16_storeu_epi8,
28114         _mm_mask_cvtusepi16_storeu_epi8, _mm256_mask_cvtusepi16_storeu_epi8,
28115         _mm_mask_cvtepi16_storeu_epi8): New intrinsics.
28116         * config/i386/i386-builtin-types.def (PV8Q, V8QI): New pointer type.
28117         (VOID_FTYPE_PV32QI_V32HI_USI, VOID_FTYPE_PV8QI_V8HI_UQI,
28118         VOID_FTYPE_PV16QI_V16HI_UHI): New function types.
28119         * config/i386/i386-builtin.def (__builtin_ia32_pmovwb128mem_mask,
28120         __builtin_ia32_pmovwb256mem_mask, __builtin_ia32_pmovswb128mem_mask,
28121         __builtin_ia32_pmovswb256mem_mask, __builtin_ia32_pmovuswb128mem_mask,
28122         __builtin_ia32_pmovuswb256mem_mask,
28123         __builtin_ia32_pmovuswb512mem_mask, __builtin_ia32_pmovswb512mem_mask)
28124         __builtin_ia32_pmovwb512mem_mask): New builtins.
28125
28126 2017-08-08  Julia Koval  <julia.koval@intel.com>
28127
28128         PR target/73350,80862
28129         * config/i386/subst.md (round): Fix round pattern.
28130         * config/i386/i386.c (ix86_erase_embedded_rounding):
28131         Fix erasing rounding for the fixed pattern.
28132
28133 2017-06-08  Jan Hubicka  <hubicka@ucw.cz>
28134
28135         * cfgbuild.c (find_many_sub_basic_blocks): Fix thinko.
28136
28137 2017-06-08  Martin Liska  <mliska@suse.cz>
28138
28139         PR gcov-profile/80911
28140         * gcov.c (block_info::block_info): New constructor.
28141
28142 2017-06-07  Carl Love  <cel@us.ibm.com>
28143
28144         * config/rs6000/rs6000-c: The return type of the following
28145         built-in functions was implemented as int not long long.  Fix sign
28146         of return value for the unsigned version of vec_mulo and vec_mule.
28147         vector unsigned long long vec_bperm (vector unsigned long long,
28148                                              vector unsigned char)
28149         vector signed long long vec_mule (vector signed int,
28150                                           vector signed int)
28151         vector unsigned long long vec_mule (vector unsigned int,
28152                                             vector unsigned int)
28153         vector signed long long vec_mulo (vector signed int,
28154                                           vector signed int)
28155         vector unsigned long long vec_mulo (vector unsigned int,
28156                                             vector unsigned int)
28157         * doc/extend.texi: Fix the documentation for the built-in
28158         functions.
28159
28160 2017-06-07  Carl Love  <cel@us.ibm.com>
28161
28162         PR target/80982
28163         * config/rs6000/altivec.md (double<mode>2): Fix the implementation of
28164         for BE.
28165
28166 2017-06-07  Carl Love  <cel@us.ibm.com>
28167
28168         * config/rs6000/altivec.md: Fix argument swizzle in vec_doublel
28169         support, Generate       doublehv for signed int/float for BE case only.
28170
28171 2017-06-07  Alexander Monakov  <amonakov@ispras.ru>
28172
28173         * doc/invoke.texi (mcx16): Rewrite.
28174
28175 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28176
28177         * config/rs6000/predicates.md (rs6000_nonimmediate_operand): Delete.
28178         * config/rs6000/rs6000.md (*movsi_internal1, movsi_from_sf,
28179         *mov<mode>_softfloat, and an anonymous splitter): Use
28180         nonimmediate_operand instead of rs6000_nonimmediate_operand.
28181
28182 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28183
28184         * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE_ACC and
28185         SPEFSCR registers.
28186         * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
28187         (enum rs6000_reg_type): Delete SPE_ACC_TYPE and SPEFSCR_REG_TYPE.
28188         (rs6000_debug_reg_global): Adjust.
28189         (rs6000_init_hard_regno_mode_ok): Adjust.
28190         (rs6000_dbx_register_number): Adjust.
28191         * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change to 115.
28192         (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
28193         Remove SPE_ACC and SPEFSCR.
28194         (REG_ALLOC_ORDER): Ditto.
28195         (FRAME_POINTER_REGNUM): Change to 111.
28196         (enum reg_class): Remove the SPE_ACC and SPEFSCR registers.
28197         (REG_CLASS_NAMES): Ditto.
28198         (REG_CLASS_CONTENTS): Delete the SPE_ACC and SPEFSCR registers.
28199         (REGISTER_NAMES): Ditto.
28200         (ADDITIONAL_REG_NAMES): Ditto.
28201         (rs6000_reg_names): Ditto.
28202         * config/rs6000/rs6000.md: Renumber some register number
28203         define_constants.
28204
28205 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28206
28207         * config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE high
28208         registers.
28209         * config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
28210         * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change from 149
28211         to 117.
28212         (DWARF_REG_TO_UNWIND_COLUMN): Do not define.
28213         (FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
28214         Delete the SPE high registers.
28215         (REG_ALLOC_ORDER): Ditto.
28216         (enum reg_class): Remove SPE_HIGH_REGS.
28217         (REG_CLASS_NAMES): Ditto.
28218         (REG_CLASS_CONTENTS): Delete the SPE high registers.
28219         (REGISTER_NAMES): Ditto.
28220         (rs6000_reg_names): Ditto.
28221         * doc/tm.texi.in: Remove SPE as example.
28222         * doc/tm.texi: Regenerate.
28223
28224 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28225
28226         * config/rs6000/8540.md (ppc8540_brinc): Delete.
28227         * config/rs6000/e500mc.md (e500mc_brinc): Delete.
28228         * config/rs6000/e500mc64.md (e500mc64_brinc): Delete.
28229         * config/rs6000/rs6000.md (type): Remove "brinc".
28230
28231 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28232
28233         * config.gcc (powerpc*-*-*): Don't add spe.h to extra_headers.
28234         (powerpc*-linux*spe*): Use ${cpu_type} instead of rs6000.
28235         * config/rs6000/linuxspe.h: Delete file.
28236         * config/rs6000/rs6000.md: Don't include spe.md.
28237         * config/rs6000/spe.h: Delete file.
28238         * config/rs6000/spe.md: Delete file.
28239         * config/rs6000/t-rs6000: Remove spe.md.
28240
28241 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28242
28243         * config/rs6000/predicates.md (reg_or_mem_operand): Reformat.
28244         (reg_or_none500mem_operand): Delete.
28245         * config/rs6000/rs6000.md (extendsfdf2): Use reg_or_mem_operand
28246         instead of reg_or_none500mem_operand.
28247
28248 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28249
28250         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
28251         handling of SPE flags.
28252         * config/rs6000/rs6000.opt (-mspe, -mspe=no, -mspe=yes): Delete.
28253
28254 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28255
28256         * config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
28257         SPE ABI handling.
28258         * config/rs6000/paired.md (paired_negv2sf2): Rename to negv2sf2.
28259         (paired_absv2sf2, paired_addv2sf3, paired_subv2sf3, paired_mulv2sf3,
28260         paired_divv2sf3): Similar.
28261         * config/rs6000/predicates.md: Replace TARGET_SPE, TARGET_SPE_ABI,
28262         SPE_VECTOR_MODE and SPE_HIGH_REGNO_P by 0; simplify.
28263         * config/rs6000/rs6000-builtin.def: Delete RS6000_BUILTIN_E and
28264         RS6000_BUILTIN_S.
28265         Delete BU_SPE_1, BU_SPE_2, BU_SPE_3, BU_SPE_E, BU_SPE_P, and BU_SPE_X.
28266         Rename the paired_* instruction patterns.
28267         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Do not
28268         define __SPE__.
28269         * config/rs6000/rs6000-protos.h (invalid_e500_subreg): Delete.
28270         * config/rs6000/rs6000.c: Delete RS6000_BUILTIN_E and RS6000_BUILTIN_S.
28271         (struct rs6000_stack): Delete fields spe_gp_save_offset, spe_gp_size,
28272         spe_padding_size, and spe_64bit_regs_used.  Replace TARGET_SPE and
28273         TARGET_SPE_ABI with 0, simplify.  Replace SPE_VECTOR_MODE with
28274         PAIRED_VECTOR_MODE.
28275         (struct machine_function): Delete field spe_insn_chain_scanned_p.
28276         (spe_func_has_64bit_regs_p): Delete.
28277         (spe_expand_predicate_builtin): Delete.
28278         (spe_expand_evsel_builtin): Delete.
28279         (TARGET_DWARF_REGISTER_SPAN): Do not define.
28280         (TARGET_MEMBER_TYPE_FORCES_BLK): Do not define.
28281         (invalid_e500_subreg): Delete.
28282         (rs6000_legitimize_address): Always force_reg op2 as well, for
28283         paired single memory accesses.
28284         (rs6000_member_type_forces_blk): Delete.
28285         (rs6000_spe_function_arg): Delete.
28286         (rs6000_expand_unop_builtin): Delete SPE handling.
28287         (rs6000_expand_binop_builtin): Ditto.
28288         (spe_expand_stv_builtin): Delete.
28289         (bdesc_2arg_spe): Delete.
28290         (spe_expand_builtin): Delete.
28291         (spe_expand_predicate_builtin): Delete.
28292         (spe_expand_evsel_builtin): Delete.
28293         (rs6000_invalid_builtin): Remove RS6000_BTM_SPE handling.
28294         (spe_init_builtins): Delete.
28295         (spe_func_has_64bit_regs_p): Delete.
28296         (savres_routine_name): Delete "info" parameter.  Adjust callers.
28297         (rs6000_emit_stack_reset): Ditto.
28298         (rs6000_dwarf_register_span): Delete.
28299         * config/rs6000/rs6000.h (TARGET_SPE_ABI, TARGET_SPE,
28300         UNITS_PER_SPE_WORD, SPE_HIGH_REGNO_P, SPE_SIMD_REGNO_P,
28301         SPE_VECTOR_MODE, RS6000_BTM_SPE, RS6000_BUILTIN_E, RS6000_BUILTIN_S):
28302         Delete.
28303         * config/rs6000/rs6000.md (FIRST_SPE_HIGH_REGNO, LAST_SPE_HIGH_REGNO):
28304         Delete.
28305         * config/rs6000/rs6000.opt (-mabi=spe, -mabi=no-spe): Delete.
28306         * config/rs6000/spe.md: Delete every pattern that uses TARGET_SPE.
28307         * config/rs6000/vector.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3,
28308         mulv2sf3, divv2sf3): Delete expanders.
28309
28310 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28311
28312         config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Delete.
28313
28314 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28315
28316         * config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit): Delete.
28317         * config/rs6000/rs6000.c: Ditto.
28318
28319 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28320
28321         * config/rs6000/predicated.md (rs6000_cbranch_operator): Delete.
28322         * config/rs6000/rs6000.md: Replace rs6000_cbranch_operator by
28323         comparison_operator.
28324
28325 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28326
28327         * config/rs6000/rs6000.c: Remove everything related to -mfloat-gprs.
28328         * config/rs6000/rs6000.opt: Ditto.
28329         * config/rs6000/t-rtems: Ditto.
28330
28331 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28332
28333         * config/rs6000/predicates.md: Replace TARGET_E500_DOUBLE and
28334         TARGET_E500_SINGLE by 0, simplify.
28335         * config/rs6000/rs6000.c: Ditto.
28336         (rs6000_option_override_internal): Delete CHECK_E500_OPTIONS.
28337         (spe_build_register_parallel): Delete.
28338         * config/rs6000/rs6000.h: Delete TARGET_E500_SINGLE,
28339         TARGET_E500_DOUBLE, and CHECK_E500_OPTIONS.
28340         * config/rs6000/rs6000.md: Replace TARGET_E500_DOUBLE,
28341         TARGET_E500_SINGLE, and <E500_CONVERT> by 0, simplify.
28342         (E500_CONVERT): Delete.
28343         * config/rs6000/spe.md: Remove many patterns and all define_constants.
28344
28345 2017-06-07  Segher Boessenkool  <segher@kernel.crashing.org>
28346
28347         * config/rs6000/darwin.md: Replace TARGET_FPRS by 1 and simplify.
28348         * config/rs6000/dfp.md: Ditto.
28349         (negdd2, *negdd2_fpr): Merge.
28350         (absdd2, *absdd2_fpr): Merge.
28351         (negtd2, *negtd2_fpr): Merge.
28352         (abstd2, *abstd2_fpr): Merge.
28353         * config/rs6000/e500.h: Delete file.
28354         * config/rs6000/predicates.md (rs6000_cbranch_operator): Replace
28355         TARGET_FPRS by 1 and simplify.
28356         * config/rs6000/rs6000-c.c: Ditto.
28357         * config/rs6000/rs6000.c: Ditto.  Also replace TARGET_SF_SPE and
28358         TARGET_DF_SPE by 0.
28359         * config/rs6000/rs6000.h: Ditto.  Delete TARGET_SF_SPE and
28360         TARGET_DF_SPE.
28361         * config/rs6000/rs6000.md: Ditto.
28362         (floatdidf2, *floatdidf2_fpr): Merge.
28363         (move_from_CR_gt_bit): Delete.
28364         * config/rs6000/spe.md: Replace TARGET_FPRS by 1 and simplify.
28365         (E500_CR_IOR_COMPARE): Delete.
28366         (All patterns that require !TARGET_FPRS): Delete.
28367         * config/rs6000/vsx.md: Replace TARGET_FPRS by 1 and simplify.
28368
28369 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28370
28371         * passes.def (pass_iv_canon): Move before pass_loop_distribution.
28372
28373 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28374
28375         * graphds.c (add_edge): Intitialize edge's attached data.
28376         (foll_in_subgraph, dfs_fst_edge, dfs_next_edge): New function
28377         pointer parameter.  Call pointed function on each edge during
28378         graph traversing.  Skip traversing the edge when the function
28379         returns true.
28380         (graphds_dfs, graphds_scc): Ditto.
28381         (for_each_edge): New parameter.  Pass the new parameter to callback
28382         function.
28383         * graphds.h (skip_edge_callback): New function pointer type.
28384         (graphds_dfs, graphds_scc): New function pointer parameter.
28385         (graphds_edge_callback, for_each_edge): New parameter.
28386
28387 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28388
28389         * tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Factor
28390         out code checking if runtime alias check is possible to below ...
28391         Call the new function.
28392         * tree-data-ref.c (runtime_alias_check_p): ... to new function.
28393         * tree-data-ref.h (runtime_alias_check_p): New decalaration.
28394
28395 2017-06-07  Marek Polacek  <polacek@redhat.com>
28396
28397         PR sanitizer/80932
28398         * fold-const.c (extract_muldiv_1) <case MINUS_EXPR>: Add
28399         TYPE_OVERFLOW_WRAPS check.
28400
28401 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28402
28403         * tree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop
28404         if versioning is required.
28405         * tree-vect-loop.c (vect_analyze_loop_2): Merge niter check for loop
28406         peeling with the check for versioning.
28407
28408 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28409
28410         * tree-vectorizer.h (vect_build_loop_niters): New parameter.
28411         * tree-vect-loop-manip.c (vect_build_loop_niters): New parameter.
28412         Set true to new parameter if new ssa variable is defined.
28413         (vect_gen_vector_loop_niters): Refactor.  Set range information
28414         for the new vector loop bound variable.
28415         (vect_do_peeling): Ditto.
28416
28417 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28418
28419         * tree-affine.c (ssa.h): Include header file.
28420         (tree_to_aff_combination): Handle (T1)(X - CST) when inner type
28421         has wrapping overflow behavior.
28422
28423 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28424
28425         * tree-affine.c (tree_to_aff_combination): Handle (T1)(X + X).
28426
28427 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28428
28429         (aff_combination_expand): Move (T1)(X *+- CST) simplification to ...
28430         (tree_to_aff_combination): ... here.
28431
28432 2017-06-07  Bin Cheng  <bin.cheng@arm.com>
28433
28434         * tree-ssa-loop-ivopts.c (ivopts_estimate_reg_pressure): New
28435         reg_pressure model function.
28436         (ivopts_global_cost_for_size): Delete.
28437         (determine_set_costs, iv_ca_recount_cost): Call new model function
28438         ivopts_estimate_reg_pressure.
28439
28440 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
28441
28442         * config/aarch64/aarch64.c (aarch64_rtx_costs): Make sdiv more
28443         expensive than udiv.  Remove floating point cases from mod.
28444
28445 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
28446
28447         * config/arm/aarch-cost-tables.h (cortexa53_extra_cost):
28448         Increase idiv cost.
28449
28450 2017-06-07  Tamar Christina  <tamar.christina@arm.com>
28451
28452         * config/aarch64/aarch64.md
28453         (copysignsf3): Fix mask generation.
28454
28455 2017-06-07  Jakub Jelinek  <jakub@redhat.com>
28456
28457         * dumpfile.h (enum tree_dump_index): Rename TDI_generic to
28458         TDI_gimple.
28459         (class dump_manager): Add register_dumps method.
28460         * dumpfile.c: Include langhooks.h.
28461         (dump_files): Use 0 instead of 3/4/5 for TDI_{original,gimple,nested}.
28462         (FIRST_AUTO_NUMBERED_DUMP): Decrease to 1.
28463         (FIRST_ME_AUTO_NUMBERED_DUMP): Define.
28464         (dump_manager::dump_register): Start with 512 entries instead of 32.
28465         (dump_manager::register_dumps): New method.
28466         * toplev.c (general_init): Instead of invoking register_dumps
28467         langhook, invoke register_dumps method on the dump manager.
28468         * gimplify.c (gimplify_function_tree): Use TDI_gimple instead of
28469         TDI_generic.
28470
28471 2017-06-07  Richard Sandiford  <richard.sandiford@linaro.org>
28472
28473         * doc/md.texi: Clarify the restrictions on a define_insn condition.
28474         Say that # requires an associated define_split to exist, and that
28475         the define_split must be suitable for use after register allocation.
28476
28477 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28478
28479         * cfgbuild.c (find_bb_boundaries): Initialize profile of split blocks.
28480         (compute_outgoing_frequencies): Also initialize zero counts.
28481         (find_many_sub_basic_blocks): Do not produce uninitialized profile
28482         around loops; preserve more of profile when nothing changes.
28483
28484 2017-06-06  Jim Wilson  <jim.wilson@linaro.org>
28485
28486         * config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs): Move to
28487         here.
28488         * config/arm/aarch-cost-tables.h (qdf24xx_extra_costs): From here.
28489         * config/arm/arm-cpu-cdata.h: Regenerate.
28490         * config/arm/arm-cpu-data.h, config/arm/arm-cpu.h: Likewise.
28491         * config/arm/arm-tables.opt, config/arm/arm-tune.md: Likewise.
28492         * config/arm/arm-cpus.in: Delete falkor and qdf24xx entries.
28493         * config/arm/arm.c (arm_qdf24xx_tune): Delete.
28494         * config/arm/bpabi.h (BE8_LINK_SPEC): Delete falkor and qdf24xx
28495         support.
28496         * config/arm/t-aprofile (MULTILIB_MATCHES): Delete falkor and qdf24xx
28497         support.
28498         * config/arm/t-rmprofile: Likewise.
28499         * doc/invoke.texi (ARM Options): Drop falkor and qdf24xx support.
28500
28501 2017-06-06  David S. Miller  <davem@davemloft.net>
28502
28503         PR target/80968
28504         * config/sparc/sparc.c (sparc_expand_prologue): Emit frame
28505         blockage if function uses alloca.
28506
28507 2017-06-06  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
28508
28509         * tree-ssa-loop-prefetch.c (struct mem_ref_group, struct mem_ref):
28510         New "uid" fields to hold pretty-print IDs of group and ref.
28511         Memory references are now identified as <group_id>:<ref_id>
28512         instead of using [random] addresses.
28513         (dump_mem_details): Simplify, no functional change.
28514         (dump_mem_ref): Simplify and make output more concise.
28515         Replace couple of fprintf's throughout code with calls to dump_mem_ref.
28516         (find_or_create_group): Initialize group uid.
28517         (record_ref): Initialize ref uid.  Improve debug output.
28518         (prune_group_by_reuse, should_issue_prefetch_p,)
28519         (should_issue_prefetch_p, schedule_prefetches, issue_prefetch_ref,)
28520         (mark_nontemporal_store, determine_loop_nest_reuse):
28521         Improve debug output.
28522
28523 2017-06-06  Maxim Kuvyrkov  <maxim.kuvyrkov@linaro.org>
28524
28525         * dbgcnt.def (prefetch): New debug counter.
28526         * tree-ssa-loop-prefetch.c (dbgcnt.h): New include.
28527         (schedule_prefetches): Stop issueing prefetches if debug counter
28528         tripped.
28529
28530 2017-06-06  Tom de Vries  <tom@codesourcery.com>
28531
28532         * doc/sourcebuild.texi (Testsuites, C Language Testsuites,
28533         gcc.c-torture/compile): Remove mention of NO_LABEL_VALUES in fixme.
28534
28535 2017-06-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28536
28537         * config/aarch64/atomics.md (atomic_compare_and_swap<mode> expander):
28538         Use aarch64_reg_or_zero predicate for operand 4.
28539         (aarch64_compare_and_swap<mode> define_insn_and_split):
28540         Use aarch64_reg_or_zero predicate for operand 3.  Add 'Z' constraint.
28541         (aarch64_store_exclusive<mode>): Likewise for operand 2.
28542
28543 2017-06-06  Thomas Preud'homme  <thomas.preudhomme@arm.com>
28544
28545         * config/arm/arm.c (arm_compute_save_reg_mask): Rename into ...
28546         (arm_compute_save_core_reg_mask): This.
28547         (thumb1_compute_save_reg_mask): Rename into ...
28548         (thumb1_compute_save_core_reg_mask): This.
28549         (arm_compute_save_reg0_reg12_mask): Adapt comment.
28550         (arm_compute_frame_layout): Likewise.
28551
28552 2017-06-06  Richard Biener  <rguenther@suse.de>
28553
28554         PR tree-optimization/80974
28555         * tree-ssa-sccvn.c (set_ssa_val_to): Do not change but only
28556         keep or clear leaders SSA info.
28557
28558 2017-06-06  Tom de Vries  <tom@codesourcery.com>
28559
28560         * config/nvptx/nvptx.c (split_mode_p): New function.
28561         (nvptx_declare_function_name, nvptx_print_operand): Use split_mode_p.
28562
28563 2017-06-06  Tom de Vries  <tom@codesourcery.com>
28564
28565         * config/nvptx/nvptx.c (nvptx_print_operand): Use maybe_split_mode.
28566
28567 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28568
28569         PR bootstrap/80978
28570         * tree-cfg.c (execute_fixup_cfg): Fix condition on when to rescale
28571         profile.
28572
28573 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28574
28575         * shrink-wrap.c (handle_simple_exit): Update profile.
28576         (try_shrink_wrapping): Upate profile.
28577
28578 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28579
28580         * predict.c (tree_estimate_probability_bb): Add LOCAL_ONLY.
28581         (tree_guess_outgoing_edge_probabilities): New.
28582         * predict.h (tree_guess_outgoing_edge_probabilities): Declare.
28583         * tree-cfg.c (gimple_find_sub_bbs): Propagate profile.
28584
28585 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28586
28587         * ipa-split.c (split_function): Initialize return bb profile.
28588
28589 2017-06-06  Jan Hubicka  <hubicka@ucw.cz>
28590
28591         * profile.c (compute_branch_probabilities): Also initialize
28592         EXIT_BLOCK profile.
28593
28594 2017-06-06  Richard Biener  <rguenther@suse.de>
28595
28596         PR tree-optimization/80928
28597         * tree-vect-loop.c (vect_update_vf_for_slp): Amend dumps.
28598         (vect_analyze_loop_operations): Properly guard analysis for
28599         pure SLP case.
28600         (vect_transform_loop): Likewise.
28601         (vect_analyze_loop_2): Also reset SLP type on PHIs.
28602         (vect_model_induction_cost): Do not cost for pure SLP.
28603         (vectorizable_induction): Pass in SLP node, implement SLP vectorization
28604         of induction in inner loop vectorization.
28605         * tree-vect-slp.c (vect_create_new_slp_node): Handle PHIs.
28606         (vect_get_and_check_slp_defs): Handle vect_induction_def.
28607         (vect_build_slp_tree): Likewise.  Handle PHIs as terminating the
28608         recursion.
28609         (vect_analyze_slp_cost_1): Cost induction.
28610         (vect_detect_hybrid_slp_stmts): Handle PHIs.
28611         (vect_get_slp_vect_defs): Likewise.
28612         * tree-vect-stmts.c (vect_analyze_stmt): Handle induction.
28613         (vect_transform_stmt): Handle SLP reductions.
28614         * tree-vectorizer.h (vectorizable_induction): Adjust.
28615
28616 2017-06-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
28617
28618         * config/rs6000/rs6000.c (make_resolver_func): Update
28619         init_lowered_empty_function call.
28620
28621 2017-06-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>
28622
28623         * doc/invoke.texi: Document the -fprofile-abs-path option.
28624         * common.opt (fprofile-abs-path): New option.
28625         * gcov-io.h (gcov_write_filename): Declare.
28626         * gcov-io.c (gcov_write_filename): New function.
28627         * coverage.c (coverage_begin_function): Use gcov_write_filename.
28628         * profile.c (output_location): Likewise.
28629
28630 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28631
28632         * shring-wrap.c: Revert accidental commit.
28633
28634 2017-06-05  Volker Reichelt  <v.reichelt@netcologne.de>
28635
28636         * doc/invoke.texi (-Wduplicated-branches): Add to warning list.
28637
28638 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28639
28640         * cfgexpand.c (expand_gimple_tailcall): Initialize profile of
28641         new edge.
28642         * ipa-inline.c (want_inline_self_recursive_call_p): Watch for missing
28643         profile in callgraph edge.
28644         * profile-count.h (apply_probability): If THIS is 0, then result is 0
28645         (apply_scale): Likewise.
28646         * tree-inline.c (copy_bb, copy_edges_for_bb, copy_cfg_body):
28647         Also scale profile when inlining function with zero profile.
28648         (initialize_cfun): Update exit block profile even when it is zero.
28649         * tree-ssa-threadupdate.c (clear_counts_path): Handle correctly case
28650         when profile is read.
28651
28652 2017-06-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
28653
28654         * config/rs6000/rs6000.c (toplevel): Include attribs.h.
28655         (CLONE_*): New constants to define the processors we can generate
28656         code for with the target_clone attribute.
28657         (rs6000_clone_map): New array to identify which clone processors
28658         the current program is running on.
28659         (TARGET_COMPARE_VERSION_PRIORITY): Define to enable the
28660         target_clone attribute.
28661         (TARGET_GENERATE_VERSION_DISPATCHER_BODY): Likewise.
28662         (TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): Likewise.
28663         (TARGET_OPTION_FUNCTION_VERSIONS): Likewise.
28664         (cpu_expand_builtin): Add support for target_clone attribute.
28665         (rs6000_valid_attribute_p): Allow "default" attribute.
28666         (get_decl_name): New debug function to simplify printing the
28667         current function name in debugging statements.
28668         (rs6000_clone_priority): New functions to support the target_clone
28669         attribute, and be able to generate code to switch between ISA 2.05
28670         through ISA 3.0 (power6 through power9).
28671         (rs6000_compare_version_priority): Likewise.
28672         (rs6000_get_function_versions_dispatcher): Likewise.
28673         (make_resolver_func): Likewise.
28674         (add_condition_to_bb): Likewise.
28675         (dispatch_function_versions): Likewise.
28676         (rs6000_generate_version_dispatcher_body): Likewise.
28677         (rs6000_can_inline_p): Call get_decl_name for debugging usage.
28678         (fusion_gpr_load_p): Fix a spacing issue.
28679         * doc/extend.texi (Common Function Attributes): Document that the
28680         PowerPC supports the target_clone attribute.
28681
28682 2017-06-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>
28683
28684         * config/arm/arm.h: explain F symbol found in description of ARM
28685         register allocation in its legend.
28686
28687 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28688
28689         * config/mips/frame-header-opt.c: Include profile-count.h.
28690         * config/riscv/riscv.c: Include profile-count.h
28691
28692 2017-06-05  Jan Hubicka  <hubicka@ucw.cz>
28693
28694         * tree-ssa-loop-im.c (execute_sm_if_changed): Add FLAG_BBS parameter;
28695         update profile.
28696         (sm_set_flag_if_changed): Add bbs field.
28697         (execute_sm_if_changed_flag_set): Pass BBS.
28698         (execute_sm): Update.
28699
28700 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28701
28702         * config/aarch64/aarch64-simd.md (aarch64_store_lane0<mode>):
28703         New pattern.
28704
28705 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28706
28707         * config/aarch64/aarch64.md (sub<mode>3_compare1_imm): New define_insn.
28708         (peephole2): New peephole2 to emit the above.
28709         * config/aarch64/predicates.md (aarch64_sub_immediate): New predicate.
28710
28711 2017-06-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28712
28713         * config/aarch64/aarch64.c (define_peephole2 above
28714         *sub_<shift>_<mode>): New peephole.
28715
28716 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
28717
28718         * config/i386/i386.c (make_resolver_func): Update.
28719         * Makefile.in: Add profile-count.h and profile-count.o
28720         * auto-profile.c (afdo_indirect_call): Update to new API.
28721         (afdo_set_bb_count): Update.
28722         (afdo_propagate_edge): Update.
28723         (afdo_propagate_circuit): Update.
28724         (afdo_calculate_branch_prob): Update.
28725         (afdo_annotate_cfg): Update.
28726         * basic-block.h: Include profile-count.h
28727         (struct edge_def): Turn count to profile_count.
28728         (struct basic_block_def): Likewie.
28729         (REG_BR_PROB_BASE): Move to profile-count.h
28730         (RDIV): Move to profile-count.h
28731         * bb-reorder.c (max_entry_count): Turn to profile_count.
28732         (find_traces): Update.
28733         (rotate_loop):Update.
28734         (connect_traces):Update.
28735         (sanitize_hot_paths):Update.
28736         * bt-load.c (migrate_btr_defs): Update.
28737         * cfg.c (RDIV): Remove.
28738         (init_flow): Use alloc_block.
28739         (alloc_block): Uninitialize count.
28740         (unchecked_make_edge): Uninitialize count.
28741         (check_bb_profile): Update.
28742         (dump_edge_info): Update.
28743         (dump_bb_info): Update.
28744         (update_bb_profile_for_threading): Update.
28745         (scale_bbs_frequencies_int): Update.
28746         (scale_bbs_frequencies_gcov_type): Update.
28747         (scale_bbs_frequencies_profile_count): New.
28748         * cfg.h (update_bb_profile_for_threading): Update.
28749         (scale_bbs_frequencies_profile_count): Declare.
28750         * cfgbuild.c (compute_outgoing_frequencies): Update.
28751         (find_many_sub_basic_blocks): Update.
28752         * cfgcleanup.c (try_forward_edges): Update.
28753         (try_crossjump_to_edge): Update.
28754         * cfgexpand.c (expand_gimple_tailcall): Update.
28755         (construct_exit_block): Update.
28756         * cfghooks.c (verify_flow_info): Update.
28757         (dump_bb_for_graph): Update.
28758         (split_edge): Update.
28759         (make_forwarder_block): Update.
28760         (duplicate_block): Update.
28761         (account_profile_record): Update.
28762         * cfgloop.c (find_subloop_latch_edge_by_profile): Update.
28763         (get_estimated_loop_iterations): Update.
28764         * cfgloopanal.c (expected_loop_iterations_unbounded): Update.
28765         (single_likely_exit): Update.
28766         * cfgloopmanip.c (scale_loop_profile): Update.
28767         (loopify): Update.
28768         (set_zero_probability): Update.
28769         (lv_adjust_loop_entry_edge): Update.
28770         * cfgrtl.c (force_nonfallthru_and_redirect): Update.
28771         (purge_dead_edges): Update.
28772         (rtl_account_profile_record): Update.
28773         * cgraph.c (cgraph_node::create): Uninitialize count.
28774         (symbol_table::create_edge): Uninitialize count.
28775         (cgraph_update_edges_for_call_stmt_node): Update.
28776         (cgraph_edge::dump_edge_flags): Update.
28777         (cgraph_node::dump): Update.
28778         (cgraph_edge::maybe_hot_p): Update.
28779         * cgraph.h: Include profile-count.h
28780         (create_clone), create_edge, create_indirect_edge): Update.
28781         (cgraph_node): Turn count to profile_count.
28782         (cgraph_edge0: Likewise.
28783         (make_speculative, clone): Update.
28784         (create_edge): Update.
28785         (init_lowered_empty_function): Update.
28786         * cgraphclones.c (cgraph_edge::clone): Update.
28787         (duplicate_thunk_for_node): Update.
28788         (cgraph_node::create_clone): Update.
28789         * cgraphunit.c (cgraph_node::analyze): Update.
28790         (cgraph_node::expand_thunk): Update.
28791         * final.c (dump_basic_block_info): Update.
28792         * gimple-streamer-in.c (input_bb): Update.
28793         * gimple-streamer-out.c (output_bb): Update.
28794         * graphite.c (print_global_statistics): Update.
28795         (print_graphite_scop_statistics): Update.
28796         * hsa-brig.c: Include basic-block.h.
28797         * hsa-dump.c: Include basic-block.h.
28798         * hsa-gen.c (T sum_slice): Update.
28799         (convert_switch_statements):Update.
28800         * hsa-regalloc.c: Include basic-block.h.
28801         * ipa-chkp.c (chkp_produce_thunks): Update.
28802         * ipa-cp.c (struct caller_statistics): Update.
28803         (init_caller_stats): Update.
28804         (gather_caller_stats): Update.
28805         (ipcp_cloning_candidate_p): Update.
28806         (good_cloning_opportunity_p): Update.
28807         (get_info_about_necessary_edges): Update.
28808         (dump_profile_updates): Update.
28809         (update_profiling_info): Update.
28810         (update_specialized_profile): Update.
28811         (perhaps_add_new_callers): Update.
28812         (decide_about_value): Update.
28813         (ipa_cp_c_finalize): Update.
28814         * ipa-devirt.c (struct odr_type_warn_count): Update.
28815         (struct decl_warn_count): Update.
28816         (struct final_warning_record): Update.
28817         (possible_polymorphic_call_targets): Update.
28818         (ipa_devirt): Update.
28819         * ipa-fnsummary.c (redirect_to_unreachable): Update.
28820         * ipa-icf.c (sem_function::merge): Update.
28821         * ipa-inline-analysis.c (do_estimate_edge_time): Update.
28822         * ipa-inline.c (compute_uninlined_call_time): Update.
28823         (compute_inlined_call_time): Update.
28824         (want_inline_small_function_p): Update.
28825         (want_inline_self_recursive_call_p): Update.
28826         (edge_badness): Update.
28827         (lookup_recursive_calls): Update.
28828         (recursive_inlining): Update.
28829         (inline_small_functions): Update.
28830         (dump_overall_stats): Update.
28831         (dump_inline_stats): Update.
28832         * ipa-profile.c (ipa_profile_generate_summary): Update.
28833         (ipa_propagate_frequency): Update.
28834         (ipa_profile): Update.
28835         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
28836         * ipa-utils.c (ipa_merge_profiles): Update.
28837         * loop-doloop.c (doloop_modify): Update.
28838         * loop-unroll.c (report_unroll): Update.
28839         (unroll_loop_runtime_iterations): Update.
28840         * lto-cgraph.c (lto_output_edge): Update.
28841         (lto_output_node): Update.
28842         (input_node): Update.
28843         (input_edge): Update.
28844         (merge_profile_summaries): Update.
28845         * lto-streamer-in.c (input_cfg): Update.
28846         * lto-streamer-out.c (output_cfg): Update.
28847         * mcf.c (create_fixup_graph): Update.
28848         (adjust_cfg_counts): Update.
28849         (sum_edge_counts): Update.
28850         * modulo-sched.c (sms_schedule): Update.
28851         * postreload-gcse.c (eliminate_partially_redundant_load): Update.
28852         * predict.c (maybe_hot_count_p): Update.
28853         (probably_never_executed): Update.
28854         (dump_prediction): Update.
28855         (combine_predictions_for_bb): Update.
28856         (propagate_freq): Update.
28857         (handle_missing_profiles): Update.
28858         (counts_to_freqs): Update.
28859         (rebuild_frequencies): Update.
28860         (force_edge_cold): Update.
28861         * predict.h: Include profile-count.h
28862         (maybe_hot_count_p, counts_to_freqs): UPdate.
28863         * print-rtl-function.c: Do not include cfg.h
28864         * print-rtl.c: Include basic-block.h
28865         * profile-count.c: New file.
28866         * profile-count.h: New file.
28867         * profile.c (is_edge_inconsistent): Update.
28868         (correct_negative_edge_counts): Update.
28869         (is_inconsistent): Update.
28870         (set_bb_counts): Update.
28871         (read_profile_edge_counts): Update.
28872         (compute_frequency_overlap): Update.
28873         (compute_branch_probabilities): Update; Initialize and deinitialize
28874         gcov_count tables.
28875         (branch_prob): Update.
28876         * profile.h (bb_gcov_counts, edge_gcov_counts): New.
28877         (edge_gcov_count): New.
28878         (bb_gcov_count): New.
28879         * shrink-wrap.c (try_shrink_wrapping): Update.
28880         * tracer.c (better_p): Update.
28881         * trans-mem.c (expand_transaction): Update.
28882         (ipa_tm_insert_irr_call): Update.
28883         (ipa_tm_insert_gettmclone_call): Update.
28884         * tree-call-cdce.c: Update.
28885         * tree-cfg.c (gimple_duplicate_sese_region): Update.
28886         (gimple_duplicate_sese_tail): Update.
28887         (gimple_account_profile_record): Update.
28888         (execute_fixup_cfg): Update.
28889         * tree-inline.c (copy_bb): Update.
28890         (copy_edges_for_bb): Update.
28891         (initialize_cfun): Update.
28892         (freqs_to_counts): Update.
28893         (copy_cfg_body): Update.
28894         (expand_call_inline): Update.
28895         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Update.
28896         * tree-ssa-loop-ivcanon.c (unloop_loops): Update.
28897         (try_unroll_loop_completely): Update.
28898         (try_peel_loop): Update.
28899         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Update.
28900         * tree-ssa-loop-niter.c (estimate_numbers_of_iterations_loop): Update.
28901         * tree-ssa-loop-split.c (connect_loops): Update.
28902         * tree-ssa-loop-unswitch.c (hoist_guard): Update.
28903         * tree-ssa-reassoc.c (branch_fixup): Update.
28904         * tree-ssa-tail-merge.c (replace_block_by): Update.
28905         * tree-ssa-threadupdate.c (create_block_for_threading): Update.
28906         (compute_path_counts): Update.
28907         (update_profile): Update.
28908         (recompute_probabilities): Update.
28909         (update_joiner_offpath_counts): Update.
28910         (estimated_freqs_path): Update.
28911         (freqs_to_counts_path): Update.
28912         (clear_counts_path): Update.
28913         (ssa_fix_duplicate_block_edges): Update.
28914         (duplicate_thread_path): Update.
28915         * tree-switch-conversion.c (case_bit_test_cmp): Update.
28916         (struct switch_conv_info): Update.
28917         * tree-tailcall.c (decrease_profile): Update.
28918         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Update.
28919         * tree-vect-loop.c (scale_profile_for_vect_loop): Update.
28920         * value-prof.c (check_counter): Update.
28921         (gimple_divmod_fixed_value): Update.
28922         (gimple_mod_pow2): Update.
28923         (gimple_mod_subtract): Update.
28924         (gimple_ic_transform): Update.
28925         (gimple_stringop_fixed_value): Update.
28926         * value-prof.h (gimple_ic): Update.
28927
28928 2017-06-02  Carl Love  <cel@us.ibm.com>
28929
28930         * config/rs6000/rs6000-c: Add support for built-in functions
28931         vector double vec_doublee (vector signed int);
28932         vector double vec_doublee (vector unsigned int);
28933         vector double vec_doublee (vector float);
28934         vector double vec_doubleh (vector signed int);
28935         vector double vec_doubleh (vector unsigned int);
28936         vector double vec_doubleh (vector float);
28937         vector double vec_doublel (vector signed int);
28938         vector double vec_doublel (vector unsigned int);
28939         vector double vec_doublel (vector float);
28940         vector double vec_doubleo (vector signed int);
28941         vector double vec_doubleo (vector unsigned int);
28942         vector double vec_doubleo (vector float);.
28943         * config/rs6000/rs6000-builtin.def: Add definitions for DOUBLEE,
28944         DOUBLEO, DOUBLEH, DOUBLEL, UNS_DOUBLEO, UNS_DOUBLEE, UNS_DOUBLEH,
28945         UNS_DOUBLEL.
28946         * config/rs6000/altivec.md: Add code generator for doublee<mode>2,
28947         unsdoubleev4si2, doubleo<mode>2, unsdoubleov4si2, doubleh<mode>2,
28948         unsdoublehv4si2, doublel<mode>2, unsdoublelv4si2, add mode attribute
28949         VS_sxwsp.
28950         * config/rs6000/altivec.h: Add define for vec_doublee, vec_doubleo,
28951         vec_doublel, vec_doubleh.
28952         * doc/extend.texi: Update the built-in documentation file for the
28953         new built-in functions.
28954
28955 2017-06-02  David Malcolm  <dmalcolm@redhat.com>
28956
28957         PR jit/80954
28958         * ipa-inline-analysis.c (free_growth_caches): Set
28959         edge_removal_hook_holder to NULL after removing it.
28960
28961 2017-06-02  Sudakshina Das  <sudi.das@arm.com>
28962
28963         * config/aarch64/aarch64.c (aarch64_select_cc_mode): Return CC_SWP for
28964         comparision with zero.
28965
28966 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
28967         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
28968         for early expansion of vec_min and vec_max builtins.
28969         (builtin_function_type): Add min/max unsigned variants to those
28970         identified as having unsigned arguments.
28971
28972 2017-06-02  Olivier Hainque  <hainque@adacore.com>
28973
28974         * config/vx-common.h (DWARF_UNWIND_INFO): Switch #define to 1.
28975
28976 2017-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28977
28978         * config/aarch64/aarch64-simd.md (*aarch64_simd_vec_copy_lane<mode>):
28979         Use VALL_F16 iterator rather than VALL.
28980
28981 2017-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
28982
28983         * config/aarch64/aarch64.c (aarch64_split_compare_and_swap):
28984         Emit CBNZ inside loop when doing a strong exchange and comparing
28985         against zero.  Generate the CC flags after the loop.
28986
28987 2017-06-02  David Edelsohn  <dje.gcc@gmail.com>
28988
28989         * dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE_STR): New.
28990         (dl_section_ref): New.
28991         (dwarf2out_finish): Copy debug_line_section_label to dl_section_ref.
28992         On AIX, append an expression to subtract the size of the
28993         section length to dl_section_ref.
28994
28995 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
28996
28997         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
28998         for early expansion of vector absolute builtins.
28999
29000 2017-06-02  Richard Biener  <rguenther@suse.de>
29001
29002         * tree-vect-slp.c (vect_detect_hybrid_slp_2): Match up
29003         what we consider a relevant use stmt with vect_detect_hybrid_slp_stmts.
29004
29005 2017-06-02  Richard Biener  <rguenther@suse.de>
29006
29007         PR tree-optimization/80948
29008         * tree-tailcall.c (find_tail_calls): Track stmts to move in
29009         stmt order as well.
29010
29011 2017-06-02  Richard Biener  <rguenther@suse.de>
29012
29013         * tree-vect-loop.c (vect_analyze_loop_operations): Not relevant
29014         PHIs are ok.
29015         * tree-vect-stmts.c (process_use): Do not mark backedge defs
29016         for inductions as relevant.
29017
29018 2017-06-02  Richard Biener  <rguenther@suse.de>
29019
29020         * tree-vect-loop.c (get_initial_def_for_induction): Inline into ...
29021         (vectorizable_induction): ... this.  Remove dead code.
29022
29023 2017-06-02  Eric Botcazou  <ebotcazou@adacore.com>
29024
29025         * builtins. (expand_builtin_alloca): Remove second parameter and
29026         infer its value from the first parameter instead.
29027         (expand_builtin) <BUILT_IN_ALLOCA>: Adjust call to above.
29028
29029 2017-06-02  Jakub Jelinek  <jakub@redhat.com>
29030
29031         PR rtl-optimization/80903
29032         * loop-doloop.c (add_test): Unshare sequence.
29033
29034 2017-06-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
29035
29036         * doc/invoke.texi: Document the -Wsizeof-pointer-div warning.
29037
29038 2017-06-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
29039
29040         * config/i386/i386.c (x86_64_ms_sysv_extra_clobbered_registers): Make
29041         static.
29042         (xlogue_layout::get_stack_space_used, xlogue_layout::s_instances,
29043         xlogue_layout::get_instance, logue_layout::xlogue_layout,
29044         sp_valid_at, fp_valid_at, choose_basereg): Formatting.
29045         (xlogue_layout::get_stub_rtx): Make static.
29046         (xlogue_layout::get_stub_name): Avoid const-cast, make static.
29047         (xlogue_layout::compute_stub_managed_regs): Rename to...
29048         (xlogue_layout::count_stub_managed_regs): ...this.
29049         (xlogue_layout::is_stub_managed_reg): New function.
29050         (xlogue_layout::m_stub_names): Rename to...
29051         (xlogue_layout::s_stub_names): ...this, make static.
29052         (xlogue_layout::STUB_INDEX_OFFSET, xlogue_layout::MIN_REGS,
29053         xlogue_layout::MAX_REGS, xlogue_layout::MAX_EXTRA_REGS,
29054         xlogue_layout::VARIANT_COUNT, xlogue_layout::STUB_NAME_MAX_LEN,
29055         xlogue_layout::s_stub_names): Instantiate statics.
29056         (stub_managed_regs): Remove.
29057         (ix86_save_reg): Use xlogue_layout::compute_stub_managed_regs.
29058         (disable_call_ms2sysv_xlogues): Rename to...
29059         (warn_once_call_ms2sysv_xlogues): ...this, and warn only once.
29060         (ix86_initial_elimination_offset, ix86_expand_call): Fix call_ms2sysv
29061         warning logic.
29062         (ix86_static_chain): Make sure that ix86_static_chain_on_stack can't
29063         change after reload_completed.
29064         (ix86_can_use_return_insn_p): Use the ix86_frame data structure
29065         directly.
29066         (ix86_expand_prologue): Likewise.
29067         (ix86_expand_epilogue): Likewise.
29068         (ix86_expand_split_stack_prologue): Likewise.
29069         (ix86_compute_frame_layout): Remove frame parameter ...
29070         (TARGET_COMPUTE_FRAME_LAYOUT): ... and export it as a target hook.
29071         (ix86_finalize_stack_realign_flags): Call ix86_compute_frame_layout
29072         only if necessary.
29073         (ix86_init_machine_status): Don't set use_fast_prologue_epilogue_nregs.
29074         (ix86_frame): Move from here ...
29075         * config/i386/i386.h (ix86_frame): ... to here.
29076         (machine_function): Remove use_fast_prologue_epilogue_nregs, cache the
29077         complete ix86_frame data structure instead.  Remove some_ld_name.
29078
29079 2017-06-01  Pierre-Marie de Rodat  <derodat@adacore.com>
29080
29081         * dwarf2out.c (dwarf2out_late_global_decl): Add locations for
29082         symbols that hold a DECL_VALUE_EXPR.
29083
29084 2017-06-01  Martin Jambor  <mjambor@suse.cz>
29085
29086         PR tree-optimization/80898
29087         * tree-sra.c (process_subtree_disqualification): Removed.
29088         (disqualify_candidate): Do not acll
29089         process_subtree_disqualification.
29090         (subtree_mark_written_and_enqueue): New function.
29091         (propagate_all_subaccesses): Set grp_write of LHS subtree if the
29092         RHS has been disqualified and re-queue LHS if necessary.  Apart
29093         from that, ignore disqualified RHS.
29094
29095 2017-06-01  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
29096
29097         * config/s390/s390.c (s390_emit_epilogue): Disable early return
29098         address fetch for z10 or later.
29099
29100 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29101
29102         * config/arc/arc.md (tst_movb): Add guard when splitting.
29103
29104 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29105
29106         * config/arc/arc.c (arc_can_eliminate): Test against
29107         arc_frame_pointer_needed.
29108
29109 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29110
29111         * config/arc/arc.c (arc_expand_prologue): Emit a special barrier
29112         to prevent store reordering.
29113         * config/arc/arc.md (UNSPEC_ARC_STKTIE): Define.
29114         (type): Add block type.
29115         (stack_tie): Define special instruction to be used in
29116         expand_prologue.
29117
29118 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29119
29120         * config/arc/arc.md (commutative_binary_comparison): Remove 'I'
29121         constraint. It is not valid for the pattern.
29122         (noncommutative_binary_comparison): Likewise.
29123
29124 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29125
29126         * config/arc/simdext.md (movv2hi_insn): Change predicate to avoid
29127         scaled addresses.
29128
29129 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29130
29131         * config/arc/arc.c (arc_conditional_register_usage): Allow r30 to
29132         be used by the reg-alloc.
29133
29134 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29135
29136         * config/arc/arc.md (mulsi3): Avoid use of hard registers before
29137         reg-alloc when having mul64 or mul32x16 instructions.
29138         (mulsidi3): Likewise.
29139         (umulsidi3): Likewise.
29140         (mulsi32x16): New pattern.
29141         (mulsi64): Likewise.
29142         (mulsidi64): Likewise.
29143         (umulsidi64): Likewise.
29144         (MUL32x16_REG): Define.
29145         (mul64_600): Use MUL32x16_REG.
29146         (mac64_600): Likewise.
29147         (umul64_600): Likewise.
29148         (umac64_600): Likewise.
29149
29150 2017-06-01  Claudiu Zissulescu  <claziss@synopsys.com>
29151
29152         * config/arc/arc.md (mulsi3_700): Make it commutative.
29153
29154 2017-06-01  Jose E. Marchesi  <jose.marchesi@oracle.com>
29155
29156         * config/sparc/sparc.md (*zero_extendsidi2_insn_sp64): Set insn
29157         type for movstouw.
29158         (*sign_extendsidi2_insn): Likewise for movstosw.
29159
29160 2017-06-01  Pierre-Marie de Rodat  <derodat@adacore.com>
29161
29162         * dwarf2out.c (get_discr_value): Call the get_debug_type hook on
29163         the type of the input discriminant value.  Convert the
29164         discriminant value of signedness vary.
29165
29166 2017-06-01  Volker Reichelt  <v.reichelt@netcologne.de>
29167
29168         * doc/invoke.texi (-Wcatch-value): Document new shortcut.
29169         Add to -Wall section.
29170
29171 2017-06-01  Richard Biener  <rguenther@suse.de>
29172
29173         PR middle-end/66313
29174         * fold-const.c (fold_plusminus_mult_expr): If the factored
29175         factor may be zero use a wrapping type for the inner operation.
29176         * tree-tailcall.c (independent_of_stmt_p): Pass in to_move bitmap
29177         and handle moved defs.
29178         (process_assignment): Properly guard the unary op case.  Return a
29179         tri-state indicating that moving the stmt before the call may allow
29180         to continue.  Pass through to_move.
29181         (find_tail_calls): Handle moving unrelated defs before
29182         the call.
29183
29184 2017-05-31  Segher Boessenkool  <segher@kernel.crashing.org>
29185
29186         PR target/80618
29187         * config/rs6000/vector.md (*vector_uneq<mode>): Write the nor in the
29188         splitter result in the canonical way.
29189
29190 2017-05-31  Uros Bizjak  <ubizjak@gmail.com>
29191
29192         * config/i386/i386.md (*zero_extendsidi2): Enable alternative (?r, *Yj)
29193         also for 32bit target.  Update insn attributes.
29194         (zero-extendsidi2 splitter): Allow all registers for operand 1.
29195
29196 2017-05-31  Sebastian Peryt  <sebastian.peryt@intel.com>
29197
29198         * config/i386/avx512fintrin.h (_mm_mask_max_sd)
29199         (_mm_maskz_max_sd, _mm_mask_max_ss, _mm_maskz_max_ss)
29200         (_mm_mask_min_sd, _mm_maskz_min_sd, _mm_mask_min_ss)
29201         (_mm_maskz_min_ss): New intrinsics.
29202
29203 2017-05-31  Martin Liska  <mliska@suse.cz>
29204
29205         * tree-vect-loop.c (vect_create_epilog_for_reduction):
29206         Change comment style to one we normally use.
29207         (vectorizable_reduction): Likewise.
29208         (vectorizable_induction): Likewise.
29209         * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
29210         (vectorizable_call): Likewise.
29211         (vectorizable_simd_clone_call): Likewise.
29212         (vectorizable_conversion): Likewise.
29213         (vectorizable_assignment): Likewise.
29214         (vectorizable_shift): Likewise.
29215         (vectorizable_operation): Likewise.
29216         (vectorizable_store): Likewise.
29217         (vectorizable_load): Likewise.
29218         * tree-vectorizer.h: Likewise.
29219
29220 2017-05-31  Alexander Monakov  <amonakov@ispras.ru>
29221
29222         * passes.c (emergency_dump_function): New.
29223         * tree-pass.h (emergency_dump_function): Declare.
29224         * plugin.c (plugins_internal_error_function): Remove.
29225         * plugin.h (plugins_internal_error_function): Remove declaration.
29226         * toplev.c (internal_error_function): New static function.  Use it...
29227         (general_init): ...here.
29228
29229 2017-05-31  Graham Markall  <graham.markall@embecosm.com>
29230
29231         * config/arc/arc.c (arc_print_operand): Handle constant operands.
29232         (arc_rtx_costs): Add costs for new patterns.
29233         * config/arc/arc.md: Additional *add_n and *sub_n patterns.
29234         * config/arc/predicates.md: Add _1_2_3_operand predicate.
29235
29236 2017-05-31  Richard Sandiford  <richard.sandiford@linaro.org>
29237
29238         * tree-ssa-strlen.c (get_next_strinfo): New function.
29239         (get_stridx_plus_constant): Use it.
29240         (zero_length_string): Likewise.
29241         (adjust_related_strinfos): Likewise.
29242         (adjust_last_stmt): Likewise.
29243
29244 2017-05-31  Richard Biener  <rguenther@suse.de>
29245
29246         PR target/80880
29247         * config/i386/i386.c (ix86_expand_builtin): Remove assert
29248         for arg being an SSA name when expanding IX86_BUILTIN_BNDRET.
29249
29250 2017-05-31  Richard Sandiford  <richard.sandiford@linaro.org>
29251
29252         * tree-vect-data-refs.c (vect_find_same_alignment_drs): Remove
29253         loop_vinfo argument and use of dependence distance vectors.
29254         Check instead whether the two references differ only in their
29255         initial value and assume that they have the same alignment if the
29256         difference is a multiple of the vector alignment.
29257         (vect_analyze_data_refs_alignment): Update call accordingly.
29258
29259 2017-05-31  Martin Liska  <mliska@suse.cz>
29260
29261         PR target/79155
29262         * config/i386/cpuid.h: Fix typo in a comment in cpuid.h.
29263
29264 2017-05-31  Bin Cheng  <bin.cheng@arm.com>
29265
29266         * tree-vect-loop-manip.c (create_intersect_range_checks_index)
29267         (create_intersect_range_checks): Move from ...
29268         * tree-data-ref.c (create_intersect_range_checks_index)
29269         (create_intersect_range_checks): ... to here.
29270         (create_runtime_alias_checks): New function factored from ...
29271         * tree-vect-loop-manip.c (vect_create_cond_for_alias_checks): ...
29272         here.  Call above function.
29273         * tree-data-ref.h (create_runtime_alias_checks): New function.
29274
29275 2017-05-31  Bin Cheng  <bin.cheng@arm.com>
29276
29277         * tree-data-ref.c (prune_runtime_alias_test_list): Relax minimal
29278         segment length for dr_b and compute it in wide_int.
29279
29280 2017-05-31  Richard Biener  <rguenther@suse.de>
29281
29282         PR tree-optimization/80906
29283         * graphite-isl-ast-to-gimple.c (copy_loop_close_phi_nodes): Get
29284         and pass through iv_map.
29285         (copy_bb_and_scalar_dependences): Adjust.
29286         (translate_pending_phi_nodes): Likewise.
29287         (copy_loop_close_phi_args): Handle code-generating IVs instead
29288         of ICEing.
29289
29290 2017-05-30  David Malcolm  <dmalcolm@redhat.com>
29291
29292         * diagnostic-color.c (color_dict): Add "type-diff".
29293         (parse_gcc_colors): Update comment.
29294         * doc/invoke.texi (Diagnostic Message Formatting Options): Add
29295         -fdiagnostics-show-template-tree and -fno-elide-type.
29296         (GCC_COLORS): Add type-diff to example.
29297         (type-diff=): New.
29298         (-fdiagnostics-show-template-tree): New.
29299         (-fno-elide-type): New.
29300         * pretty-print.c (pp_format): Pass quote and formatters[argno] to
29301         the pp_format_decoder callback.  Call any m_format_postprocessor's
29302         "handle" method.
29303         (pretty_printer::pretty_printer): Initialize
29304         m_format_postprocessor.
29305         (pretty_printer::~pretty_printer): Delete any
29306         m_format_postprocessor.
29307         * pretty-print.h (printer_fn): Add bool and const char ** parameters.
29308         (class format_postprocessor): New class.
29309         (struct pretty_printer::format_decoder): Document the new parameters.
29310         (struct pretty_printer::m_format_postprocessor): New field.
29311         * tree-diagnostic.c (default_tree_printer): Update for new
29312         bool and const char ** params.
29313         * tree-diagnostic.h (default_tree_printer): Likewise.
29314
29315 2017-05-30  Segher Boessenkool  <segher@kernel.crashing.org>
29316
29317         * config/rs6000/predicates.md (cc_reg_not_micro_cr0_operand): Delete.
29318         (lwa_operand): Delete rs6000_gen_cell_microcode test.
29319         * config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
29320         rs6000_gen_cell_microcode code.
29321         (rs6000_final_prescan_insn): Delete.
29322         (rs6000_opt_vars): Delete the "gen-cell-microcode" and
29323         "warn-cell-microcode" entries.
29324         * config/rs6000/rs6000.h (FINAL_PRESCAN_INSN): Delete.
29325         * config/rs6000/rs6000.md: Delete rs6000_gen_cell_microcode tests
29326         throughout.  Change cc_reg_not_micro_cr0_operand to
29327         cc_reg_not_cr0_operand throughout.
29328         (*extendhi<mode>2_noload): Delete.
29329         * config/rs6000/rs6000.opt (mgen-cell-microcode): Replace by stub.
29330         (mwarn-cell-microcode): Delete.
29331         * doc/invoke.texi (RS/6000 and PowerPC Options): Delete
29332         -mgen-cell-microcode and -mwarn-cell-microcode.
29333
29334 2017-05-30  Uros Bizjak  <ubizjak@gmail.com>
29335
29336         PR target/80833
29337         * config/i386/constraints.md (Yd): New constraint.
29338         (Ye): Ditto.
29339         * config/i386/i386.md (*movti_internal): Add (?r, Ye)
29340         and (?Yd, r) alternatives.  Update insn attributes.
29341         * config/i386/i386.md (*movti_internal): Add (?r, *Ye)
29342         and (?*Yd, r) alternatives.  Update insn attributes.
29343         (double-mode inter-unit splitters): Add new GR<->XMM splitters.
29344
29345 2017-05-30  Pierre-Marie de Rodat  <derodat@adacore.com>
29346
29347         * gimplify.c (gimplify_modify_expr): Don't create a
29348         DECL_DEBUG_EXPR link if *FROM_P does not belong to the current
29349         function.
29350
29351 2017-05-30  Wilco Dijkstra  <wdijkstr@arm.com>
29352
29353         * config/arm/arm-builtins.c (arm_expand_builtin): Remove const.
29354
29355 2017-05-30  Richard Biener  <rguenther@suse.de>
29356
29357         * tree-vectorizer.h (struct _stmt_vec_info): Add reduc_type
29358         and reduc_def fields.
29359         (STMT_VINFO_REDUC_TYPE): New define.
29360         (STMT_VINFO_REDUC_DEF): Likewise.
29361         (vect_force_simple_reduction): Adjust prototype.
29362         * tree-vect-loop.c (vect_analyze_scalar_cycles_1): Adjust.
29363         (vect_is_simple_reduction): Remove check_reduction argument.
29364         (vect_force_simple_reduction): Adjust and set
29365         STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
29366         (vectorizable_reduction): Do not re-do reduction analysis
29367         but use STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
29368         * tree-parloops.c (gather_scalar_reductions): Adjust.
29369
29370 2017-05-30  Richard Biener  <rguenther@suse.de>
29371
29372         PR middle-end/80901
29373         * cfgexpand.c (expand_gimple_cond): Match up loop fixup with
29374         split_edge code.
29375
29376 2017-05-24  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29377
29378         * tree-vect-data-refs.c (vect_get_peeling_costs_all_drs):
29379         Introduce unknown_misalignment parameter and remove vf.
29380         (vect_peeling_hash_get_lowest_cost):
29381         Pass unknown_misalignment parameter.
29382         (vect_enhance_data_refs_alignment):
29383         Fix unsupportable data ref treatment.
29384
29385 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29386
29387         * tree-vect-data-refs.c (vect_get_data_access_cost):
29388         Workaround for SLP handling.
29389         (vect_enhance_data_refs_alignment):
29390         Compute costs for doing no peeling at all, compare to the best
29391         peeling costs so far and avoid peeling if cheaper.
29392
29393 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29394
29395         * tree-vect-data-refs.c (vect_peeling_hash_choose_best_peeling):
29396         Return peeling info and set costs to zero for unlimited cost
29397         model.
29398         (vect_enhance_data_refs_alignment): Also inspect all datarefs
29399         with unknown misalignment. Compute and costs for unknown
29400         misalignment, compare them to the costs for known misalignment
29401         and choose the cheapest for peeling.
29402
29403 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29404
29405         * tree-vect-data-refs.c (vect_update_misalignment_for_peel): Rename.
29406         (vect_get_peeling_costs_all_drs): Create function.
29407         (vect_peeling_hash_get_lowest_cost):
29408         Use vect_get_peeling_costs_all_drs.
29409         (vect_peeling_supportable): Create function.
29410         (vect_enhance_data_refs_alignment): Use vect_peeling_supportable.
29411
29412 2017-05-30  Robin Dapp  <rdapp@linux.vnet.ibm.com>
29413
29414         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Create
29415         DR_HAS_NEGATIVE_STEP.
29416         (vect_update_misalignment_for_peel): Define DR_MISALIGNMENT.
29417         (vect_enhance_data_refs_alignment): Use.
29418         (vect_duplicate_ssa_name_ptr_info): Use.
29419         * tree-vectorizer.h (dr_misalignment): Use.
29420         (known_alignment_for_access_p): Use.
29421
29422 2017-05-30  Jozef Lawrynowicz  <jozef.l@somniumtech.com>
29423
29424         PR target/78838
29425         * config/msp430/msp430.c (gen_prefix): Return NULL when section name is
29426         .lowtext.
29427         (has_section_name): New function.
29428
29429 2017-05-30  Martin Liska  <mliska@suse.cz>
29430
29431         PR other/80909
29432         * auto-profile.c (get_function_decl_from_block): Fix
29433         parenthesis.
29434
29435 2017-05-30  Richard Biener  <rguenther@suse.de>
29436
29437         PR middle-end/80876
29438         * cfgexpand.c (expand_gimple_cond): Fixup preserving loops again.
29439
29440 2017-05-30  Martin Liska  <mliska@suse.cz>
29441
29442         * dumpfile.c: Use newly added macro DUMP_FILE_INFO.
29443         * dumpfile.h (struct dump_file_info): Remove ctors.
29444
29445 2017-05-30  Martin Liska  <mliska@suse.cz>
29446
29447         * predict.def: Fix GNU coding style.
29448
29449 2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
29450
29451         * config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
29452         Mark 'to' argument with ATTRIBUTE_UNUSED.
29453
29454 2017-05-29  Max Filippov  <jcmvbkbc@gmail.com>
29455
29456         * config/xtensa/xtensa.c (xtensa_emit_call): Use
29457         HOST_WIDE_INT_PRINT_HEX instead of 0x%lx format string.
29458         (print_operand): Use HOST_WIDE_INT_PRINT_DEC instead of %ld
29459         format string.
29460
29461 2017-05-29  Eric Botcazou  <ebotcazou@adacore.com>
29462
29463         * doc/install.texi (Options specification): Restore entry of
29464         --enable-sjlj-exceptions.
29465
29466 2017-05-27  Michael Eager  <eager@eagercon.com>
29467
29468         Revert:
29469         2016-01-21  Ajit Agarwal  <ajitkum@xilinx.com>
29470
29471         See https://gcc.gnu.org/ml/gcc/2017-05/msg00221.html.
29472
29473         * config/microblaze/microblaze.h
29474         (FIXED_REGISTERS): Update in macro.
29475         (CALL_USED_REGISTERS): Update in macro.
29476
29477 2017-05-27  François-Xavier Coudett  <fxcoudert@gcc.gnu.org>
29478
29479         * doc/install.texi: Add links to macOS binary distributions.
29480
29481 2017-05-27  Jakub Jelinek  <jakub@redhat.com>
29482
29483         PR bootstrap/80887
29484         Revert:
29485         2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29486
29487         * match.pd ((A +- CST1) +- CST2): Allow some conversions.
29488
29489 2017-05-26  Martin Liska  <mliska@suse.cz>
29490
29491         * dumpfile.h (enum dump_kind): Renumber TDF_* flags to be contiguous.
29492
29493 2017-05-26  Martin Liska  <mliska@suse.cz>
29494
29495         * cfg.c (check_bb_profile): Do not use TDF_COMMENT and print
29496         always leading ';; '.
29497         (dump_bb_info): Likewise.
29498         (brief_dump_cfg): Likewise.
29499         * cfgrtl.c (print_rtl_with_bb): Do not use TDF_COMMENT.
29500         * dumpfile.c: Remove usage of TDF_VERBOSE.
29501         * dumpfile.h (enum dump_kind): Likewise.
29502         (dump_gimple_bb_header): Do not use TDF_COMMENT.
29503         * print-tree.c (debug_verbose): Remove.
29504         * tree-cfg.c (gimple_dump_cfg): Do not use TDF_COMMENT.
29505         (dump_function_to_file): Remove dumps guarded with TDF_VERBOSE.
29506         * tree-diagnostic.c (default_tree_printer): Replace
29507         TDF_DIAGNOSTIC with TDF_SLIM.
29508
29509 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29510
29511         * tree-vect-loop-manip.c (create_intersect_range_checks_index): Pass
29512         in parameter loop, rather than loop_vinfo.
29513         (create_intersect_range_checks): Ditto.
29514         (vect_create_cond_for_alias_checks): Update call to above functions.
29515
29516 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29517
29518         PR tree-optimization/80815
29519         * tree-data-ref.c (prune_runtime_alias_test_list): Simplify condition
29520         for merging runtime alias checks.  Handle negative DR_STEPs.
29521
29522 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29523
29524         * tree-vect-data-refs.c (Operator==, comp_dr_with_seg_len_pair):
29525         Move from ...
29526         * tree-data-ref.c (Operator==, comp_dr_with_seg_len_pair): To here.
29527         * tree-vect-data-refs.c (vect_prune_runtime_alias_test_list): Factor
29528         out code pruning runtime alias checks.
29529         * tree-data-ref.c (prune_runtime_alias_test_list): New function
29530         factored out from above.
29531         * tree-vectorizer.h (struct dr_with_seg_len, dr_with_seg_len_pair_t):
29532         Move from ...
29533         * tree-data-ref.h (struct dr_with_seg_len, dr_with_seg_len_pair_t):
29534         ... to here.
29535         (prune_runtime_alias_test_list): New decalaration.
29536
29537 2017-05-26  Bin Cheng  <bin.cheng@arm.com>
29538
29539         * tree-vect-data-refs.c (compare_tree): Rename and move ...
29540         * tree-data-ref.c (data_ref_compare_tree): ... to here.
29541         * tree-data-ref.h (data_ref_compare_tree): New decalaration.
29542         * tree-vect-data-refs.c (dr_group_sort_cmp): Update uses.
29543         (operator==, comp_dr_with_seg_len_pair): Ditto.
29544         (vect_prune_runtime_alias_test_list): Ditto.
29545
29546 2017-05-26  Martin Liska  <mliska@suse.cz>
29547
29548         PR ipa/80663
29549         * params.def: Bound partial-inlining-entry-probability param.
29550
29551 2017-05-26  Marek Polacek  <polacek@redhat.com>
29552
29553         PR sanitizer/80875
29554         * fold-const.c (fold_binary_loc) <case MULT_EXPR>: Check if OP1
29555         can be negated.
29556
29557 2017-05-26  Richard Biener  <rguenther@suse.de>
29558
29559         PR tree-optimization/80842
29560         * tree-ssa-ccp.c (set_lattice_value): Always meet with the old
29561         value.
29562
29563 2017-05-26  Richard Biener  <rguenther@suse.de>
29564
29565         PR tree-optimization/80844
29566         * tree-vectorizer.c (adjust_simduid_builtins): Propagate results.
29567
29568 2017-05-25  Sebastian Peryt  <sebastian.peryt@intel.com>
29569
29570         * doc/md.texi (Machine Constraints): Update x86 family
29571         machine constraints section to match 'config/i386/constraints.md'.
29572
29573 2017-05-25  Volker Reichelt  <v.reichelt@netcologne.de>
29574
29575         * doc/invoke.texi (-Wcatch-value=): Document new warning option.
29576
29577 2017-05-25  Nathan Sidwell  <nathan@acm.org>
29578
29579         * doc/invoke.texi (--enable-languages): Update documentation.
29580
29581 2017-05-25  Martin Liska  <mliska@suse.cz>
29582
29583         * dumpfile.c: Add TDF_FOLDING.
29584         * dumpfile.h (enum dump_kind): Likewise.
29585         * genmatch.c (dt_simplify::gen_1): Use it.
29586
29587 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29588
29589         * match.pd (view_convert (convert@0 @1)): Handle zero-extension.
29590
29591 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29592
29593         * match.pd ((A +- CST1) +- CST2): Allow some conversions.
29594         * tree.c (drop_tree_overflow): Handle COMPLEX_CST and VECTOR_CST.
29595
29596 2017-05-25  Marc Glisse  <marc.glisse@inria.fr>
29597
29598         * fold-const.c (fold_binary_loc) [(A & C) == D]: Remove transformation.
29599         * match.pd (X == C): Rewrite it here.
29600         (with_possible_nonzero_bits, with_possible_nonzero_bits2,
29601         with_certain_nonzero_bits2): New predicates.
29602         * tree-ssanames.c (get_nonzero_bits): Handle INTEGER_CST.
29603
29604 2017-05-24  Nathan Sidwell  <nathan@acm.org>
29605
29606         * lto-streamer-in.c (lto_input_data_block): Adjust T const cast to
29607         avoid warning.
29608
29609         * auto-profile.c (afdo_propagate): Adjust T const cast to avoid
29610         warning.
29611
29612 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
29613
29614         * config/powerpcspe: New port.  Files are copied from the rs6000
29615         port, with "rs6000" in filenames replaced by "powerpcspe".
29616
29617 2017-05-24  Wilco Dijkstra  <wdijkstr@arm.com>
29618
29619         PR rtl-optimization/80754
29620         * lra-remat.c (do_remat): Add overlap checks for dst_regno.
29621
29622 2017-05-24  Sheldon Lobo  <smlobo@sheldon.us.oracle.com>
29623
29624         * config/sparc/sparc.md (length): Return the correct value for -mflat
29625         sibcalls to match output_sibcall.
29626
29627 2017-05-24  Segher Boessenkool  <segher@kernel.crashing.org>
29628
29629         PR bootstrap/80860
29630         PR bootstrap/80843
29631         * config/rs6000/rs6000.c (struct machine_function): Add new field
29632         n_components.
29633         (rs6000_get_separate_components): Init that field, use it.
29634         (rs6000_components_for_bb): Use the field.
29635
29636 2017-05-24  Thomas Preud'homme  <thomas.preudhomme@arm.com>
29637
29638         * config/arm/arm.c (arm_expand_prologue): Fix typo in comment.
29639
29640 2017-05-24  Peter Bergner  <bergner@vnet.ibm.com>
29641
29642         PR middle-end/80823
29643         * tree-cfg.c (group_case_labels_stmt): Delete increment of "i";
29644
29645 2017-05-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
29646
29647         PR target/80725
29648         * config/s390/s390.c (s390_check_qrst_address): Check incoming
29649         address against address_operand predicate.
29650         * config/s390/s390.md ("*indirect_jump"): Swap alternatives.
29651
29652 2017-05-24  Eric Botcazou  <ebotcazou@adacore.com>
29653
29654         * var-tracking.c (track_expr_p): Do not return 0 for tracked record
29655         parameters passed indirectly.
29656
29657 2017-05-23  Uros Bizjak  <ubizjak@gmail.com>
29658
29659         * config/i386/i386.md (*movdi_internal): Remove SSE4
29660         alternative 18 (?r, *v).  Update insn attributes.
29661         (*movsi_internal): Remove SSE4 alternative 13 (?r, *v).
29662         Update insn attributes.
29663         (*zero_extendsidi2): Remove SSE4 alternative (?r, *x).
29664         Update insn attributes.
29665         * config/i386/sse.md (vec_extract<ssevecmodelower>_0): Remove SSE4
29666         alternative 1 (r, v). Remove isa attribute.
29667         * config/i386/i386.c (dimode_scalar_chain::make_vector_copies):
29668         Always move value through stack for !TARGET_INTER_UNIT_MOVES_TO_VEC
29669         and !TARGET_INTER_UNIT_MOVES_TO_VEC targets.
29670
29671 2017-05-23  Tom de Vries  <tom@codesourcery.com>
29672
29673         * doc/sourcebuild.texi (Directives, Verify compiler message): Document
29674         dg-line directive.
29675
29676 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
29677
29678         * cgraphunit.c (symbol_table::process_new_functions): Update.
29679         * ipa-fnsummary.c (pass_data_inline_parameters): Remove.
29680         (inline_generate_summary): Rename to ...
29681         (ipa_fn_summary_generate): ... this one.
29682         (inline_read_summary): Rename to ...
29683         (ipa_fn_summary_read): ... this one.
29684         (inline_write_summary): Rename to ...
29685         (ipa_fn_summary_write): ... this one.
29686         (inline_free_summary): Rename to ...
29687         (ipa_free_fn_summary): ... this one.
29688         (pass_data_local_fn_summary, pass_local_fn_summary,
29689         make_pass_local_fn_summary, pass_data_ipa_free_fn_summary,
29690         pass_ipa_free_fn_summary, make_pass_ipa_free_fn_summary,
29691         pass_data_ipa_fn_summary, pass_ipa_fn_summary,
29692         make_pass_ipa_fn_summary): New.
29693         * ipa-fnsummary.h (inline_generate_summary, inline_read_summary,
29694         inline_write_summary, inline_free_summary): Remove.
29695         (ipa_free_fn_summary) : New.
29696         * ipa-inline.c (ipa_inline): Update.
29697         (pass_ipa_inline): Do not generate summaries.
29698         * ipa.c (pass_data_ipa_free_fn_summary, pass_ipa_free_fn_summary):
29699         Remove.
29700         * passes.def: Replace pass_inline_parameters by pass_local_fn_summary
29701         and add pass_ipa_fn_summary.
29702         * tree-pass.h (make_pass_ipa_fn_summary, make_pass_local_fn_summary):
29703         New.
29704         (make_pass_inline_parameters): Remove.
29705
29706 2017-05-23  Thomas Schwinge  <thomas@codesourcery.com>
29707
29708         * omp-low.c (struct omp_context): Remove "default_kind" member.
29709         Adjust all users.
29710
29711         * omp-offload.c (execute_oacc_device_lower): Remove the
29712         parallelism dimensions function attributes for unparallelized
29713         OpenACC kernels constructs.
29714
29715 2017-05-23  Martin Liska  <mliska@suse.cz>
29716
29717         * cgraph.c (cgraph_node::get_create): Use symtab_node::dump_{asm_,}name
29718         functions.
29719         (cgraph_edge::make_speculative): Likewise.
29720         (cgraph_edge::resolve_speculation): Likewise.
29721         (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
29722         (cgraph_node::dump): Likewise.
29723         * cgraph.h: Likewise.
29724         * cgraphunit.c (analyze_functions): Likewise.
29725         (symbol_table::compile): Likewise.
29726         * ipa-cp.c (print_all_lattices): Likewise.
29727         (determine_versionability): Likewise.
29728         (initialize_node_lattices): Likewise.
29729         (ipcp_verify_propagated_values): Likewise.
29730         (estimate_local_effects): Likewise.
29731         (update_profiling_info): Likewise.
29732         (create_specialized_node): Likewise.
29733         (perhaps_add_new_callers): Likewise.
29734         (decide_about_value): Likewise.
29735         (decide_whether_version_node): Likewise.
29736         (identify_dead_nodes): Likewise.
29737         (ipcp_store_bits_results): Likewise.
29738         * ipa-devirt.c (dump_targets): Likewise.
29739         (ipa_devirt): Likewise.
29740         * ipa-icf.c (sem_item::dump): Likewise.
29741         (sem_function::equals): Likewise.
29742         (sem_variable::equals): Likewise.
29743         (sem_item_optimizer::read_section): Likewise.
29744         (sem_item_optimizer::execute): Likewise.
29745         (congruence_class::dump): Likewise.
29746         * ipa-inline-analysis.c (dump_ipa_call_summary): Likewise.
29747         (dump_inline_summary): Likewise.
29748         (estimate_node_size_and_time): Likewise.
29749         (inline_analyze_function): Likewise.
29750         * ipa-inline-transform.c (inline_call): Likewise.
29751         * ipa-inline.c (report_inline_failed_reason): Likewise.
29752         (want_early_inline_function_p): Likewise.
29753         (edge_badness): Likewise.
29754         (update_edge_key): Likewise.
29755         (inline_small_functions): Likewise.
29756         * ipa-profile.c (ipa_profile): Likewise.
29757         * ipa-prop.c (ipa_print_node_jump_functions): Likewise.
29758         (ipa_make_edge_direct_to_target): Likewise.
29759         (remove_described_reference): Likewise.
29760         (ipa_impossible_devirt_target): Likewise.
29761         (propagate_controlled_uses): Likewise.
29762         (ipa_print_node_params): Likewise.
29763         (ipcp_transform_function): Likewise.
29764         * ipa-pure-const.c (pure_const_read_summary): Likewise.
29765         (propagate_pure_const): Likewise.
29766         * ipa-reference.c (generate_summary): Likewise.
29767         (read_write_all_from_decl): Likewise.
29768         (propagate): Likewise.
29769         (ipa_reference_read_optimization_summary): Likewise.
29770         * ipa-utils.c (ipa_merge_profiles): Likewise.
29771         * ipa.c (walk_polymorphic_call_targets): Likewise.
29772         (symbol_table::remove_unreachable_nodes): Likewise.
29773         (ipa_single_use): Likewise.
29774         * passes.c (execute_todo): Likewise.
29775         * predict.c (drop_profile): Likewise.
29776         * symtab.c (symtab_node::get_dump_name): New function.
29777         (symtab_node::dump_name): Likewise.
29778         (symtab_node::dump_asm_name): Likewise.
29779         (symtab_node::dump_references): Likewise.
29780         (symtab_node::dump_referring): Likewise.
29781         (symtab_node::dump_base): Likewise.
29782         (symtab_node::debug_symtab): Likewise.
29783         * tree-sra.c (convert_callers_for_node): Likewise.
29784         * tree-ssa-structalias.c (ipa_pta_execute): Likewise.
29785         * value-prof.c (init_node_map): Likewise.
29786
29787 2017-05-23  Martin Liska  <mliska@suse.cz>
29788
29789         * cgraph.h: Move symtab_node::dump_table to symbol_table::dump
29790         and symtab_node::debug_symtab to symbol_table::debug.
29791         * cgraphunit.c (analyze_functions): Use the renamed function.
29792         (symbol_table::compile): Likewise.
29793         * ipa-cp.c (ipcp_verify_propagated_values): Likewise.
29794         * ipa-icf.c (sem_item_optimizer::execute): Likewise.
29795         * passes.c (execute_todo): Likewise.
29796         * symtab.c (symbol_table::dump): New function.
29797         * tree-ssa-structalias.c (ipa_pta_execute): Use the renamed function.
29798
29799 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
29800
29801         * ipa-fnsummary.c (estimate_node_size_and_time): Do not sanity check
29802         that nonconst implies exec.
29803
29804 2017-05-23  Jan Hubicka  <hubicka@ucw.cz>
29805
29806         * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
29807         inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
29808         (inline_edge_summary_vec): Turn into ...
29809         (ipa_call_summaries): ... this one.
29810         (redirect_to_unreachable, edge_set_predicate,
29811         evaluate_properties_for_edge, inline_summary_alloc,
29812         reset_ipa_call_summary, reset_inline_summary,
29813         inline_summary_t::duplicate): Update.
29814         (inline_edge_duplication_hook): Turn to ...
29815         (ipa_call_summary_t::duplicate): ... this one.
29816         (inline_edge_removal_hook): Turn to ...
29817         (ipa_call_summary_t::remove): ... this one.
29818         (dump_inline_edge_summary): Turn to ...
29819         (dump_ipa_call_summary): ... this one.
29820         (estimate_function_body_sizes): Update.
29821         (inline_update_callee_summaries): Update.
29822         (remap_edge_change_prob): Update.
29823         (remap_edge_summaries): Update.
29824         (inline_merge_summary): Update.
29825         (do_estimate_edge_time): Update.
29826         (inline_generate_summary): Update.
29827         (inline_read_section): Update.
29828         (inline_read_summary): Update.
29829         (inline_free_summary): Update.
29830         * ipa-inline.c (can_inline_edge_p): Update.
29831         (compute_inlined_call_time): Update.
29832         (want_inline_small_function_p): Update.
29833         (edge_badness): Update.
29834         (early_inliner): Update.
29835         * ipa-inline.h (inline_edge_summary): Turn to ...
29836         (ipa_call_summary): ... this one.
29837         (ipa_call_summary_t): New class.
29838         (inline_edge_summary_t, inline_edge_summary_vec): Remove.
29839         (ipa_call_summaries): New.
29840         (inline_edge_summary): Remove.
29841         (estimate_edge_growth): Update.
29842         * ipa-profile.c (ipa_propagate_frequency_1): Update.
29843         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
29844         * ipa-split.c (execute_split_functions): Update.
29845         * ipa.c (symbol_table::remove_unreachable_nodes): Update.
29846
29847 2017-05-23  Tom de Vries  <tom@codesourcery.com>
29848
29849         * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware
29850         attributes): Document rdrand effective target.
29851
29852 2017-05-23  Tom de Vries  <tom@codesourcery.com>
29853
29854         * doc/sourcebuild.texi (Effective-Target Keywords, Other hardware
29855         attributes): Sort alphabetically.
29856
29857 2017-05-23  Georg-Johann Lay  <avr@gjlay.de>
29858
29859         * config/avr/genmultilib.awk: Use gsub instead of gensub.
29860
29861 2017-05-22  Michael Meissner  <meissner@linux.vnet.ibm.com>
29862
29863         PR target/80718
29864         * config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Split
29865         V2DF/V2DI splat into two separate patterns, one that handles
29866         registers, and the other that only handles memory.  Drop support
29867         for splatting from a GPR on ISA 2.07 and then splitting the
29868         splat into direct move and splat.
29869         (vsx_splat_<mode>_reg): Likewise.
29870         (vsx_splat_<mode>_mem): Likewise.
29871
29872 2017-05-22  Segher Boessenkool  <segher@kernel.crashing.org>
29873
29874         * cfgcleanup.c (bb_is_just_return): Allow CLOBBERs.
29875
29876 2017-05-22  Jakub Jelinek  <jakub@redhat.com>
29877
29878         PR middle-end/80809
29879         * omp-low.c (finish_taskreg_remap): New function.
29880         (finish_taskreg_scan): If unit size of ctx->record_type
29881         is non-constant, unshare the size expression and replace
29882         decls in it with possible outer var refs.
29883
29884         PR middle-end/80809
29885         * gimplify.c (omp_add_variable): For GOVD_DEBUG_PRIVATE use
29886         GOVD_SHARED rather than GOVD_PRIVATE with it.
29887         (gimplify_adjust_omp_clauses_1, gimplify_adjust_omp_clauses): Expect
29888         GOVD_SHARED rather than GOVD_PRIVATE with GOVD_DEBUG_PRIVATE.
29889
29890         PR middle-end/80853
29891         * omp-low.c (lower_reduction_clauses): Pass OMP_CLAUSE_PRIVATE
29892         as last argument to build_outer_var_ref for pointer bases of array
29893         section reductions.
29894
29895 2017-05-19  Martin Sebor  <msebor@redhat.com>
29896
29897         * print-tree.c (print_node): Print DECL_READ_P flag.
29898
29899 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29900
29901         * Makefile.in: Add ipa-fnsummary.o and ipa-fnsummary.h
29902         * auto-profile.c: Replace ipa-inline.h by ipa-fnsummary.h
29903         * cgraph.c: Likewise.
29904         * cgraphunit.c: Likewise.
29905         * gengtype.c: Likewise.
29906         * ipa-cp.c: Likewise.
29907         * ipa-devirt.c: Likewise.
29908         * ipa-icf.c: Likewise.
29909         * ipa-predicate.c: Likewise.
29910         * ipa-profile.c: Likewise.
29911         * ipa-prop.c: Likewise.
29912         * ipa-split.c: Likewise.
29913         * ipa.c: Likewise.
29914         * ipa-inline-analysis.c (inline_summaries, ipa_call_summaries,
29915         edge_predicate_pool, dump_inline_hints,
29916         inline_summary::account_size_time, redirect_to_unreachable,
29917         edge_set_predicate, set_hint_predicate,
29918         evaluate_conditions_for_known_args, evaluate_properties_for_edge,
29919         inline_summary_alloc, ipa_call_summary::reset, inline_summary::reset,
29920         inline_summary_t::remove, remap_hint_predicate_after_duplication,
29921         inline_summary_t::duplicate, ipa_call_summary_t::duplicate,
29922         ipa_call_summary_t::remove, initialize_growth_caches,
29923         free_growth_caches, dump_ipa_call_summary, dump_inline_summary,
29924         debug_inline_summary, dump_inline_summaries, initialize_inline_failed,
29925         mark_modified, unmodified_parm_1, unmodified_parm,
29926         unmodified_parm_or_parm_agg_item, eliminated_by_inlining_prob,
29927         set_cond_stmt_execution_predicate, set_switch_stmt_execution_predicate,
29928         compute_bb_predicates, will_be_nonconstant_expr_predicate,
29929         will_be_nonconstant_predicate, record_modified_bb_info,
29930         get_minimal_bb, record_modified, param_change_prob,
29931         phi_result_unknown_predicate, predicate_for_phi_result,
29932         array_index_predicate, clobber_only_eh_bb_p, fp_expression_p,
29933         estimate_function_body_sizes, compute_inline_parameters,
29934         compute_inline_parameters_for_curren, pass_data_inline_parameters,
29935         estimate_node_size_and_time, estimate_ipcp_clone_size_and_time,
29936         inline_update_callee_summaries, remap_edge_change_prob,
29937         remap_edge_summaries, remap_hint_predicate, inline_merge_summary,
29938         inline_update_overall_summary, inline_indirect_intraprocedural_analysis,
29939         inline_analyze_function, inline_summary_t::insert,
29940         inline_generate_summary, read_ipa_call_summary, inline_read_section,
29941         inline_read_summary, write_ipa_call_summary, inline_write_summary,
29942         inline_free_summary): Move to ipa-fnsummary.h
29943         (predicate_t): Remove.
29944         * ipa-fnsummary.c: New file.
29945         * ipa-inline.h:  Do not include sreal.h and ipa-predicate.h
29946         (enum inline_hints_vals, inline_hints, agg_position_info,
29947         INLINE_SIZE_SCALE, size_time_entry, inline_summary, inline_summary_t,
29948         inline_summaries, ipa_call_summary, ipa_call_summary_t,
29949         ipa_call_summaries, debug_inline_summary, dump_inline_summaries,
29950         dump_inline_summary, dump_inline_hints, inline_generate_summary,
29951         inline_read_summary, inline_write_summary, inline_free_summary,
29952         inline_analyze_function, initialize_inline_failed,
29953         inline_merge_summary, inline_update_overall_summary,
29954         compute_inline_parameters): Move to ipa-fnsummary.h
29955         * ipa-fnsummary.h: New file.
29956         * ipa-inline-transform.h: Include ipa-inline.h.
29957         * ipa-inline.c: LIkewise.
29958
29959 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29960
29961         * ipa-inline.c (edge_badness): Use inlined_time instead of
29962         inline_summaries->get.
29963
29964 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29965
29966         * ipa-inline.c (edge_badness): Use estimate_size_after_inlining.
29967
29968 2017-05-22  Nathan Sidwell  <nathan@acm.org>
29969
29970         * doc/invoke.texi (fdump-translation-unit): Delete documentation.
29971         (fdump-lang): Document 'raw' option.
29972         * dumpfile.h (TDI_tu): Delete.
29973         * dumpfile.c (dump_files): Remove translation-unit.
29974         (FIRST_AUTO_NUMBERED_DUMP): Decrement.
29975
29976 2017-05-22  Georg-Johann Lay  <avr@gjlay.de>
29977
29978         * config/avr/t-avr (AWK) [t-multilib]: Remove "-v FORMAT=Makefile"
29979         command option from $(AWK) call.
29980         * config/avr/genmultilib.awk: Simplify and rewrite so that it
29981         generates MULTILIB_REQUIRED instead of MULTILIB_EXCEPTIONS.
29982         [FORMAT]: Remove handling of variable.
29983         * config/avr/t-multilib: Regenerate.
29984
29985 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29986
29987         * ipa-inline-analysis.c (inline_summary::reset): Do not reset
29988         self_time.
29989         (dump_inline_summary): Do not print self_time.
29990         (estimate_function_body_sizes): Do not set self_time.
29991         (compute_inline_parameters): Likewise.
29992         (inline_read_section, inline_write_summary): Do not stream self_time.
29993         * ipa-inline.h (inline_summary): Drop self_time.
29994
29995 2017-05-22  Jan Hubicka  <hubicka@ucw.cz>
29996
29997         * ipa-inline-analysis.c (account_size_time): Rename to ...
29998         (inline_summary::account_size_time): ... this one.
29999         (reset_ipa_call_summary): Turn to ...
30000         (ipa_call_summary::reset): ... this one.
30001         (reset_inline_summary): Turn to ...
30002         (inline_summary::reset): ... this one.
30003         (inline_summary_t::remove): Update.
30004         (inline_summary_t::duplicate): Update.
30005         (ipa_call_summary_t::remove): Update.
30006         (dump_inline_summary): Update.
30007         (estimate_function_body_sizes): Update.
30008         (compute_inline_parameters): Update.
30009         (estimate_node_size_and_time): Update.
30010         (inline_merge_summary): Update.
30011         (inline_update_overall_summary): Update.
30012         (inline_read_section): Update.
30013         (inline_write_summary): Update.
30014         * ipa-inline.h (inline_summary): Rename entry to size_time_table;
30015         add account_size_time and reset member functions.
30016         (ipa_call_summary): Add reset function.
30017         * ipa-predicate.h (predicate::operator &): Constify.
30018
30019 2017-05-22  Richard Biener  <rguenther@suse.de>
30020
30021         * df-scan.c (df_insn_refs_verify): Speedup when not verifying.
30022
30023 2017-05-19  Jason Merrill  <jason@redhat.com>
30024
30025         * tree.c (make_tree_vec_stat, grow_tree_vec_stat): Use size_t.
30026
30027 2017-05-19  Marek Polacek  <polacek@redhat.com>
30028
30029         PR sanitizer/80800
30030         * fold-const.c (extract_muldiv_1) <case TRUNC_DIV_EXPR>: Add
30031         TYPE_OVERFLOW_WRAPS checks.
30032
30033 2017-05-19  Thomas Schwinge  <thomas@codesourcery.com>
30034
30035         * tree-core.h (enum omp_clause_default_kind): Add
30036         "OMP_CLAUSE_DEFAULT_PRESENT".
30037         * tree-pretty-print.c (dump_omp_clause): Handle it.
30038         * gimplify.c (enum gimplify_omp_var_data): Add
30039         "GOVD_MAP_FORCE_PRESENT".
30040         (gimplify_adjust_omp_clauses_1): Map it to
30041         "GOMP_MAP_FORCE_PRESENT".
30042         (oacc_default_clause): Handle "OMP_CLAUSE_DEFAULT_PRESENT".
30043
30044         * gimplify.c (oacc_default_clause): Clarify.
30045
30046 2017-05-19  Nathan Sidwell  <nathan@acm.org>
30047
30048         LANG_HOOK_REGISTER_DUMPS
30049         * toplev.c (general_init): Call register dump lang hook.
30050         * doc/invoke.texi: Document -fdump-lang option family.
30051         * dumpfile.c (dump_files): Remove class dump here.
30052         (FIRST_AUTO_NUMBERED_DUMP): Adjust.
30053         * dumpfile.h (tree_dump_index): Remove TDI_class.
30054         * langhooks-def.h (lhd_register_dumps): Declare.
30055         (LANG_HOOKS_REGISTER_DUMPS): Define.
30056         (LANG_HOOKS_INITIALIZER): Add it.
30057         * langhooks.c (lhd_register_dumps): Define.
30058         * langhooks.h (struct lang_hooks): Add register_dumps.
30059
30060 2017-05-19  Nathan Sidwell  <nathan@acm.org>
30061
30062         * context.h (context::set_passes): New.
30063         * context.c (context::context): Do not create pass manager.
30064         * toplev.c (general_init): Create pass manager here.
30065
30066 2017-05-19  Segher Boessenkool  <segher@kernel.crashing.org>
30067
30068         * config/rs6000/rs6000.md (splitter to load of -1 and mask): Don't
30069         use this splitter if two add or or instructions would also work for
30070         the constant we want to generate.
30071
30072 2017-05-19  Richard Biener  <rguenther@suse.de>
30073
30074         PR build/80821
30075         * genmatch.c (dt_node::gen_kids_1): Add missing scope around
30076         predicate evaluation.
30077
30078 2017-05-19  Jan Hubicka  <hubicka@ucw.cz>
30079
30080         * ipa-inline.h (ipa_call_summary): Turn sizes into signed;
30081         add ctor.
30082         * ipa-inline.c (want_inline_small_function_p): Do not cast to
30083         unsigned.
30084
30085 2017-05-19  Jan Hubicka  <hubicka@ucw.cz>
30086
30087         * ipa-inline-analysis.c (cgraph_2edge_hook_list, cgraph_edge_hook_list,
30088         inline_edge_removal_hook, inline_edge_duplication_hook): Remove.
30089         (inline_edge_summary_vec): Turn into ...
30090         (ipa_call_summaries): ... this one.
30091         (redirect_to_unreachable, edge_set_predicate,
30092         evaluate_properties_for_edge, inline_summary_alloc,
30093         reset_ipa_call_summary, reset_inline_summary,
30094         inline_summary_t::duplicate): Update.
30095         (inline_edge_duplication_hook): Turn to ...
30096         (ipa_call_summary_t::duplicate): ... this one.
30097         (inline_edge_removal_hook): Turn to ...
30098         (ipa_call_summary_t::remove): ... this one.
30099         (dump_inline_edge_summary): Turn to ...
30100         (dump_ipa_call_summary): ... this one.
30101         (estimate_function_body_sizes): Update.
30102         (inline_update_callee_summaries): Update.
30103         (remap_edge_change_prob): Update.
30104         (remap_edge_summaries): Update.
30105         (inline_merge_summary): Update.
30106         (do_estimate_edge_time): Update.
30107         (inline_generate_summary): Update.
30108         (inline_read_section): Update.
30109         (inline_read_summary): Update.
30110         (inline_free_summary): Update.
30111         * ipa-inline.c (can_inline_edge_p): Update.
30112         (compute_inlined_call_time): Update.
30113         (want_inline_small_function_p): Update.
30114         (edge_badness): Update.
30115         (early_inliner): Update.
30116         * ipa-inline.h (inline_edge_summary): Turn to ...
30117         (ipa_call_summary): ... this one.
30118         (ipa_call_summary_t): New class.
30119         (inline_edge_summary_t, inline_edge_summary_vec): Remove.
30120         (ipa_call_summaries): New.
30121         (inline_edge_summary): Remove.
30122         (estimate_edge_growth): Update.
30123         * ipa-profile.c (ipa_propagate_frequency_1): Update.
30124         * ipa-prop.c (ipa_make_edge_direct_to_target): Update.
30125         * ipa-split.c (execute_split_functions): Update.
30126         * ipa.c (symbol_table::remove_unreachable_nodes): Update.
30127
30128 2017-05-19  Richard Biener  <rguenther@suse.de>
30129
30130         PR middle-end/80764
30131         * cfgexpand.c (expand_gimple_cond): Fix loop fixup.
30132
30133 2017-05-18  Segher Boessenkool  <segher@kernel.crashing.org>
30134
30135         * config/rs6000/rs6000.c (struct machine_function): Add field
30136         fpr_is_wrapped_separately.
30137         (rs6000_get_separate_components): Use 64 components.  Handle the
30138         new FPR components.
30139         (rs6000_components_for_bb): Handle the FPR components.
30140         (rs6000_emit_prologue_components): Handle the FPR components.
30141         (rs6000_emit_epilogue_components): Handle the FPR components.
30142         (rs6000_set_handled_components): Handle the FPR components.
30143         (rs6000_emit_prologue): Don't output prologue code for those FPRs
30144         that are already separately shrink-wrapped.
30145         (rs6000_emit_epilogue): Don't output epilogue code for those FPRs
30146         that are already separately shrink-wrapped.
30147
30148 2017-05-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
30149
30150         PR target/80510
30151         * config/rs6000/predicates.md (simple_offsettable_mem_operand):
30152         New predicate.
30153
30154         * config/rs6000/rs6000.md (ALTIVEC_DFORM): New iterator.
30155         (define_peephole2 for Altivec d-form load): Add peepholes to catch
30156         cases where the register allocator uses a move and an offsettable
30157         memory operation to/from a FPR register on ISA 2.06/2.07.
30158         (define_peephole2 for Altivec d-form store): Likewise.
30159
30160 2017-05-18  Uros Bizjak  <ubizjak@gmail.com>
30161
30162         PR target/80799
30163         * config/i386/mmx.md (*mov<mode>_internal): Enable
30164         alternatives 11, 12, 13 and 14 also for 32bit targets.
30165         Remove alternatives 15, 16, 17 and 18.
30166         * config/i386/sse.md (vec_concatv2di): Change
30167         alternative (!x, *y) to (x, ?!*Yn).
30168
30169 2017-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
30170
30171         * dumpfile.h (enum dump_kind): Remove stray comma.
30172
30173 2017-05-18  Jan Hubicka  <hubicka@ucw.cz>
30174
30175         * Makefile.in: Add ipa-predicate.o and ipa-predicate.h
30176         * ipa-inline-analysis.c (NUM_CONDITIONS): turn into
30177         predicate::num_conditions
30178         (IS_NOT_CONSTANT): turn into predicate::is_not_constant.
30179         (CHANGED): turn into predicate::changed.
30180         (agg_position_info): Move to ipa-predicate.h
30181         (add_condition, predicate::add_clause, predicate::operator &=,
30182         predicate::or_with, predicate::evaluate, predicate::probability,
30183         dump_condition, dump_clause, predicate::dump,
30184         predicate::remap_after_duplication, predicate::remap_after_inlining,
30185         predicate::stream_in, predicate::stream_out): Move to ipa-predicate.c
30186         (evaluate_conditions_for_known_args): Update.
30187         (set_cond_stmt_execution_predicate): Update.
30188         * ipa-inline.h: Include ipa-predicate.h
30189         (condition, inline_param_summary, conditions, agg_position_info,
30190         predicate): Move to ipa-predicate.h
30191         * ipa-predicate.c: New file.
30192         * ipa-predicate.h: New file.
30193
30194 2017-05-18  Wilco Dijkstra  <wdijkstr@arm.com>
30195
30196         * final.c (leaf_function_p): Check we are not in a sequence.
30197
30198 2017-05-18  Martin Liska  <mliska@suse.cz>
30199
30200         * cfgrtl.c (rtl_verify_edges): Remove usage of TDF_RTL.
30201         * dumpfile.c (dump_register): Use new enum dump_kind.
30202         (get_dump_file_name): Likewise.
30203         (dump_enable_all): Likewise.
30204         (dump_switch_p_1): Likewise.
30205         (enable_rtl_dump_file): Remove usage of TDF_RTL.
30206         * dumpfile.h (enum dump_kind): New enum type.
30207         (struct dump_file_info): Create constructor and
30208         format fields and comments.
30209         * passes.c (pass_manager::register_one_dump_file):
30210         Use num dump_kind.
30211         * statistics.c (statistics_early_init): Likewise.
30212         * tree-ssa-loop-prefetch.c (dump_mem_details): Replace
30213         TDF_TREE with TDF_SLIM.
30214         (gather_memory_references_ref): Likewise.
30215
30216 2017-05-18  Martin Liska  <mliska@suse.cz>
30217
30218         * vec.h (struct vnull): Use it.
30219
30220 2017-05-18  Jan Hubicka  <hubicka@ucw.cz>
30221
30222         * ipa-inline-analysis.c (predicate_conditions): Move to ipa-inline.h
30223         (true_predicate, false_predicate, true_predicate_p,
30224         false_predicate_p): Remove.
30225         (single_cond_predicate, not_inlined_predicate): Turn to member function
30226         in ipa-inline.h
30227         (add_condition): Update.
30228         (add_clause): Turn to...
30229         (predicate::add_clause): ... this one; update; allow passing NULL
30230         as parameter.
30231         (and_predicates): Turn to ...
30232         (predicate::operator &=): ... this one.
30233         (predicates_equal_p): Move to predicate::operator == in ipa-inline.h
30234         (or_predicates): Turn to ...
30235         (predicate::or_with): ... this one.
30236         (evaluate_predicate): Turn to ...
30237         (predicate::evaluate): ... this one.
30238         (predicate_probability): Turn to ...
30239         (predicate::probability): ... this one.
30240         (dump_condition): Update.
30241         (dump_predicate): Turn to ...
30242         (predicate::dump): ... this one.
30243         (account_size_time): Update.
30244         (edge_set_predicate): Update.
30245         (set_hint_predicate): UPdate.
30246         (evaluate_conditions_for_known_args): Update.
30247         (evaluate_properties_for_edge): Update.
30248         (remap_predicate_after_duplication): Turn to...
30249         (predicate::remap_after_duplication): ... this one.
30250         (remap_hint_predicate_after_duplication): Update.
30251         (inline_summary_t::duplicate): UPdate.
30252         (dump_inline_edge_summary): Update.
30253         (dump_inline_summary): Update.
30254         (set_cond_stmt_execution_predicate): Update.
30255         (set_switch_stmt_execution_predicate): Update.
30256         (compute_bb_predicates): Update.
30257         (will_be_nonconstant_expr_predicate): Update.
30258         (will_be_nonconstant_predicate): Update.
30259         (phi_result_unknown_predicate): Update.
30260         (predicate_for_phi_result): Update.
30261         (array_index_predicate): Update.
30262         (estimate_function_body_sizes): Update.
30263         (estimate_node_size_and_time): Update.
30264         (estimate_ipcp_clone_size_and_time): Update.
30265         (remap_predicate): Rename to ...
30266         (predicate::remap_after_inlining): ... this one.
30267         (remap_hint_predicate): Update.
30268         (inline_merge_summary): Update.
30269         (inline_update_overall_summary): Update.
30270         (estimate_size_after_inlining): Update.
30271         (read_predicate): Rename to ...
30272         (predicate::stream_in): ... this one.
30273         (read_inline_edge_summary): Update.
30274         (write_predicate): Rename to ...
30275         (predicate::stream_out): ... this one.
30276         (write_inline_edge_summary): Update.
30277         * ipa-inline.h (MAX_CLAUSES): Turn to predicate::max_clauses.
30278         (clause_t): Turn to uint32_t
30279         (predicate): Turn to class; implement constructor and operators
30280         ==, !=, &
30281         (size_time_entry): Update.
30282         (inline_summary): Update.
30283         (inline_edge_summary): Update.
30284
30285 2017-05-18  Marc Glisse  <marc.glisse@inria.fr>
30286
30287         * fold-const.c (fold_binary_loc): Move transformation...
30288         * match.pd (C - X CMP X): ... here.
30289
30290 2017-05-18  Sheldon Lobo  <sheldon.lobo@oracle.com>
30291
30292         * config/sparc/sparc.c (sparc_option_override): Set function
30293         alignment for -mcpu=niagara7 to 64 to match the I$ line.
30294         * config/sparc/sparc.h (BRANCH_COST): Set the SPARC M7 branch
30295         latency to 1.
30296         * config/sparc/sparc.h (BRANCH_COST): Set the SPARC T4 branch
30297         latency to 2.
30298         * config/sparc/sol2.h: Fix a ASM_CPU32_DEFAULT_SPEC typo.
30299
30300 2017-05-18  Marek Polacek  <polacek@redhat.com>
30301
30302         PR sanitizer/80797
30303         * ubsan.c (instrument_null): Unwrap ADDR_EXPRs.
30304         (pass_ubsan::execute): Call gimple_assign_single_p instead of
30305         gimple_assign_load_p.
30306
30307 2017-05-17  Segher Boessenkool  <segher@kernel.crashing.org>
30308
30309         PR middle-end/80692
30310         * real.c (do_compare): Give decimal_do_compare preference over
30311         comparing just the signs.
30312
30313 2017-05-17  Uros Bizjak  <ubizjak@gmail.com>
30314
30315         * doc/md.texi (Canonicalization of Instructions): Describe the
30316         canonical form of instructions that inherently set a condition
30317         code register.
30318
30319 2017-05-17  Peter Bergner  <bergner@vnet.ibm.com>
30320
30321         PR middle-end/80775
30322         * tree-cfg.c: Move deletion of unreachable case statements to after
30323         the merging of consecutive case labels.
30324
30325 2017-05-17  Thomas Preud'homme  <thomas.preudhomme@arm.com>
30326
30327         * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Refer
30328         readers to __gnu_cmse_nonsecure_call libcall for saving, clearing and
30329         restoring of callee-saved registers.
30330
30331 2017-05-17  Eric Botcazou  <ebotcazou@adacore.com>
30332
30333         * compare-elim.c (equivalent_reg_at_start): Adjust outdated comment.
30334         * config/visium/visium.c (single_set_and_flags): Likewise.
30335         * config/visium/visium.md (Substitutions): Likewise.
30336
30337 2017-05-17  Martin Liska  <mliska@suse.cz>
30338
30339         * cfg.c: Introduce dump_flags_t type and
30340         use it instead of int type.
30341         * cfg.h: Likewise.
30342         * cfghooks.c: Likewise.
30343         * cfghooks.h (struct cfg_hooks): Likewise.
30344         * cfgrtl.c: Likewise.
30345         * cfgrtl.h: Likewise.
30346         * cgraph.c (cgraph_node::get_body): Likewise.
30347         * coretypes.h: Likewise.
30348         * domwalk.c: Likewise.
30349         * domwalk.h: Likewise.
30350         * dumpfile.c (struct dump_option_value_info): Likewise.
30351         (dump_enable_all): Likewise.
30352         (dump_switch_p_1): Likewise.
30353         (opt_info_switch_p): Likewise.
30354         * dumpfile.h (enum tree_dump_index): Likewise.
30355         (struct dump_file_info): Likewise.
30356         * genemit.c: Likewise.
30357         * generic-match-head.c: Likewise.
30358         * gengtype.c (open_base_files): Likewise.
30359         * gimple-pretty-print.c: Likewise.
30360         * gimple-pretty-print.h: Likewise.
30361         * graph.c (print_graph_cfg): Likewise.
30362         * graphite-scop-detection.c (dot_all_sese): Likewise.
30363         * ipa-devirt.c (build_type_inheritance_graph): Likewise.
30364         * loop-unroll.c (report_unroll): Likewise.
30365         * passes.c (pass_manager::register_one_dump_file): Likewise.
30366         * print-tree.c: Likewise.
30367         * statistics.c: Likewise.
30368         * tree-cfg.c: Likewise.
30369         * tree-cfg.h: Likewise.
30370         * tree-dfa.c: Likewise.
30371         * tree-dfa.h: Likewise.
30372         * tree-dump.c (dump_function): Likewise.
30373         * tree-dump.h (struct dump_info): Likewise.
30374         * tree-pretty-print.c: Likewise.
30375         * tree-pretty-print.h: Likewise.
30376         * tree-ssa-live.c: Likewise.
30377         * tree-ssa-live.h: Likewise.
30378         * tree-ssa-loop-ivcanon.c (try_unroll_loop_completely): Likewise.
30379         * tree-vect-loop.c: Likewise.
30380         * tree-vect-slp.c: Likewise.
30381
30382 2017-05-16  James Greenhalgh  <james.greenhalgh@arm.com>
30383             Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
30384
30385         PR tree-optimization/80457
30386         * tree-vect-stmts.c (vect_model_simple_cost): Model the cost
30387         of all arguments to a statement as scalar_to_vec operations.
30388         (vectorizable_call): Adjust call to vect_model_simple_cost for
30389         new parameter.
30390         (vectorizable_conversion): Likewise.
30391         (vectorizable_assignment): Likewise.
30392         (vectorizable_shift): Likewise.
30393         (vectorizable_operation): Likewise.
30394         (vectorizable_comparison): Likewise.
30395         (vect_is_simple_cond): Record the def types for operands.
30396         (vectorizable_condition): Likewise, call vect_model_simple_cost.
30397         * tree-vectorizer.h (vect_model_simple_cost): Add new parameter
30398         for statement argument count.
30399
30400 2017-05-16  Carl Love  <cel@us.ibm.com>
30401
30402         * config/rs6000/rs6000-c: Add support for built-in functions
30403         vector unsigned long long vec_bperm (vector unsigned long long,
30404                                              vector unsigned char)
30405         vector signed long long vec_mule (vector signed int,
30406                                           vector signed int)
30407         vector unsigned long long vec_mule (vector unsigned int,
30408                                             vector unsigned int)
30409         vector signed long long vec_mulo (vector signed int,
30410                                           vector signed int)
30411         vector unsigned long long vec_mulo (vector unsigned int,
30412                                             vector unsigned int)
30413         vector signed char vec_sldw (vector signed char,
30414                                      vector signed char,
30415                                      const int)
30416         vector unsigned char vec_sldw (vector unsigned char,
30417                                        vector unsigned char,
30418                                        const int)
30419         vector signed short vec_sldw (vector signed short,
30420                                       vector signed short,
30421                                       const int)
30422         vector unsigned short vec_sldw (vector unsigned short,
30423                                         vector unsigned short,
30424                                         const int)
30425         vector signed int vec_sldw (vector signed int,
30426                                     vector signed int,
30427                                     const int)
30428         vector unsigned int vec_sldw (vector unsigned int,
30429                                       vector unsigned int,
30430                                       const int)
30431         vector signed long long vec_sldw (vector signed long long,
30432                                           vector signed long long,
30433                                           const int)
30434         vector unsigned long long vec_sldw (vector unsigned long long,
30435                                             vector unsigned long long,
30436                                             const int)
30437         * config/rs6000/rs6000-c: Add support for built-in functions
30438         * config/rs6000/rs6000-builtin.def: Add definition for SLDW.
30439         * config/rs6000/altivec.h: Add defintion for vec_sldw.
30440         * doc/extend.texi: Update the built-in documentation for the
30441         new built-in functions.
30442
30443 2017-05-16  Marek Polacek  <polacek@redhat.com>
30444
30445         PR sanitizer/80536
30446         PR sanitizer/80386
30447         * tree.c (save_expr): Don't fold the expression.
30448
30449 2017-05-16  Uros Bizjak  <ubizjak@gmail.com>
30450
30451         * config/i386/i386.md (*movsi_internal): Split (?rm,*y) alternative
30452         to (?r,*Yn) and (?m,*y) alternatives, and (?*y,rm) to (?*Ym,r)
30453         and (?*y,m).  Update insn attributes.
30454
30455 2017-05-16  Martin Liska  <mliska@suse.cz>
30456
30457         * cgraph.c (cgraph_edge::resolve_speculation): Add default value for
30458         flags argument of print_gimple_stmt, print_gimple_expr,
30459         print_generic_stmt and print_generic_expr.
30460         * cgraphclones.c (symbol_table::materialize_all_clones): Likewise.
30461         * coretypes.h: Likewise.
30462         * except.c (dump_eh_tree): Likewise.
30463         * gimple-fold.c (gimple_fold_stmt_to_constant_1): Likewise.
30464         * gimple-pretty-print.h: Likewise.
30465         * gimple-ssa-backprop.c (dump_usage_prefix): Likewise.
30466         (backprop::push_to_worklist): Likewise.
30467         (backprop::pop_from_worklist): Likewise.
30468         (backprop::process_use): Likewise.
30469         (backprop::intersect_uses): Likewise.
30470         (note_replacement): Likewise.
30471         * gimple-ssa-store-merging.c
30472         (pass_store_merging::terminate_all_aliasing_chains): Likewise.
30473         (imm_store_chain_info::coalesce_immediate_stores): Likewise.
30474         (pass_store_merging::execute): Likewise.
30475         * gimple-ssa-strength-reduction.c (dump_candidate): Likewise.
30476         (ssa_base_cand_dump_callback): Likewise.
30477         (dump_incr_vec): Likewise.
30478         (replace_refs): Likewise.
30479         (replace_mult_candidate): Likewise.
30480         (create_add_on_incoming_edge): Likewise.
30481         (create_phi_basis): Likewise.
30482         (insert_initializers): Likewise.
30483         (all_phi_incrs_profitable): Likewise.
30484         (introduce_cast_before_cand): Likewise.
30485         (replace_one_candidate): Likewise.
30486         * gimplify.c (gimplify_expr): Likewise.
30487         * graphite-isl-ast-to-gimple.c (is_valid_rename): Likewise.
30488         (set_rename): Likewise.
30489         (rename_uses): Likewise.
30490         (copy_loop_phi_nodes): Likewise.
30491         (add_close_phis_to_merge_points): Likewise.
30492         (copy_loop_close_phi_args): Likewise.
30493         (copy_cond_phi_args): Likewise.
30494         (graphite_copy_stmts_from_block): Likewise.
30495         (translate_pending_phi_nodes): Likewise.
30496         * graphite-poly.c (print_pdr): Likewise.
30497         (dump_gbb_cases): Likewise.
30498         (dump_gbb_conditions): Likewise.
30499         (print_scop_params): Likewise.
30500         * graphite-scop-detection.c (build_cross_bb_scalars_def): Likewise.
30501         (build_cross_bb_scalars_use): Likewise.
30502         (gather_bbs::before_dom_children): Likewise.
30503         * hsa-dump.c (dump_hsa_immed): Likewise.
30504         * ipa-cp.c (print_ipcp_constant_value): Likewise.
30505         (get_replacement_map): Likewise.
30506         * ipa-inline-analysis.c (dump_condition): Likewise.
30507         (estimate_function_body_sizes): Likewise.
30508         * ipa-polymorphic-call.c (check_stmt_for_type_change): Likewise.
30509         (ipa_polymorphic_call_context::get_dynamic_type): Likewise.
30510         * ipa-prop.c (ipa_dump_param): Likewise.
30511         (ipa_print_node_jump_functions_for_edge): Likewise.
30512         (ipa_modify_call_arguments): Likewise.
30513         (ipa_modify_expr): Likewise.
30514         (ipa_dump_param_adjustments): Likewise.
30515         (ipa_dump_agg_replacement_values): Likewise.
30516         (ipcp_modif_dom_walker::before_dom_children): Likewise.
30517         * ipa-pure-const.c (check_stmt): Likewise.
30518         (pass_nothrow::execute): Likewise.
30519         * ipa-split.c (execute_split_functions): Likewise.
30520         * omp-offload.c (dump_oacc_loop_part): Likewise.
30521         (dump_oacc_loop): Likewise.
30522         * trans-mem.c (tm_log_emit): Likewise.
30523         (tm_memopt_accumulate_memops): Likewise.
30524         (dump_tm_memopt_set): Likewise.
30525         (dump_tm_memopt_transform): Likewise.
30526         * tree-cfg.c (gimple_verify_flow_info): Likewise.
30527         (print_loop): Likewise.
30528         * tree-chkp-opt.c (chkp_print_addr): Likewise.
30529         (chkp_gather_checks_info): Likewise.
30530         (chkp_get_check_result): Likewise.
30531         (chkp_remove_check_if_pass): Likewise.
30532         (chkp_use_outer_bounds_if_possible): Likewise.
30533         (chkp_reduce_bounds_lifetime): Likewise.
30534         * tree-chkp.c (chkp_register_addr_bounds): Likewise.
30535         (chkp_mark_completed_bounds): Likewise.
30536         (chkp_register_incomplete_bounds): Likewise.
30537         (chkp_mark_invalid_bounds): Likewise.
30538         (chkp_maybe_copy_and_register_bounds): Likewise.
30539         (chkp_build_returned_bound): Likewise.
30540         (chkp_get_bound_for_parm): Likewise.
30541         (chkp_build_bndldx): Likewise.
30542         (chkp_get_bounds_by_definition): Likewise.
30543         (chkp_generate_extern_var_bounds): Likewise.
30544         (chkp_get_bounds_for_decl_addr): Likewise.
30545         * tree-chrec.c (chrec_apply): Likewise.
30546         * tree-data-ref.c (dump_data_reference): Likewise.
30547         (dump_subscript): Likewise.
30548         (dump_data_dependence_relation): Likewise.
30549         (analyze_overlapping_iterations): Likewise.
30550         * tree-inline.c (expand_call_inline): Likewise.
30551         (tree_function_versioning): Likewise.
30552         * tree-into-ssa.c (dump_defs_stack): Likewise.
30553         (dump_currdefs): Likewise.
30554         (dump_names_replaced_by): Likewise.
30555         (dump_update_ssa): Likewise.
30556         (update_ssa): Likewise.
30557         * tree-object-size.c (pass_object_sizes::execute): Likewise.
30558         * tree-parloops.c (build_new_reduction): Likewise.
30559         (try_create_reduction_list): Likewise.
30560         (ref_conflicts_with_region): Likewise.
30561         (oacc_entry_exit_ok_1): Likewise.
30562         (oacc_entry_exit_single_gang): Likewise.
30563         * tree-pretty-print.h: Likewise.
30564         * tree-scalar-evolution.c (set_scalar_evolution): Likewise.
30565         (get_scalar_evolution): Likewise.
30566         (add_to_evolution): Likewise.
30567         (get_loop_exit_condition): Likewise.
30568         (analyze_evolution_in_loop): Likewise.
30569         (analyze_initial_condition): Likewise.
30570         (analyze_scalar_evolution): Likewise.
30571         (instantiate_scev): Likewise.
30572         (number_of_latch_executions): Likewise.
30573         (gather_chrec_stats): Likewise.
30574         (final_value_replacement_loop): Likewise.
30575         (scev_const_prop): Likewise.
30576         * tree-sra.c (dump_access): Likewise.
30577         (disqualify_candidate): Likewise.
30578         (create_access): Likewise.
30579         (reject): Likewise.
30580         (maybe_add_sra_candidate): Likewise.
30581         (create_access_replacement): Likewise.
30582         (analyze_access_subtree): Likewise.
30583         (analyze_all_variable_accesses): Likewise.
30584         (sra_modify_assign): Likewise.
30585         (initialize_constant_pool_replacements): Likewise.
30586         (find_param_candidates): Likewise.
30587         (decide_one_param_reduction): Likewise.
30588         (replace_removed_params_ssa_names): Likewise.
30589         * tree-ssa-ccp.c (ccp_fold_stmt): Likewise.
30590         * tree-ssa-copy.c (dump_copy_of): Likewise.
30591         (copy_prop_visit_cond_stmt): Likewise.
30592         * tree-ssa-dce.c (mark_operand_necessary): Likewise.
30593         * tree-ssa-dom.c (pass_dominator::execute): Likewise.
30594         (record_equivalences_from_stmt): Likewise.
30595         * tree-ssa-dse.c (compute_trims): Likewise.
30596         (delete_dead_call): Likewise.
30597         (delete_dead_assignment): Likewise.
30598         * tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Likewise.
30599         (forward_propagate_into_cond): Likewise.
30600         (pass_forwprop::execute): Likewise.
30601         * tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
30602         * tree-ssa-loop-im.c (invariantness_dom_walker::before_dom_children):
30603         Likewise.
30604         (move_computations_worker): Likewise.
30605         (execute_sm): Likewise.
30606         * tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Likewise.
30607         (remove_exits_and_undefined_stmts): Likewise.
30608         (remove_redundant_iv_tests): Likewise.
30609         * tree-ssa-loop-ivopts.c (dump_use): Likewise.
30610         (adjust_iv_update_pos): Likewise.
30611         * tree-ssa-math-opts.c (bswap_replace): Likewise.
30612         * tree-ssa-phiopt.c (factor_out_conditional_conversion): Likewise.
30613         (value_replacement): Likewise.
30614         * tree-ssa-phiprop.c (phiprop_insert_phi): Likewise.
30615         * tree-ssa-pre.c (print_pre_expr): Likewise.
30616         (get_representative_for): Likewise.
30617         (create_expression_by_pieces): Likewise.
30618         (insert_into_preds_of_block): Likewise.
30619         (eliminate_insert): Likewise.
30620         (eliminate_dom_walker::before_dom_children): Likewise.
30621         (eliminate): Likewise.
30622         (remove_dead_inserted_code): Likewise.
30623         * tree-ssa-propagate.c (substitute_and_fold): Likewise.
30624         * tree-ssa-reassoc.c (get_rank): Likewise.
30625         (eliminate_duplicate_pair): Likewise.
30626         (eliminate_plus_minus_pair): Likewise.
30627         (eliminate_not_pairs): Likewise.
30628         (undistribute_ops_list): Likewise.
30629         (eliminate_redundant_comparison): Likewise.
30630         (update_range_test): Likewise.
30631         (optimize_range_tests_var_bound): Likewise.
30632         (optimize_vec_cond_expr): Likewise.
30633         (rewrite_expr_tree): Likewise.
30634         (rewrite_expr_tree_parallel): Likewise.
30635         (linearize_expr): Likewise.
30636         (break_up_subtract): Likewise.
30637         (linearize_expr_tree): Likewise.
30638         (attempt_builtin_powi): Likewise.
30639         (attempt_builtin_copysign): Likewise.
30640         (transform_stmt_to_copy): Likewise.
30641         (transform_stmt_to_multiply): Likewise.
30642         (dump_ops_vector): Likewise.
30643         * tree-ssa-sccvn.c (vn_nary_build_or_lookup_1): Likewise.
30644         (print_scc): Likewise.
30645         (set_ssa_val_to): Likewise.
30646         (visit_reference_op_store): Likewise.
30647         (visit_use): Likewise.
30648         (sccvn_dom_walker::before_dom_children): Likewise.
30649         (run_scc_vn): Likewise.
30650         * tree-ssa-scopedtables.c (avail_exprs_stack::lookup_avail_expr):
30651         Likewise.
30652         (expr_hash_elt::print): Likewise.
30653         (const_and_copies::pop_to_marker): Likewise.
30654         (const_and_copies::record_const_or_copy_raw): Likewise.
30655         * tree-ssa-structalias.c (compute_dependence_clique): Likewise.
30656         * tree-ssa-uninit.c (collect_phi_def_edges): Likewise.
30657         (dump_predicates): Likewise.
30658         (find_uninit_use): Likewise.
30659         (warn_uninitialized_phi): Likewise.
30660         (pass_late_warn_uninitialized::execute): Likewise.
30661         * tree-ssa.c (verify_vssa): Likewise.
30662         (verify_ssa): Likewise.
30663         (maybe_optimize_var): Likewise.
30664         * tree-vrp.c (dump_value_range): Likewise.
30665         (dump_all_value_ranges): Likewise.
30666         (dump_asserts_for): Likewise.
30667         (register_edge_assert_for_2): Likewise.
30668         (vrp_visit_cond_stmt): Likewise.
30669         (vrp_visit_switch_stmt): Likewise.
30670         (vrp_visit_stmt): Likewise.
30671         (vrp_visit_phi_node): Likewise.
30672         (simplify_cond_using_ranges_1): Likewise.
30673         (fold_predicate_in): Likewise.
30674         (evrp_dom_walker::before_dom_children): Likewise.
30675         (evrp_dom_walker::push_value_range): Likewise.
30676         (evrp_dom_walker::pop_value_range): Likewise.
30677         (execute_early_vrp): Likewise.
30678
30679 2017-05-16  Richard Biener  <rguenther@suse.de>
30680
30681         * dwarf2out.c (loc_list_from_tree_1): Do not create
30682         DW_OP_GNU_variable_value for DECL_IGNORED_P decls.
30683
30684 2017-05-16  Richard Biener  <rguenther@suse.de>
30685
30686         * dwarf2out.c (resolve_variable_value_in_expr): Lookup DIE
30687         just generated.
30688         (note_variable_value_in_expr): If we resolved the decl ref
30689         do not push to the stack.
30690
30691 2017-05-16  Matthew Wahab  <matthew.wahab@arm.com>
30692
30693         * config/arm/arm_neon.h (vadd_f16): Use standard arithmetic
30694         operations in fast-math mode.
30695         (vaddq_f16): Likewise.
30696         (vmul_f16): Likewise.
30697         (vmulq_f16): Likewise.
30698         (vsub_f16): Likewise.
30699         (vsubq_f16): Likewise.
30700         * config/arm/neon.md (add<mode>3): New.
30701         (sub<mode>3): New.
30702         (fma:<VH:mode>3): New.  Also remove outdated comment.
30703         (mul<mode>3): New.
30704
30705 2017-05-16  Martin Liska  <mliska@suse.cz>
30706
30707         PR ipa/79849.
30708         PR ipa/79850.
30709         * ipa-devirt.c (warn_types_mismatch): Fix typo.
30710         (odr_types_equivalent_p): Likewise.
30711
30712 2017-05-15  Sylvestre Ledru  <sylvestre@debian.org>
30713
30714         * plugin.c (try_init_one_plugin): Fix ressource leaks (CID 726637).
30715
30716 2017-05-15  Uros Bizjak  <ubizjak@gmail.com>
30717
30718         PR target/80425
30719         * config/i386.i386.md (*zero_extendsidi2): Do not penalize
30720         non-interunit SSE move alternatives with '?'.
30721         (zero-extendsidi peephole2): New peephole to skip intermediate
30722         general register in SSE zero-extend sequence.
30723
30724 2017-05-15  Jeff Law  <law@redhat.com>
30725
30726         * reorg.c (relax_delay_slots): Create a new variable to hold
30727         the temporary target rather than clobbering TARGET_LABEL.
30728
30729         * config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Add
30730         missing argument to extract_bit_field call.
30731         * config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Likewise.
30732
30733 2017-05-15  Martin Liska  <mliska@suse.cz>
30734
30735         PR driver/31468
30736         * gcc.c (process_command): Do not allow empty argument of -o option.
30737
30738 2017-05-15  Renlin Li  <renlin.li@arm.com>
30739
30740         * config/aarch64/aarch64-protos.h (aarch64_expand_call): Declare.
30741         * config/aarch64/aarch64.c (aarch64_expand_call): Define.
30742         * config/aarch64/constraints.md (Usf): Add long call check.
30743         * config/aarch64/aarch64.md (call): Use aarch64_expand_call.
30744         (call_value): Likewise.
30745         (sibcall): Likewise.
30746         (sibcall_value): Likewise.
30747         (call_insn): New.
30748         (call_value_insn): New.
30749         (sibcall_insn): Update rtx pattern.
30750         (sibcall_value_insn): Likewise.
30751         (call_internal): Remove.
30752         (call_value_internal): Likewise.
30753         (sibcall_internal): Likewise.
30754         (sibcall_value_internal): Likewise.
30755         (call_reg): Likewise.
30756         (call_symbol): Likewise.
30757         (call_value_reg): Likewise.
30758         (call_value_symbol): Likewise.
30759
30760 2017-05-14  Krister Walfridsson  <krister.walfridsson@gmail.com>
30761
30762         PR target/80600
30763         * config/netbsd.h (NETBSD_LIBGCC_SPEC): Always add -lgcc.
30764
30765 2017-05-14  Uros Bizjak  <ubizjak@gmail.com>
30766
30767         * config/i386.i386.c (ix86_cc_modes_compatible): CCNOmode is
30768         compatible with CCGOCmode and with CCZmode.
30769
30770 2017-05-14  Martin Sebor  <msebor@redhat.com>
30771
30772         PR middle-end/77671
30773         * gimple-fold.c (gimple_fold_builtin_sprintf): Make extern.
30774         (gimple_fold_builtin_snprintf): Same.
30775         * gimple-fold.h (gimple_fold_builtin_sprintf): Declare.
30776         (gimple_fold_builtin_snprintf): Same.
30777         * gimple-ssa-sprintf.c (get_format_string): Correct the detection
30778         of character types.
30779         (is_call_safe): New function.
30780         (try_substitute_return_value): Call it.
30781         (try_simplify_call): New function.
30782         (pass_sprintf_length::handle_gimple_call): Call it.
30783
30784 2017-05-14  Martin Sebor  <msebor@redhat.com>
30785
30786         PR middle-end/80669
30787         * builtins.c (expand_builtin_stpncpy): Simplify.
30788
30789 2017-05-14  Daniel Santos  <daniel.santos@pobox.com>
30790
30791         * config/i386/i386.opt: Add option -mcall-ms2sysv-xlogues.
30792         * config/i386/i386.h
30793         (x86_64_ms_sysv_extra_clobbered_registers): Change type to unsigned.
30794         (NUM_X86_64_MS_CLOBBERED_REGS): New macro.
30795         (struct machine_function): Add new members call_ms2sysv,
30796         call_ms2sysv_pad_in, call_ms2sysv_pad_out and call_ms2sysv_extra_regs.
30797         (struct machine_frame_state): New fields sp_realigned and
30798         sp_realigned_offset.
30799         * config/i386/i386.c
30800         (enum xlogue_stub): New enum.
30801         (enum xlogue_stub_sets): New enum.
30802         (class xlogue_layout): New class.
30803         (struct ix86_frame): New fields stack_realign_allocate_offset,
30804         stack_realign_offset and outlined_save_offset.  Modify comments to
30805         detail stack layout when using out-of-line stubs.
30806         (ix86_target_string): Add -mcall-ms2sysv-xlogues option.
30807         (ix86_option_override_internal): Add sorry() for TARGET_SEH and
30808         -mcall-ms2sysv-xlogues.
30809         (stub_managed_regs): New static variable.
30810         (ix86_save_reg): Add new parameter ignore_outlined to optionally omit
30811         registers managed by out-of-line stub.
30812         (disable_call_ms2sysv_xlogues): New function.
30813         (ix86_compute_frame_layout): Modify re-alignment calculations, disable
30814         m->call_ms2sysv when appropriate and compute frame layout for
30815         out-of-line stubs.
30816         (sp_valid_at, fp_valid_at): New inline functions.
30817         (choose_basereg): New function.
30818         (choose_baseaddr): Add align parameter, use choose_basereg and modify
30819         all callers.
30820         (ix86_emit_save_reg_using_mov, ix86_emit_restore_sse_regs_using_mov):
30821         Use align parameter of choose_baseaddr to generated aligned SSE movs
30822         when possible.
30823         (pro_epilogue_adjust_stack): Modify to track
30824         machine_frame_state::sp_realigned.
30825         (ix86_nsaved_regs): Modify to accommodate changes to ix86_save_reg.
30826         (ix86_nsaved_sseregs): Likewise.
30827         (ix86_emit_save_regs): Likewise.
30828         (ix86_emit_save_regs_using_mov): Likewise.
30829         (ix86_emit_save_sse_regs_using_mov): Likewise.
30830         (get_scratch_register_on_entry): Likewise.
30831         (gen_frame_set): New function.
30832         (gen_frame_load): Likewise.
30833         (gen_frame_store): Likewise.
30834         (emit_outlined_ms2sysv_save): Likewise.
30835         (emit_outlined_ms2sysv_restore): Likewise.
30836         (ix86_expand_prologue): Modify stack re-alignment code and call
30837         emit_outlined_ms2sysv_save when appropriate.
30838         (ix86_emit_leave): Clear machine_frame_state::sp_realigned.  Add
30839         parameter rtx_insn *insn, which allows the function to be used to only
30840         generate the notes.
30841         (ix86_expand_epilogue): Modify validity checks of frame and stack
30842         pointers, and call emit_outlined_ms2sysv_restore when appropriate.
30843         (ix86_expand_call): Modify to enable m->call_ms2sysv when appropriate.
30844         * config/i386/predicates.md
30845         (save_multiple): New predicate.
30846         (restore_multiple): Likewise.
30847         * config/i386/sse.md
30848         (save_multiple<mode>): New pattern.
30849         (save_multiple_realign<mode>): Likewise.
30850         (restore_multiple<mode>): Likewise.
30851         (restore_multiple_and_return<mode>): Likewise.
30852         (restore_multiple_leave_return<mode>): Likewise.
30853         * Makefile.in: Export HOSTCXX and HOSTCXXFLAGS to site.exp
30854
30855 2017-05-14  Julia Koval  <julia.koval@intel.com>
30856
30857         * config/i386/i386-builtin-types.def (VOID_FTYPE_INT_INT64): New type.
30858         * config/i386/i386-builtin.def (__builtin_ia32_xgetbv)
30859         (__builtin_ia32_xsetbv): New builtins.
30860         * config/i386/i386.c (ix86_expand_special_args_builtin):
30861         Process new types.
30862         (ix86_expand_builtin): Special expand for new intrinsics.
30863         * config/i386/i386.md (UNSPECV_XGETBV, UNSPECV_XSETBV): New.
30864         (xsetbv, xsetbv_rex64, xgetbv, xgetbv_rex64): New insn patterns.
30865         * config/i386/xsaveintrin.h (_xsetbv, _getbv): New intrinsics.
30866
30867 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30868
30869         * cfganal.c (inverted_post_order_compute): Change argument type
30870         to vec *.
30871         * cfganal.h (inverted_post_order_compute): Adjust prototype.
30872         * df-core.c (rest_of_handle_df_initialize): Adjust.
30873         (rest_of_handle_df_finish): Likewise.
30874         (df_analyze_1): Likewise.
30875         (df_analyze): Likewise.
30876         (loop_inverted_post_order_compute): Change argument to be a vec *.
30877         (df_analyze_loop): Adjust.
30878         (df_get_n_blocks): Likewise.
30879         (df_get_postorder): Likewise.
30880         * df.h (struct df_d): Change field to be a vec.
30881         * lcm.c (compute_laterin): Adjust.
30882         (compute_available): Likewise.
30883         * lra-lives.c (lra_create_live_ranges_1): Likewise.
30884         * tree-ssa-dce.c (remove_dead_stmt): Likewise.
30885         * tree-ssa-pre.c (compute_antic): Likewise.
30886
30887 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30888
30889         * cfganal.c (connect_infinite_loops_to_exit): Adjust.
30890         (depth_first_search::depth_first_search): Change structure init
30891         function to this constructor.
30892         (depth_first_search::add_bb): Rename function to this member.
30893         (depth_first_search::execute): Likewise.
30894         (flow_dfs_compute_reverse_finish): Adjust.
30895
30896 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30897
30898         * ddg.c (find_nodes_on_paths): Use auto_sbitmap.
30899         (longest_simple_path): Likewise.
30900         * shrink-wrap.c (spread_components): Likewise.
30901         (disqualify_problematic_components): Likewise.
30902         (emit_common_heads_for_components): Likewise.
30903         (emit_common_tails_for_components): Likewise.
30904         (insert_prologue_epilogue_for_components): Likewise.
30905
30906 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30907
30908         * tree-ssa-dse.c (dse_dom_walker): Make m_live_byes a
30909         auto_sbitmap.
30910
30911 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30912
30913         * df-core.c (df_set_blocks): Start using auto_bitmap.
30914         (df_compact_blocks): Likewise.
30915         * df-problems.c (df_rd_confluence_n): Likewise.
30916         * df-scan.c (df_insn_rescan_all): Likewise.
30917         (df_process_deferred_rescans): Likewise.
30918         (df_update_entry_block_defs): Likewise.
30919         (df_update_exit_block_uses): Likewise.
30920         (df_entry_block_bitmap_verify): Likewise.
30921         (df_exit_block_bitmap_verify): Likewise.
30922         (df_scan_verify): Likewise.
30923         * lra-constraints.c (lra_constraints): Likewise.
30924         (undo_optional_reloads): Likewise.
30925         (lra_undo_inheritance): Likewise.
30926         * lra-remat.c (calculate_gen_cands): Likewise.
30927         (do_remat): Likewise.
30928         * lra-spills.c (assign_spill_hard_regs): Likewise.
30929         (spill_pseudos): Likewise.
30930         * tree-ssa-pre.c (bitmap_set_and): Likewise.
30931         (bitmap_set_subtract_values): Likewise.
30932
30933 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30934
30935         * haifa-sched.c (estimate_shadow_tick): Replace manual bitmap
30936         management with auto_bitmap.
30937         (fix_inter_tick): Likewise.
30938         (fix_recovery_deps): Likewise.
30939         * ira.c (add_store_equivs): Likewise.
30940         (find_moveable_pseudos): Likewise.
30941         (split_live_ranges_for_shrink_wrap): Likewise.
30942         * print-rtl.c (rtx_reuse_manager::rtx_reuse_manager): Likewise.
30943         (rtx_reuse_manager::seen_def_p): Likewise.
30944         (rtx_reuse_manager::set_seen_def): Likewise.
30945         * print-rtl.h (class rtx_reuse_manager): Likewise.
30946
30947 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30948
30949         * bt-load.c (combine_btr_defs): Use auto_bitmap to manage bitmap
30950         lifetime.
30951         (migrate_btr_def): Likewise.
30952         * cfgloop.c (get_loop_body_in_bfs_order): Likewise.
30953         * df-core.c (loop_post_order_compute): Likewise.
30954         (loop_inverted_post_order_compute): Likewise.
30955         * hsa-common.h: Likewise.
30956         * hsa-gen.c (hsa_bb::~hsa_bb): Likewise.
30957         * init-regs.c (initialize_uninitialized_regs): Likewise.
30958         * ipa-inline.c (resolve_noninline_speculation): Likewise.
30959         (inline_small_functions): Likewise.
30960         * ipa-reference.c (ipa_reference_write_optimization_summary): Likewise.
30961         * ira.c (combine_and_move_insns): Likewise.
30962         (build_insn_chain): Likewise.
30963         * loop-invariant.c (find_invariants): Likewise.
30964         * lower-subreg.c (propagate_pseudo_copies): Likewise.
30965         * predict.c (tree_predict_by_opcode): Likewise.
30966         (predict_paths_leading_to): Likewise.
30967         (predict_paths_leading_to_edge): Likewise.
30968         (estimate_loops_at_level): Likewise.
30969         (estimate_loops): Likewise.
30970         * shrink-wrap.c (try_shrink_wrapping): Likewise.
30971         (spread_components): Likewise.
30972         * tree-cfg.c (remove_edge_and_dominated_blocks): Likewise.
30973         * tree-loop-distribution.c (rdg_build_partitions): Likewise.
30974         * tree-predcom.c (tree_predictive_commoning_loop): Likewise.
30975         * tree-ssa-coalesce.c (coalesce_ssa_name): Likewise.
30976         * tree-ssa-phionlycprop.c (pass_phi_only_cprop::execute): Likewise.
30977         * tree-ssa-pre.c (remove_dead_inserted_code): Likewise.
30978         * tree-ssa-sink.c (nearest_common_dominator_of_uses): Likewise.
30979         * tree-ssa-threadupdate.c (compute_path_counts): Likewise.
30980         (mark_threaded_blocks): Likewise.
30981         (thread_through_all_blocks): Likewise.
30982         * tree-ssa.c (verify_ssa): Likewise.
30983         (execute_update_addresses_taken): Likewise.
30984         * tree-ssanames.c (verify_ssaname_freelists): Likewise.
30985
30986 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30987
30988         * cfganal.c (mark_dfs_back_edges): Replace manual stack with
30989         auto_vec.
30990         (post_order_compute): Likewise.
30991         (inverted_post_order_compute): Likewise.
30992         (pre_and_rev_post_order_compute_fn): Likewise.
30993
30994 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
30995
30996         * genrecog.c (int_set::int_set): Explicitly construct our
30997         auto_vec base class.
30998         * vec.h (auto_vec::auto_vec): New constructor.
30999
31000 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
31001
31002         * bitmap.h (class auto_bitmap): New constructor taking
31003         bitmap_obstack * argument.
31004
31005 2017-05-13  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>
31006
31007         * bitmap.h (class auto_bitmap): Change type of m_bits to
31008         bitmap_head, and adjust ctor / dtor and member operators.
31009
31010 2017-05-13  Uros Bizjak  <ubizjak@gmail.com>
31011
31012         * compare-elim.c (equivalent_reg_at_start): Return NULL_RTX
31013         when returned register mode doesn't match original mode.
31014
31015 2017-05-12  Jeff Law  <law@redhat.com>
31016             Jakub Jelinek  <jakub@redhat.com>
31017
31018         * config/mn10300/mn10300.c (mn10300_match_ccmode): Fix where
31019         we look for cc setter after the compare-elim changes.
31020         * config/mn10300/mn10300.md (addsi3_flags): Fix order of patterns
31021         within the vector to match what compare-elim now expects.
31022         (subsi3_flags, andsi3_flags, iorsi3_flags): Likewise.
31023         (xorsi3_flags, one_cmplsi2_flags): Likewise.
31024
31025         * config/rx/rx.c (rx_match_ccmode): Fix where we look cc setter
31026         after the compare-elim changes.
31027         * config/rx/rx.md (abssi2_flags): Fix order of patterns within
31028         the vector to match what compare-elim now expects.
31029         (addsi3_flags, adc_flags, addsi3_flags peepholes): Likewise.
31030         (andsi3_flags, negsi2_flags, one_cmplsi2_flags): Likewise.
31031         (iorsi3_flags, rotlsi3_flags, rotrsi3_flags): Likewise.
31032         (ashrsi3_flags, lshrsi3_flags, ashlsi3_flags): Likewise.
31033         (ssaddsi3, subsi3_flags, sbb_flags, xorsi3_flags): Likewise.
31034
31035         * config/visium/visium.c (single_set_and_flags): Fix where
31036         we look for cc setter after the compare-elim changes.
31037         * config/visium/visium.md (flags_subst_logic): Fix order of patterns
31038         with the vector to match what compare-elim now expects.
31039         (flags_subst_arith, add<mode>3_insn_set_carry): Likewise.
31040         (add<mode>3_insn_set_overflow, addsi3_insn_set_carry): Likewise.
31041         (addsi3_insn_set_overflow, sub<mode>3_insn_set_carry): Likewise.
31042         (sub<mode>3_insn_set_overflow, subsi3_insn_set_carry): Likewise.
31043         (subsi3_insn_set_overflow, negsi2_insn_set_carry): Likewise.
31044         (neg<mode>2_insn_set_overflow): Likewise.
31045
31046 2017-05-12  Jim Wilson  <jim.wilson@linaro.org>
31047
31048         PR middle-end/79794
31049         * expmed.c (extract_bit_field_1): Add alt_rtl argument.  Before
31050         maybe_expand_insn call, set ops[0].target.  If still set after call,
31051         set alt_rtl.  Add extra arg to recursive calls.
31052         (extract_bit_field): Add alt_rtl argument.  Pass to
31053         extract_bit_field.
31054         * expmed.h (extract_bit_field): Fix prototype.
31055         * expr.c (emit_group_load_1, copy_blkmode_from_reg)
31056         (copy_blkmode_to_reg, read_complex_part, store_field): Pass extra NULL
31057         to extract_bit_field_calls.
31058         (expand_expr_real_1): Pass alt_rtl to expand_expr_real instead of 0.
31059         Pass alt_rtl to extract_bit_field calls.
31060         * calls.c (store_unaligned_arguments_into_psuedos)
31061         load_register_parameters): Pass extra NULL to extract_bit_field calls.
31062         * optabs.c (maybe_legitimize_operand): Clear op->target when call
31063         gen_reg_rtx.
31064         * optabs.h (struct expand_operand): Add target bitfield.
31065
31066 2017-05-12  Uros Bizjak  <ubizjak@gmail.com>
31067
31068         * compare-elim.c (try_eliminate_compare): Canonicalize
31069         operation with embedded compare to
31070         [(set (reg:CCM) (compare:CCM (operation) (immediate)))
31071          (set (reg) (operation)].
31072
31073         * config/i386/i386.c (TARGET_FLAGS_REGNUM): New define.
31074
31075 2017-05-12  Uros Bizjak  <ubizjak@gmail.com>
31076
31077         PR target/80723
31078         * config/i386/i386.c (ix86_rtx_cost) [case PLUS]: Ignore the
31079         cost of adding a carry flag for ADC instruction.
31080         [case MINUS]: Ignore the cost of subtracting a carry flag
31081         for SBB instruction.
31082
31083 2017-05-12  Steven Munroe  <munroesj@gcc.gnu.org>
31084
31085         * config.gcc (powerpc*-*-*): Add bmi2intrin.h, bmiintrin.h,
31086         and x86intrin.h
31087         * config/rs6000/bmiintrin.h: New file.
31088         * config/rs6000/bmi2intrin.h: New file.
31089         * config/rs6000/x86intrin.h: New file.
31090
31091 2017-05-12  Jeff Law  <law@redhat.com>
31092
31093         * tree-vrp.c (vrp_dom_walker::before_dom_children): Push unwinding
31094         markers.
31095
31096 2017-05-12  Peter Bergner  <bergner@vnet.ibm.com>
31097
31098         PR middle-end/80707
31099         * tree-cfg.c: Remove cfg edges of unreachable case statements.
31100
31101 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
31102
31103         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
31104         early expansion of vector divide builtins.
31105         (builtin_function_type): Add VSX_BUILTIN_UDIV_V2DI to the list of
31106         builtins identified as having unsigned arguments.
31107
31108 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
31109
31110         * config/rs6000/rs6000.c (gimple-fold.h): New #include.
31111         (rs6000_gimple_fold_builtin): Add handling for early GIMPLE
31112         expansion of vector logical operations (and, andc, or, xor,
31113         nor, orc, nand).
31114
31115 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
31116
31117         * gimple-fold.c (create_tmp_reg_or_ssa_name): Remove static declaration.
31118         * gimple-fold.h (create_tmp_reg_or_ssa_name): New prototype.
31119
31120 2017-05-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
31121
31122         * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling for
31123         early GIMPLE expansion of vector multiplies.
31124
31125 2017-05-12  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
31126
31127         * config/arm/arm.md (movsi): Add TARGET_32BIT in addition to the
31128         TARGET_HAVE_MOVT conditional.
31129         (movt splitter): Likewise.
31130
31131 2017-05-12  Richard Biener  <rguenther@suse.de>
31132
31133         * tree-ssa-sccvn.h (has_VN_INFO): Declare.
31134         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
31135         Fold all stmts not inplace.
31136
31137 2017-05-12  Richard Biener  <rguenther@suse.de>
31138
31139         PR tree-optimization/80713
31140         * tree-ssa-pre.c (remove_dead_inserted_code): Clear
31141         inserted_exprs bit for not removed stmts.
31142
31143 2017-05-12  Thomas Schwinge  <thomas@codesourcery.com>
31144
31145         PR middle-end/69921
31146         * tree-parloops.c (create_parallel_loop): Set "oacc kernels
31147         parallelized" attribute for parallelized OpenACC kernels.
31148         * omp-offload.c (execute_oacc_device_lower): Use it.
31149
31150         * omp-expand.c (expand_omp_target) <GF_OMP_TARGET_KIND_OACC_KERNELS>:
31151         Set "oacc kernels" attribute.
31152         * omp-general.c (oacc_set_fn_attrib): Remove is_kernel formal
31153         parameter.  Adjust all users.
31154         (oacc_fn_attrib_kernels_p): Remove function.
31155         * omp-offload.c (execute_oacc_device_lower): Look for "oacc
31156         kernels" attribute instead of calling oacc_fn_attrib_kernels_p.
31157         * tree-ssa-loop.c (gate_oacc_kernels): Likewise.
31158         * tree-parloops.c (create_parallel_loop): If oacc_kernels_p,
31159         assert "oacc kernels" attribute is set.
31160
31161 2017-05-11  Carl Love  <cel@us.ibm.com>
31162
31163         * config/rs6000/rs6000-c: Add support for built-in functions
31164         vector unsigned char vec_popcnt (vector signed char)
31165         vector unsigned char vec_popcnt (vector unsigned char)
31166         vector unsigned short vec_popcnt (vector signed short)
31167         vector unsigned short vec_popcnt (vector unsigned short)
31168         vector unsigned int vec_popcnt (vector signed int)
31169         vector unsigned int vec_popcnt (vector unsigned int)
31170         vector unsigned long long vec_popcnt (vector signed long long)
31171         vector unsigned long long vec_popcnt (vector unsigned long long)
31172         vector signed long long vec_slo (vector signed long long,
31173                                          vector signed char)
31174         vector signed long long vec_slo (vector signed long long,
31175                                          vector unsigned char)
31176         vector unsigned long long vec_slo (vector unsigned long long,
31177                                            vector signed char)
31178         vector unsigned long long vec_slo (vector unsigned long long,
31179                                            vector unsigned char)
31180         * config/rs6000/rs6000-builtin.def: Add definitions for VPOPCNTUB,
31181         VPOPCNTUH, VPOPCNTUW, and VPOPCNTUD overloads.
31182         * config/rs6000/altivec.h: Add define for vec_popcnt, vec_popcntb,
31183         vec_popcnth, vec_popcntw and vec_popcntd built-in functions.
31184         * doc/extend.texi: Update the built-in documentation file for the
31185         new built-in functions.
31186
31187 2017-05-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
31188
31189         * attribs.h (sorted_attr_string): Move machine independent
31190         functions for target clone support from the i386 port to common
31191         code.  Rename ix86_function_versions to common_function_versions.
31192         Rename make_name to make_unique_name.
31193         (common_function_versions): Likewise.
31194         (make_unique_name): Likewise.
31195         (make_dispatcher_decl): Likewise.
31196         (is_function_default_version): Likewise.
31197         * attribs.c (attr_strcmp): Likewise.
31198         (sorted_attr_string): Likewise.
31199         (common_function_versions): Likewise.
31200         (make_unique_name): Likewise.
31201         (make_dispatcher_decl): Likewise.
31202         (is_function_default_version): Likewise.
31203         * config/i386/i386.c (attr_strcmp): Likewise.
31204         (sorted_attr_string): Likewise.
31205         (ix86_function_versions): Likewise.
31206         (make_name): Likewise.
31207         (make_dispatcher_decl): Likewise.
31208         (is_function_default_version): Likewise.
31209         (TARGET_OPTION_FUNCTION_VERSIONS): Update target function hook.
31210
31211 2017-05-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
31212
31213         PR target/80695
31214         * config/rs6000/rs6000.c (rs6000_builtin_vectorization_cost):
31215         Account for direct move costs for vec_construct of integer
31216         vectors.
31217
31218 2017-05-11  Uros Bizjak  <ubizjak@gmail.com>
31219
31220         PR target/80706
31221         * config/i386/sync.md (UNSPEC_LDX_ATOMIC): New unspec.
31222         (UNSPEC_STX_ATOMIC): Ditto.
31223         (loaddi_via_sse): New insn.
31224         (storedi_via_sse): Ditto.
31225         (atomic_loaddi_fpu): Emit loaddi_via_sse and storedi_via_sse.
31226         Update corresponding peephole2 patterns.
31227         (atomic_storedi_fpu): Ditto.
31228
31229 2017-05-11  Julia Koval  <julia.koval@intel.com>
31230
31231         * config/i386/avx512fintrin.h (_mm_mask_rsqrt14_sd)
31232         (_mm_maskz_rsqrt14_sd, _mm_mask_rsqrt14_ss, _mm_maskz_rsqrt14_ss):
31233         New intrinsics.
31234         * config/i386/i386-builtin.def (__builtin_ia32_rsqrt14sd_mask)
31235         (__builtin_ia32_rsqrt14ss_mask): New builtins.
31236         * config/i386/sse.md (rsqrt14_<mode>_mask): New pattern.
31237
31238 2017-05-11  Nathan Sidwell  <nathan@acm.org>
31239
31240         * graphite-poly.c: Include dumpfile.h.
31241
31242         * dumpfle.h (dump_function): Declare here ...
31243         * tree-dump.h (dump_function): ... not here.
31244         * dumpfile.c: #include tree-cfg.h.
31245         (dump_function): Move here from ...
31246         * tree-dump.c (dump_function): ... here.
31247         * gimplify.c: #include splay-tree.h, not tree-dump.h.
31248         * graphite-poly.c: Don't include tree-dump.h.
31249         * cgraphclones.c: Include dumpfile.h not tree-dump.h.
31250         * print-tree.c: Likewise.
31251         * stor-layout.c: Likewise.
31252         * tree-nested.c: Likewise.
31253
31254         * dumpfile.c (dump_start): Use TDF_FLAGS.
31255         (dump_enable_all): Fix TDF_KIND check thinko.
31256
31257 2017-05-11  Kelvin Nilsen  <kelvin@gcc.gnu.org>
31258
31259         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
31260         array entries to represent two legal parameterizations of the
31261         overloaded __builtin_cmpb function, as represented by the
31262         P6_OV_BUILTIN_CMPB constant.
31263         (altivec_resolve_overloaded_builtin): Add special case handling
31264         for the __builtin_cmpb function, as represented by the
31265         P6_OV_BUILTIN_CMPB constant.
31266         * config/rs6000/rs6000-builtin.def (BU_P6_2): New macro.
31267         (BU_P6_64BIT_2): New macro.
31268         (BU_P6_OVERLOAD_2): New macro
31269         (CMPB_32): Add 32-bit compare-bytes support for 32-bit only targets.
31270         (CMPB): Add 64-bit compare-bytes support for 32-bit and 64-bit targets.
31271         (CMPB): Add overload support to represent both 32-bit and 64-bit
31272         compare-bytes function.
31273         * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
31274         support for TARGET_CMPB.
31275         * config/rs6000/rs6000.h: Add support for RS6000_BTM_CMPB.
31276         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
31277         documentation of the __builtin_cmpb overloaded built-in function.
31278
31279 2017-05-11  Richard Biener  <rguenther@suse.de>
31280
31281         PR tree-optimization/80705
31282         * tree-vect-data-refs.c (vect_analyze_data_refs): DECL_NONALIASED
31283         bases are not vectorizable.
31284
31285 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31286
31287         * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger
31288         when counting register pressure.
31289
31290 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31291
31292         * tree-ssa-loop-ivopts.c (compare_cost_pair): New.
31293         (iv_ca_more_deps): Renamed to ...
31294         (iv_ca_compare_deps): ... this.
31295         (iv_ca_extend): Extend iv_ca if NEW_CP is cheaper than OLD_CP.
31296
31297 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31298
31299         * tree-ssa-loop-ivopts.c (find_interesting_uses): Move inv vars dump
31300         to ...
31301         (determine_group_iv_costs): ... here.
31302         (find_inv_vars_cb): Record inv var if it's not recorded before.
31303
31304 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31305
31306         * tree-ssa-loop-ivopts.c (allow_ip_end_pos_p): Refine comments.
31307         (get_shiftadd_cost): Ditto.
31308
31309 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31310
31311         * tree-ssa-address.c: Include header file.
31312         (move_hint_to_base): Return TRUE if BASE_HINT is moved to memory
31313         address.
31314         (add_to_parts): Refactor.
31315         (addr_to_parts): New parameter.  Update use of move_hint_to_base.
31316         (create_mem_ref): Update use of addr_to_parts.  Re-associate addr
31317         in new order.
31318
31319 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31320
31321         PR tree-optimization/53090
31322         * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New enum value
31323         COMP_IV_EXPR_2.
31324         (extract_cond_operands): Detect condition with IV on both sides
31325         and return COMP_IV_EXPR_2.
31326         (find_interesting_uses_cond): Add iv_use for both IVs in condition.
31327         (rewrite_use_compare): Simplify by removing call to function
31328         extract_cond_operands.
31329
31330 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31331
31332         * tree-ssa-loop-ivopts.c (enum comp_iv_rewrite): New.
31333         (extract_cond_operands): Detect condition comparing against non-
31334         invariant bound and return appropriate enum value.
31335         (find_interesting_uses_cond): Update use of extract_cond_operands.
31336         Handle its return value accordingly.
31337         (determine_group_iv_cost_cond, rewrite_use_compare): Ditto.
31338
31339 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31340
31341         * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Re-associate
31342         nonlinear iv_use computation in loop invariant sensitive way.
31343
31344 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31345
31346         * tree-ssa-loop-ivopts.c (relate_compare_use_with_all_cands): New.
31347         (find_iv_candidates): Call relate_compare_use_with_all_cands.
31348
31349 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31350
31351         * tree-ssa-loop-ivopts.c (struct iv_cand): New field inv_exprs.
31352         (dump_cand): Support iv_cand.inv_exprs.
31353         (add_candidate_1): Record invariant exprs in iv_cand.inv_exprs
31354         for candidates.
31355         (iv_ca_set_no_cp, iv_ca_set_cp, free_loop_data): Support
31356         iv_cand.inv_exprs.
31357
31358 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31359
31360         * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Move
31361         from ...
31362         * tree-ssa-address.c (multiplier_allowed_in_address_p): ... to here
31363         as local function.  Include necessary header files.
31364         * tree-ssa-loop-ivopts.h (multiplier_allowed_in_address_p): Delete.
31365
31366 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31367
31368         * tree-ssa-loop-ivopts.c (autoinc_possible_for_pair): Simplify.
31369
31370 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31371
31372         * tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Handle more
31373         operators: TRUNC_DIV_EXPR, BIT_AND_EXPR, BIT_IOR_EXPR, LSHIFT_EXPR,
31374         RSHIFT_EXPR and BIT_NOT_EXPR.
31375
31376 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31377
31378         * tree-ssa-loop-ivopts.c (get_loop_invariant_expr): Simplify.
31379         (adjust_setup_cost): New parameter supporting round up adjustment.
31380         (struct address_cost_data): Delete.
31381         (force_expr_to_var_cost): Don't bound cost with spill_cost.
31382         (split_address_cost, ptr_difference_cost): Delete.
31383         (difference_cost, compare_aff_trees, record_inv_expr): Delete.
31384         (struct ainc_cost_data): New struct.
31385         (get_address_cost_ainc): New function.
31386         (get_address_cost, get_computation_cost): Reimplement.
31387         (determine_group_iv_cost_address): Record inv_expr for all uses of
31388         a group.
31389         (determine_group_iv_cost_cond): Call get_loop_invariant_expr.
31390         (iv_ca_has_deps): Reimplemented to ...
31391         (iv_ca_more_deps): ... this.  Check if NEW_CP introduces more deps
31392         than OLD_CP.
31393         (iv_ca_extend): Call iv_ca_more_deps.
31394
31395 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31396
31397         * tree-ssa-address.c (struct mem_address): Move to header file.
31398         (valid_mem_ref_p, move_fixed_address_to_symbol): Make it global.
31399         * tree-ssa-address.h (struct mem_address): Move from C file.
31400         (valid_mem_ref_p, move_fixed_address_to_symbol): Declare.
31401
31402 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31403
31404         * tree-affine.h (aff_combination_type): New interface.
31405         (aff_combination_zero_p): Remove static.
31406         (aff_combination_const_p): New interface.
31407         (aff_combination_singleton_var_p): New interfaces.
31408
31409 2017-05-11  Richard Biener  <rguenther@suse.de>
31410
31411         * tree-ssa-pre.c (eliminate_dom_walker::before_dom_children):
31412         Skip unreachable blocks and destinations.
31413         (eliminate): Move stmt removal and fixup ...
31414         (fini_eliminate): ... here.  Skip inserted exprs.
31415         (pass_pre::execute): Move fini_pre after fini_eliminate.
31416         * tree-ssa-tailmerge.c: Include tree-cfgcleanup.h.
31417         (tail_merge_optimize): Run cleanup_tree_cfg if requested by
31418         PRE to get rid of dead code that has invalid SSA form and
31419         split critical edges again.
31420
31421 2017-05-11  Bin Cheng  <bin.cheng@arm.com>
31422
31423         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
31424
31425 2017-05-11  Richard Biener  <rguenther@suse.de>
31426
31427         * passes.c (execute_function_todo): Verify loops if they are
31428         said to be up-to-date.
31429         * cfgexpand.c (pass_expand::execute): Discard loops for -dx.
31430         * trans-mem.c (pass_tm_edges::execute): Mark loops for fixup.
31431
31432 2017-05-10  John David Anglin  <danglin@gcc.gnu.org>
31433
31434         PR target/80090
31435         * config/pa/pa.c (pa_assemble_integer): When outputting a SYMBOL_REF,
31436         handle calling assemble_external ourself.
31437
31438         PR target/79027
31439         * config/pa/pa.c (pa_cannot_change_mode_class): Reject changes to/from
31440         modes with zero size.  Enhance comment.
31441
31442 2017-05-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
31443
31444         * config/rs6000/rs6000.c (altivec_init_builtins): Define POWER8
31445         built-ins for vec_xl and vec_xst with short and char pointer
31446         arguments.
31447
31448 2017-05-10  Sebastian Peryt  <sebastian.peryt@intel.com>
31449
31450         * config/i386/avx512fintrin.h (_mm_mask_max_round_sd)
31451         (_mm_maskz_max_round_sd, _mm_mask_max_round_ss)
31452         (_mm_maskz_max_round_ss, _mm_mask_min_round_sd)
31453         (_mm_maskz_min_round_sd, _mm_mask_min_round_ss)
31454         (_mm_maskz_min_round_ss): New intrinsics.
31455         * config/i386/i386-builtin-types.def (V2DF, V2DF, V2DF, V2DF, UQI, INT)
31456         (V4SF, V4SF, V4SF, V4SF, UQI, INT): New function type aliases.
31457         * config/i386/i386-builtin.def (__builtin_ia32_maxsd_mask_round)
31458         (__builtin_ia32_maxss_mask_round, __builtin_ia32_minsd_mask_round)
31459         (__builtin_ia32_minss_mask_round): New builtins.
31460         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
31461         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
31462         * config/i386/sse.md (<sse>_vm<code><mode>3<round_saeonly_name>):
31463         Rename to ...
31464         (<sse>_vm<code><mode>3<mask_name><round_saeonly_name>): ... this.
31465         (v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_op3>%2, %1, %0|%0, %1, %<iptr>2<round_saeonly_op3>}):
31466         Change to ...
31467         (v<maxmin_float><ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_saeonly_mask_op3>}):
31468         ... this.
31469
31470 2017-05-10  Sebastian Peryt  <sebastian.peryt@intel.com>
31471
31472         * config/i386/avx512fintrin.h (_mm_mask_mul_round_sd)
31473         (_mm_maskz_mul_round_sd, _mm_mask_mul_round_ss)
31474         (_mm_maskz_mul_round_ss, _mm_mask_div_round_sd)
31475         (_mm_maskz_div_round_sd, _mm_mask_div_round_ss)
31476         (_mm_maskz_div_round_ss, _mm_mask_mul_sd, _mm_maskz_mul_sd)
31477         (_mm_mask_mul_ss, _mm_maskz_mul_ss, _mm_mask_div_sd)
31478         (_mm_maskz_div_sd, _mm_mask_div_ss, _mm_maskz_div_ss): New intrinsics.
31479         * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
31480         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
31481         * config/i386/i386-builtin.def (__builtin_ia32_divsd_mask_round)
31482         (__builtin_ia32_divss_mask_round, __builtin_ia32_mulsd_mask_round)
31483         (__builtin_ia32_mulss_mask_round): New builtins.
31484         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
31485         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
31486         * config/i386/sse.md (<sse>_vm<multdiv_mnemonic><mode>3<round_name>):
31487         Rename to ...
31488         (<sse>_vm<multdiv_mnemonic><mode>3<mask_name><round_name>): ... this.
31489         (v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
31490         Change to ...
31491         (v<multdiv_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
31492         ... this.
31493
31494 2017-05-10  Julia Koval  <julia.koval@intel.com>
31495
31496         * config/i386/avxintrin.h (_mm256_set_m128, _mm256_set_m128d)
31497         (_mm256_set_m128i, _mm256_setr_m128, _mm256_setr_m128d)
31498         (_mm256_setr_m128i): New intrinsics.
31499
31500 2017-05-10  Julia Koval  <julia.koval@intel.com>
31501
31502         * config/i386/avx512fintrin.h (_mm_mask_rcp14_sd)
31503         (_mm_maskz_rcp14_sd, _mm_mask_rcp14_ss)
31504         (_mm_maskz_rcp14_ss): New intrinsics.
31505         * config/i386/i386-builtin.def (__builtin_ia32_rcp14sd_mask)
31506         (__builtin_ia32_rcp14ss_mask): New builtins.
31507         * config/i386/sse.md (srcp14<mode>_mask): New pattern.
31508
31509 2017-05-10  Peter Bergner  <bergner@vnet.ibm.com>
31510
31511         PR tree-optimization/51513
31512         * tree-cfg.c (gimple_seq_unreachable_p): New function.
31513         (assert_unreachable_fallthru_edge_p): Use it.
31514         (group_case_labels_stmt): Likewise.
31515         * tree-cfg.h: Prototype it.
31516         * stmt.c: Include cfghooks.h and tree-cfg.h.
31517         (emit_case_dispatch_table) <gap_label>: New local variable.
31518         Use it to fill dispatch table gaps.
31519         Test for default_label before updating probabilities.
31520         (expand_case) <default_label>: Remove unneeded initialization.
31521         Test for unreachable default case statement and remove its edge.
31522         Set default_label accordingly.
31523         * tree-ssa-ccp.c (optimize_unreachable): Update comment.
31524
31525 2017-05-10  Carl Love  <cel@us.ibm.com>
31526
31527         * config/rs6000/rs6000-c: Add support for built-in functions
31528         vector signed char      vec_neg (vector signed char)
31529         vector signed short int vec_neg (vector short int)
31530         vector signed int       vec_neg (vector signed int)
31531         vector signed long long vec_neg (vector signed long long)
31532         vector float            vec_neg (vector float)
31533         vector double           vec_neg (vector double)
31534         * config/rs6000/rs6000-builtin.def: Add definitions for NEG function
31535         overload.
31536         * config/rs6000/altivec.h: Add define for vec_neg
31537         * doc/extend.texi: Update the built-in documentation for the
31538         new built-in functions.
31539
31540 2017-05-10  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
31541
31542         PR tree-optimization/77644
31543         * match.pd (sqrt(x) cmp sqrt(y) -> x cmp y): New pattern.
31544
31545 2017-05-10  Nathan Sidwell  <nathan@acm.org>
31546
31547         * dumpfile.h (TDI_lang_all): New.
31548         (TDF_KIND): New. Renumber others
31549         (TDF_LANG, TDF_TREE, TDF_RTL, TDF_IPA): Enumerate value, rather
31550         than bits.
31551         * dumpfile.c (dump_files): Mark language dumps as TDF_LANG.  add
31552         lang-all.
31553         (get_dump_file_name): Adjust suffix generation.
31554         (dump_enable_all): Use TDF_KIND.
31555         * doc/invoke.texi (-fdump-lang-all): Document.
31556
31557         * dumpfile.h: Tabify.
31558
31559 2017-05-10  Wilco Dijkstra  <wdijkstr@arm.com>
31560
31561         PR target/80671
31562         * config/aarch64/cortex-a57-fma-steering.c (merge_forest):
31563         Move member access before delete.
31564
31565 2017-05-10  Alexandre Oliva  <aoliva@redhat.com>
31566
31567         * tree-inline.c (expand_call_inline): Split block at stmt
31568         before the call.
31569
31570 2017-05-09  Michael Meissner  <meissner@linux.vnet.ibm.com>
31571
31572         PR target/68163
31573         * config/rs6000/rs6000.md (f32_lr): Delete mode attributes that
31574         are now unused after splitting mov{sf,sd}_hardfloat.
31575         (f32_lr2): Likewise.
31576         (f32_lm): Likewise.
31577         (f32_lm2): Likewise.
31578         (f32_li): Likewise.
31579         (f32_li2): Likewise.
31580         (f32_lv): Likewise.
31581         (f32_sr): Likewise.
31582         (f32_sr2): Likewise.
31583         (f32_sm): Likewise.
31584         (f32_sm2): Likewise.
31585         (f32_si): Likewise.
31586         (f32_si2): Likewise.
31587         (f32_sv): Likewise.
31588         (f32_dm): Likewise.
31589         (f32_vsx): Likewise.
31590         (f32_av): Likewise.
31591         (mov<mode>_hardfloat): Split into separate movsf and movsd pieces.
31592         For movsf, order stores so the VSX stores occur before the GPR
31593         store which encourages the register allocator to use a traditional
31594         FPR instead of a GPR.  For movsd, order the stores so that the GPR
31595         store comes before the VSX stores to allow the power6 to work.
31596         This is due to the power6 not having a 32-bit integer store
31597         instruction from a FPR.
31598         (movsf_hardfloat): Likewise.
31599         (movsd_hardfloat): Likewise.
31600
31601 2017-05-09  Martin Sebor  <msebor@redhat.com>
31602
31603         PR translation/80280
31604         * config/sol2-c.c (cmn_err_flag_specs): Initialize new data member
31605         added in r247778.
31606
31607         PR translation/80280
31608         * config/i386/msformat-c.c (ms_printf_flag_specs): Initialize new
31609         data member added in r247778.
31610         (ms_scanf_flag_specs, ms_strftime_flag_specs): Same.
31611
31612 2017-05-09  Nathan Sidwell  <nathan@acm.org>
31613
31614         * tree.h (tree_fits_shwi_p, tree_fits_uhwi_p): Unconditionally pure.
31615
31616         * ipa-devirt.c (default_hash_traits<type_pair>): Skip struct-scope
31617         typedefs.
31618
31619 2017-05-09  Marek Polacek  <polacek@redhat.com>
31620
31621         * doc/invoke.texi: Fix typo.
31622
31623 2017-05-09  Richard Biener  <rguenther@suse.de>
31624
31625         * tree-vrp.c (vrp_val_is_max): Adjust comment.
31626         (vrp_val_is_min): Likewise.
31627         (set_value_range_to_value): Likewise.
31628         (set_value_range_to_nonnegative): Likewise.
31629         (gimple_assign_nonzero_p): Likewise.
31630         (gimple_stmt_nonzero_p): Likewise.
31631         (vrp_int_const_binop): Likewise.  Remove unreachable case.
31632         (adjust_range_with_scev): Adjust comments.
31633         (compare_range_with_value): Likewise.
31634         (extract_range_from_phi_node): Likewise.
31635         (test_for_singularity): Likewise.
31636
31637 2017-05-09  Richard Biener  <rguenther@suse.de>
31638
31639         * tree-vrp.c (get_single_symbol): Add assert that we don't
31640         get overflowed constants as invariant part.
31641         (compare_values_warnv): Add comment before the TREE_NO_WARNING
31642         checks.  Use wi::cmp instead of recursing for integer constants.
31643         (compare_values): Just ignore whether we assumed undefined
31644         overflow instead of failing the compare.
31645         (extract_range_for_var_from_comparison_expr): Add comment before the
31646         TREE_NO_WARNING sets.
31647         (test_for_singularity): Likewise.
31648         (extract_range_from_comparison): Do not disable optimization
31649         when we assumed undefined overflow.
31650         (extract_range_basic): Remove init of unused var.
31651
31652 2017-05-09  Richard Biener  <rguenther@suse.de>
31653
31654         * tree-vrp.c (vrp_int_const_binop): Use wide-ints and simplify.
31655         (extract_range_from_multiplicative_op_1): Adjust.
31656         (extract_range_from_binary_expr_1): Use int_const_binop.
31657
31658 2017-05-08  Kelvin Nilsen  <kelvin@gcc.gnu.org>
31659
31660         PR target/80101
31661         * config/rs6000/power6.md: Replace store_data_bypass_p calls with
31662         rs6000_store_data_bypass_p in seven define_bypass directives and
31663         in several comments.
31664         * config/rs6000/rs6000-protos.h: Add prototype for
31665         rs6000_store_data_bypass_p function.
31666         * config/rs6000/rs6000.c (rs6000_store_data_bypass_p): New
31667         function implements slightly different (rs6000-specific) semantics
31668         than store_data_bypass_p, returning false rather than aborting
31669         with assertion error when arguments do not satisfy the
31670         requirements of store data bypass.
31671         (rs6000_adjust_cost): Replace six calls of store_data_bypass_p with
31672         rs6000_store_data_bypass_p.
31673
31674 2017-05-08  Max Filippov  <jcmvbkbc@gmail.com>
31675
31676         * config/xtensa/xtensa-protos.h
31677         (xtensa_initial_elimination_offset): New declaration.
31678         * config/xtensa/xtensa.c (xtensa_initial_elimination_offset):
31679         New function. Move its body from the INITIAL_ELIMINATION_OFFSET
31680         macro definition, add case for FRAME_POINTER_REGNUM when
31681         FRAME_GROWS_DOWNWARD.
31682         * config/xtensa/xtensa.h (FRAME_GROWS_DOWNWARD): New macro definition.
31683         (INITIAL_ELIMINATION_OFFSET): Replace body with call to
31684         xtensa_initial_elimination_offset.
31685
31686 2017-05-08  Nathan Sidwell  <nathan@acm.org>
31687
31688         * doc/invoke.texi: Alphabetize -fdump options.
31689
31690 2017-05-08  Martin Sebor  <msebor@redhat.com>
31691
31692         PR translation/80280
31693         * config/sol2-c.c (solaris_pragma_align): Correct quoting.
31694
31695 2017-05-08  Bernd Edlinger  <bernd.edlinger@hotmail.de>
31696
31697         * target.def (compute_frame_layout): New optional target hook.
31698         * doc/tm.texi.in (TARGET_COMPUTE_FRAME_LAYOUT): Add hook.
31699         * doc/tm.texi (TARGET_COMPUTE_FRAME_LAYOUT): Add documentation.
31700         * lra-eliminations.c (update_reg_eliminate): Call compute_frame_layout
31701         target hook.
31702         * reload1.c (verify_initial_elim_offsets): Likewise.
31703         * config/arm/arm.c (TARGET_COMPUTE_FRAME_LAYOUT): Define.
31704         (use_simple_return_p): Call arm_compute_frame_layout if needed.
31705         (arm_get_frame_offsets): Split up into this ...
31706         (arm_compute_frame_layout): ... and this function.
31707
31708 2017-05-08  Richard Sandiford  <richard.sandiford@arm.com>
31709
31710         * config/aarch64/constraints.md (Usa): New constraint.
31711         * config/aarch64/aarch64.md (*movsi_aarch64, *movdi_aarch64): Use it.
31712
31713 2017-05-08  Thomas Preud'homme  <thomas.preudhomme@arm.com>
31714
31715         * config.gcc (arm*-*-*): Set TM_MULTILIB_CONFIG from
31716         with_multilib_list after it has been checked.
31717
31718 2017-05-08  Richard Biener  <rguenther@suse.de>
31719
31720         * tree-ssa-pre.c (bitmap_set_and): Avoid bitmap copy.
31721         (bitmap_set_subtract_values): Likewise.
31722
31723 2017-05-08  Richard Biener  <rguenther@suse.de>
31724
31725         * tree-vrp.c (gimple_assign_nonzero_warnv_p): Rename to ...
31726         (gimple_assign_nonzero): ... this and remove strict_overflow_p
31727         argument.
31728         (gimple_stmt_nonzero_warnv_p): Rename to ...
31729         (gimple_stmt_nonzero_p): ... this and remove strict_overflow_p
31730         argument.
31731         (vrp_stmt_computes_nonzero): Remove strict_overflow_p argument.
31732         (extract_range_basic): Adjust, do not disable propagation on
31733         strict overflow sensitive simplification.
31734         (vrp_visit_cond_stmt): Likewise.
31735
31736 2017-05-05  Jan Hubicka  <hubicka@ucw.cz>
31737
31738         * ipa-inline-analysis.c (estimate_function_body_sizes): Recompute
31739         body size unconditionally.
31740
31741 2017-05-07  Jeff Law  <law@redhat.com>
31742
31743         Revert:
31744         2017-05-06  Jeff Law  <law@redhat.com>
31745         PR tree-optimization/78496
31746         * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging
31747         code.
31748
31749         PR tree-optimization/78496
31750         * tree-vrp.c (simplify_assert_expr_using_ranges): New function.
31751         (simplify_stmt_using_ranges): Call it.
31752         (vrp_dom_walker::before_dom_children): Extract equivalences
31753         from an ASSERT_EXPR with an equality comparison against a
31754         constant.
31755
31756 2017-05-06  Jeff Law  <law@redhat.com>
31757
31758         PR tree-optimization/78496
31759         * tree-vrp.c (simplify_assert_expr_using_ranges): Remove debugging
31760         code.
31761
31762         PR tree-optimization/78496
31763         * tree-vrp.c (simplify_assert_expr_using_ranges): New function.
31764         (simplify_stmt_using_ranges): Call it.
31765         (vrp_dom_walker::before_dom_children): Extract equivalences
31766         from an ASSERT_EXPR with an equality comparison against a
31767         constant.
31768
31769 2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
31770
31771         * lra-constraints.c (lra_copy_reg_equiv): New function.
31772         (split_reg): Use it to copy equivalence information from the
31773         original register to the spill register.
31774
31775 2017-05-06  Richard Sandiford  <richard.sandiford@linaro.org>
31776
31777         PR rtl-optimization/75964
31778         * simplify-rtx.c (simplify_const_relational_operation): Remove
31779         invalid handling of comparisons of integer ABS.
31780
31781 2017-05-06  Uros Bizjak  <ubizjak@gmail.com>
31782
31783         * config/i386/i386.c (ext_80387_constant_init): Do not explicitly
31784         initialize to zero.
31785         (init_regs): Remove declaration.
31786         (function_arg_advance_32): Initialize error_p as boolean variable.
31787
31788 2017-05-05  Nathan Sidwell  <nathan@acm.org>
31789
31790         * store-motion.c (remove_reachable_equiv_notes): Reformat long
31791         lines.  Use for (;;).
31792
31793 2017-05-05  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
31794
31795         * config/rs6000/rs6000.c (rs6000_vect_nonmem): New static var.
31796         (rs6000_init_cost): Initialize rs6000_vect_nonmem.
31797         (rs6000_add_stmt_cost): Update rs6000_vect_nonmem.
31798         (rs6000_finish_cost): Avoid vectorizing simple copy loops with
31799         VF=2 that require versioning.
31800
31801 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31802
31803         * diagnostic.h (CARET_LINE_MARGIN): Convert from macro to const
31804         int.
31805
31806 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31807
31808         * diagnostic.h (diagnostic_override_option_index): Convert from
31809         macro to inline function.
31810
31811 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31812
31813         * diagnostic.c (last_module_changed_p): New function.
31814         (set_last_module): New function.
31815         (diagnostic_report_current_module): Convert macro usage to
31816         the above functions.
31817         * diagnostic.h (diagnostic_context::last_module): Strengthen
31818         from const line_map * to const line_map_ordinary *.
31819         (diagnostic_last_module_changed): Delete macro.
31820         (diagnostic_set_last_module): Delete macro.
31821
31822 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31823
31824         * diagnostic.c (diagnostic_impl): Replace report_diagnostic
31825         with diagnostic_report_diagnostic.
31826         (diagnostic_n_impl_richloc): Likewise.
31827         * diagnostic.h (report_diagnostic): Delete macro.
31828         * rtl-error.c (diagnostic_for_asm): Replace report_diagnostic
31829         with diagnostic_report_diagnostic.
31830         * substring-locations.c (format_warning_va): Likewise.
31831
31832 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31833
31834         * diagnostic.c (diagnostic_report_diagnostic): Eliminate
31835         save/restor of format_spec.  Move option-printing code to...
31836         (print_option_information): ...this new function, and
31837         reimplement by simply printing to the pretty_printer,
31838         rather than appending to the format string.
31839
31840 2017-05-05  David Malcolm  <dmalcolm@redhat.com>
31841
31842         * diagnostic.c (diagnostic_report_diagnostic): Split out pragma
31843         handling logic into...
31844         (update_effective_level_from_pragmas): ...this new function.
31845
31846 2017-05-04  Andrew Waterman  <andrew@sifive.com>
31847
31848         * config/riscv/riscv.opt (mstrict-align): New option.
31849         * config/riscv/riscv.h (STRICT_ALIGNMENT): Use it.  Update comment.
31850         (SLOW_UNALIGNED_ACCESS): Define.
31851         (riscv_slow_unaligned_access): Declare.
31852         * config/riscv/riscv.c (riscv_tune_info): Add slow_unaligned_access
31853         field.
31854         (riscv_slow_unaligned_access): New variable.
31855         (rocket_tune_info): Set slow_unaligned_access to true.
31856         (optimize_size_tune_info): Set slow_unaligned_access to false.
31857         (riscv_cpu_info_table): Add entry for optimize_size_tune_info.
31858         (riscv_valid_lo_sum_p): Use TARGET_STRICT_ALIGN.
31859         (riscv_option_override): Set riscv_slow_unaligned_access.
31860         * doc/invoke.texi: Add -mstrict-align to RISC-V.
31861
31862 2017-05-04  Kito Cheng  <kito.cheng@gmail.com>
31863
31864         * config/riscv/riscv.md: Unify indentation.
31865
31866 2017-05-05  Michael Meissner  <meissner@linux.vnet.ibm.com>
31867
31868         PR target/79038
31869         PR target/79202
31870         PR target/79203
31871         * config/rs6000/rs6000.md (u code attribute): Add FIX and
31872         UNSIGNED_FIX.
31873         (extendsi<mode>2): Add support for doing sign extension via
31874         VUPKHSW and XXPERMDI if the value is in Altivec registers and we
31875         don't have ISA 3.0 instructions.
31876         (extendsi<mode>2 splitter): Likewise.
31877         (fix_trunc<mode>si2): If we are at ISA 2.07 (VSX small integer),
31878         generate the normal insns since SImode can now go in vector
31879         registers.  Disallow the special UNSPECs needed for previous
31880         machines to hide SImode being used.  Add new insns
31881         fctiw{,w}_<mode>_smallint if SImode can go in vector registers.
31882         (fix_trunc<mode>si2_stfiwx): Likewise.
31883         (fix_trunc<mode>si2_internal): Likewise.
31884         (fixuns_trunc<mode>si2): Likewise.
31885         (fixuns_trunc<mode>si2_stfiwx): Likewise.
31886         (fctiw<u>z_<mode>_smallint): Likewise.
31887         (fctiw<u>z_<mode>_mem): New combiner pattern to prevent conversion
31888         of floating point to 32-bit integer from doing a direct move to
31889         the GPR registers to do a store.
31890         (fctiwz_<mode>): Break long line.
31891
31892 2017-05-05  Bin Cheng  <bin.cheng@arm.com>
31893
31894         * Makefile.in (GTFILES): Add tree-ssa-loop-ivopts.c.
31895         * tree-ssa-loop-ivopts.c (compute_max_addr_offset): Delete.
31896         (addr_list, addr_offset_valid_p): New.
31897         (split_address_groups): Check offset validity with above function.
31898         (gt-tree-ssa-loop-ivopts.h): Include header file.
31899
31900 2017-05-05  Nathan Sidwell  <nathan@acm.org>
31901
31902         * config.gcc (arm*-*-*): Add missing 'fi'.
31903
31904 2017-05-05  Steve Ellcey  <sellcey@cavium.com>
31905
31906         * doc/invoke.texi (-fopt-info): Explicitly say order of options
31907         included in -fopt-info does not matter.
31908         * doc/optinfo.texi (-fopt-info): Fix description of default
31909         behavour. Explicitly say order of options included in -fopt-info
31910         does not matter.
31911
31912 2017-05-05  Thomas Preud'homme  <thomas.preudhomme@arm.com>
31913
31914         * config.gcc: Allow combinations of aprofile and rmprofile values for
31915         --with-multilib-list.
31916         * config/arm/t-multilib: New file.
31917         * config/arm/t-aprofile: Remove initialization of MULTILIB_*
31918         variables.  Remove setting of ISA and floating-point ABI in
31919         MULTILIB_OPTIONS and MULTILIB_DIRNAMES.  Set architecture and FPU in
31920         MULTI_ARCH_OPTS_A and MULTI_ARCH_DIRS_A rather than MULTILIB_OPTIONS
31921         and MULTILIB_DIRNAMES respectively.  Add comment to introduce all
31922         matches.  Add architecture matches for marvel-pj4 and generic-armv7-a
31923         CPU options.
31924         * config/arm/t-rmprofile: Likewise except for the matches changes.
31925         * doc/install.texi (--with-multilib-list): Document the combination of
31926         aprofile and rmprofile values and warn about pitfalls in doing that.
31927
31928 2017-05-05  Wilco Dijkstra  <wdijkstr@arm.com>
31929
31930         * config/aarch64/aarch64.md (movsi_aarch64): Remove '*' from r=w.
31931         (movdi_aarch64): Likewise.
31932
31933 2017-05-05  Jakub Jelinek  <jakub@redhat.com>
31934
31935         PR tree-optimization/80632
31936         * tree-switch-conversion.c (struct switch_conv_info): Add target_vop
31937         field.
31938         (build_arrays): Initialize it for virtual phis.
31939         (fix_phi_nodes): Use it for virtual phis.
31940
31941         PR tree-optimization/80558
31942         * tree-vrp.c (extract_range_from_binary_expr_1): Optimize
31943         [x, y] op z into [x op, y op z] for op & or | if conditions
31944         are met.
31945
31946 2017-05-05  Andre Vieira  <andre.simoesdiasvieira@arm.com>
31947             Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
31948
31949         PR target/71607
31950         * config/arm/arm.md (use_literal_pool): Remove.
31951         (64-bit immediate split): No longer takes cost into consideration
31952         if arm_disable_literal_pool is enabled.
31953         * config/arm/arm.c (arm_tls_referenced_p): Add diagnostic if TLS is
31954         used when arm_disable_literal_pool is enabled.
31955         (arm_max_const_double_inline_cost): Remove use of
31956         arm_disable_literal_pool.
31957         (push_minipool_fix): Add assert.
31958         (arm_reorg): Add return if arm_disable_literal_pool is enabled.
31959         * config/arm/vfp.md (no_literal_pool_df_immediate): New.
31960         (no_literal_pool_sf_immediate): New.
31961
31962 2017-05-05  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
31963
31964         PR tree-optimization/80613
31965         * tree-ssa-dce.c (propagate_necessity): Remove cases for
31966         BUILT_IN_STRDUP and BUILT_IN_STRNDUP.
31967
31968 2017-05-05  Richard Biener  <rguenther@suse.de>
31969
31970         * tree-ssa-pre.c (get_or_alloc_expr_for): Simplify.
31971
31972 2017-05-05  Georg-Johann Lay  <avr@gjlay.de>
31973
31974         * config/avr/avr.md [flag_strict_overflow]: Remove any occurence
31975         of this flag from insn conditions due to removal from r247495.
31976
31977 2017-05-05  Wilco Dijkstra  <wdijkstr@arm.com>
31978
31979         * config/arm/aarch-common.c (arm_early_load_addr_dep_ptr):
31980         New function.
31981         (arm_early_store_addr_dep_ptr): Likewise.
31982         * config/arm/aarch-common-protos.h
31983         (arm_early_load_addr_dep_ptr): Add prototype.
31984         (arm_early_store_addr_dep_ptr): Likewise.
31985         * config/arm/cortex-a53.md: Add new bypasses.
31986
31987 2017-05-05  Jakub Jelinek  <jakub@redhat.com>
31988
31989         * tree.c (next_type_uid): Change type to unsigned.
31990         (type_hash_canon): Decrement back next_type_uid if
31991         freeing a type node with the highest TYPE_UID.  For INTEGER_TYPEs
31992         also ggc_free TYPE_MIN_VALUE, TYPE_MAX_VALUE and TYPE_CACHED_VALUES
31993         if possible.
31994
31995 2017-05-04  Martin Sebor  <msebor@redhat.com>
31996
31997         * builtins.c: Fix a trivial typo in a comment.
31998
31999         PR middle-end/79234
32000         * builtins.c (check_sizes): Adjust to handle reading past the end.
32001         Avoid printing excessive upper bound of ranges.  Use %E to print
32002         tree nodes instead of converting them to %wu.
32003         (expand_builtin_memchr): New function.
32004         (compute_dest_size): Rename...
32005         (compute_objsize): ...to this.
32006         (expand_builtin_memcpy): Adjust.
32007         (expand_builtin_mempcpy): Adjust.
32008         (expand_builtin_strcat): Adjust.
32009         (expand_builtin_strcpy): Adjust.
32010         (check_strncat_sizes): Adjust.
32011         (expand_builtin_strncat): Adjust.
32012         (expand_builtin_strncpy): Adjust and simplify.
32013         (expand_builtin_memset): Adjust.
32014         (expand_builtin_bzero): Adjust.
32015         (expand_builtin_memcmp): Adjust.
32016         (expand_builtin): Handle memcmp.
32017         (maybe_emit_chk_warning): Check strncat just once.
32018
32019 2017-05-04  Martin Sebor  <msebor@redhat.com>
32020
32021         PR preprocessor/79214
32022         PR middle-end/79222
32023         PR middle-end/79223
32024         * builtins.c (check_sizes): Add inlining context and issue
32025         warnings even when -Wno-system-headers is set.
32026         (check_strncat_sizes): Same.
32027         (expand_builtin_strncat): Same.
32028         (expand_builtin_memmove): New function.
32029         (expand_builtin_stpncpy): Same.
32030         (expand_builtin): Handle memmove and stpncpy.
32031
32032 2017-05-04  Bin Cheng  <bin.cheng@arm.com>
32033
32034         * tree-ssa-loop-ivopts.c (struct cost_pair): Remove field inv_expr
32035         which is not used any more.
32036
32037 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
32038
32039         * config/aarch64/aarch64.c (generic_tunings): Update prefetch model.
32040
32041 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
32042
32043         * config/aarch64/aarch64.c (cortexa35_tunings): Set jump alignment to 4.
32044         (cortexa53_tunings): Likewise.
32045         (cortexa57_tunings): Likewise.
32046         (cortexa72_tunings): Likewise.
32047         (cortexa73_tunings): Likewise.
32048
32049 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
32050
32051         * config/aarch64/aarch64.c (generic_tunings): Set jump alignment to 4.
32052         Set loop alignment to 8.
32053
32054 2017-05-04  Martin Sebor  <msebor@redhat.com>
32055
32056         PR translation/80280
32057         * builtins.c (expand_builtin_object_size): Add missing quoting to
32058         %D and like directives.
32059         * hsa-gen.c (hsa_type_for_scalar_tree_type): Same.
32060         (hsa_type_for_tree_type): Same.
32061         (verify_function_arguments): Same.
32062         * symtab.c (symbol_table::change_decl_assembler_name): Same.
32063         * varasm.c (get_section): Same.
32064         (mark_weak): Same.
32065
32066 2017-05-04  Martin Sebor  <msebor@redhat.com>
32067
32068         PR translation/80280
32069         * config/i386/i386.c (ix86_function_versions): Quote a %D directive.
32070
32071 2017-05-04  Wilco Dijkstra  <wdijkstr@arm.com>
32072
32073         * config/aarch64/aarch64.c (generic_addrcost_table):
32074         Change HI/TI mode setting.
32075
32076 2017-05-04  Martin Jambor  <mjambor@suse.cz>
32077
32078         PR tree-optimization/80622
32079         * tree-sra.c (comes_initialized_p): New function.
32080         (build_accesses_from_assign): Only set write lazily when
32081         comes_initialized_p is false.
32082         (analyze_access_subtree): Use comes_initialized_p.
32083         (propagate_subaccesses_across_link): Assert !comes_initialized_p
32084         instead of testing for PARM_DECL.
32085
32086 2017-05-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
32087
32088         * config/aarch64/aarch64.md (prefetch); Adjust predicate and
32089         constraint on operand 0 to allow more general addressing modes.
32090         Adjust output template.
32091         * config/aarch64/aarch64.c (aarch64_address_valid_for_prefetch_p):
32092         New function.
32093         * config/aarch64/aarch64-protos.h
32094         (aarch64_address_valid_for_prefetch_p): Declare prototype.
32095         * config/aarch64/constraints.md (Dp): New address constraint.
32096         * config/aarch64/predicates.md (aarch64_prefetch_operand): New
32097         predicate.
32098
32099 2017-05-04  Jan Hubicka  <hubicka@ucw.cz>
32100
32101         * ipa-cp.c (perform_estimation_of_a_value): Drop base_time parameter;
32102         update use of estimate_ipcp_clone_size_and_time.
32103         (estimate_local_effects): Update use of
32104         estimate_ipcp_clone_size_and_time and perform_estimation_of_a_value.
32105         * ipa-inline.h (estimate_ipcp_clone_size_and_time): Update prototype.
32106         * ipa-inline-analysis.c (estimate_ipcp_clone_size_and_time):
32107         Return nonspecialized time.
32108
32109 2017-05-04  Richard Biener  <rguenther@suse.de>
32110
32111         * tree-ssa-alias.c (get_continuation_for_phi): Improve looking
32112         for the last VUSE which def dominates the PHI.  Directly call
32113         maybe_skip_until.
32114         (get_continuation_for_phi_1): Remove.
32115
32116 2017-05-04  Richard Sandiford  <richard.sandiford@linaro.org>
32117
32118         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Add commentary
32119         to explain the use of truncating division.  Cap the number of
32120         iterations to the maximum given by nb_iterations_upper_bound,
32121         if defined.
32122
32123 2017-05-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
32124
32125         * configure.ac (--enable-mingw-wildcard): Add new configurable feature.
32126         * configure: Regenerate.
32127         * config.in: Regenerate.
32128         * config/i386/driver-mingw32.c: new file.
32129         * config/i386/x-mingw32: Add rule to build driver-mingw32.o.
32130         * config.host: Link driver-mingw32.o on MinGW host.
32131         * doc/install.texi: Document new --enable-mingw-wildcard configure
32132         option.
32133
32134 2017-05-04  Marek Polacek  <polacek@redhat.com>
32135
32136         PR tree-optimization/80612
32137         * calls.c (get_size_range): Check for INTEGRAL_TYPE_P.
32138
32139 2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
32140             Andre Simoes Dias Vieira  <andre.simoesdiasvieira@arm.com>
32141
32142         * config/arm/arm.md (movsi): Change TARGET_32BIT to TARGET_HAVE_MOVT.
32143         (movt splitter): Likewise.
32144         * config/arm/arm.c (arm_option_check_internal): Change arm_arch_thumb2
32145         to TARGET_HAVE_MOVT, and merge with -mslow-flash-data check.
32146         (const_ok_for_arm): Change else to else if (TARGET_THUMB2) and add else
32147         block for Thumb-1 with MOVT.
32148         (thumb2_legitimate_address_p): Move code block ...
32149         (can_avoid_literal_pool_for_label_p): ... into this new function.
32150         (thumb1_legitimate_address_p): Add check for TARGET_HAVE_MOVT and
32151         literal pool.
32152         (thumb_legitimate_constant_p): Add conditional on TARGET_HAVE_MOVT
32153         * doc/invoke.texi (-mpure-code): Change "ARMv7-M targets" for
32154         "M-profile targets with the MOVT instruction".
32155
32156 2017-05-04  Prakhar Bahuguna  <prakhar.bahuguna@arm.com>
32157
32158         * config/arm/arm-builtins.c (arm_init_builtins): Rename
32159         __builtin_arm_ldfscr to __builtin_arm_get_fpscr, and rename
32160         __builtin_arm_stfscr to __builtin_arm_set_fpscr.
32161
32162 2017-05-04  Martin Liska  <mliska@suse.cz>
32163
32164         * tree-vrp.c (simplify_cond_using_ranges_2): Remove unused
32165         variable cond_code.
32166
32167 2017-05-04  Richard Biener  <rguenther@suse.de>
32168
32169         * tree.c (array_at_struct_end_p): Handle arrays at struct
32170         end with flexarrays more conservatively.  Refactor and treat
32171         arrays of arrays or aggregates more strict.  Fix
32172         VIEW_CONVERT_EXPR handling.  Remove allow_compref argument.
32173         * tree.c (array_at_struct_end_p): Adjust prototype.
32174         * emit-rtl.c (set_mem_attributes_minus_bitpos): Adjust.
32175         * gimple-fold.c (get_range_strlen): Likewise.
32176         * tree-chkp.c (chkp_may_narrow_to_field): Likewise.
32177
32178 2017-05-04  Richard Biener  <rguenther@suse.de>
32179
32180         PR tree-optimization/31130
32181         * tree-vrp.c (needs_overflow_infinity): Remove as always returning
32182         false.
32183         (supports_overflow_infinity): Likewise.
32184         (is_negative_overflow_infinity): Likewise.
32185         (is_positive_overflow_infinity): Likewise.
32186         (is_overflow_infinity): Likewise.
32187         (stmt_overflow_infinity): Likewise.
32188         (overflow_infinity_range_p): Likewise.
32189         (usable_range_p): Remove as always returning true.
32190         (make_overflow_infinity): Remove.
32191         (negative_overflow_infinity): Likewise.
32192         (positive_overflow_infinity): Likewise.
32193         (avoid_overflow_infinity): Likewise.
32194         (set_value_range): Adjust accordingly.
32195         (set_value_range_to_nonnegative): Likewise, remove now unused
32196         overflow_infinity arg.
32197         (vrp_operand_equal_p): Adjust.
32198         (update_value_range): Likewise.
32199         (range_int_cst_singleton_p): Likewise.
32200         (operand_less_p): Likewise.
32201         (compare_values_warnv): Likewise.
32202         (extract_range_for_var_from_comparison_expr): Likewise.
32203         (vrp_int_const_binop): Likewise.
32204         (zero_nonzero_bits_from_vr): Likewise.
32205         (extract_range_from_multiplicative_op_1): Likewise.
32206         (extract_range_from_binary_expr_1): Likewise.
32207         (extract_range_from_unary_expr): Likewise.
32208         (extract_range_from_comparison): Likewise.
32209         (extract_range_basic): Likewise.
32210         (adjust_range_with_scev): Likewise.
32211         (compare_ranges): Likewise.
32212         (compare_range_with_value): Likewise.
32213         (dump_value_range): Likewise.
32214         (test_for_singularity): Likewise, remove strict_overflow_p parameter
32215         never used.
32216         (simplify_cond_using_ranges): Adjust.
32217
32218 2017-05-04  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
32219
32220         * brig-builtins.def: Added a builtin for class_f64.
32221         * builtin-types.def: Added a builtin type needed by class_f64.
32222
32223 2017-05-03  Jason Merrill  <jason@redhat.com>
32224
32225         * timevar.def: Add TV_CONSTEXPR.
32226
32227 2017-05-03  David Malcolm  <dmalcolm@redhat.com>
32228
32229         * common.opt (fdiagnostics-parseable-fixits): Fix typo.
32230
32231 2017-05-03  Martin Jambor  <mjambor@suse.cz>
32232
32233         * ipa-prop.c (ipa_update_after_lto_read): Removed.
32234         * ipa-prop.h (ipa_update_after_lto_read): Remove declaration.
32235         * ipa-cp.c (ipcp_propagate_stage): Do not call
32236         ipa_update_after_lto_read.
32237         * ipa-inline.c (ipa_inline): Likewise.
32238
32239 2017-05-03  Martin Jambor  <mjambor@suse.cz>
32240
32241         * ipa-prop.h (ipa_edge_args): Make a class.  Mark with for_user GTY
32242         tag.  Added a default constructor and a destructor.
32243         (ipa_edge_args_sum_t): New class;
32244         (ipa_edge_args_sum): Declare.
32245         (ipa_edge_args_vector): Remove declaration.
32246         (IPA_EDGE_REF): Use ipa_edge_args_sum.
32247         (ipa_free_edge_args_substructures): Remove declaration.
32248         (ipa_check_create_edge_args): Use ipa_edge_args_sum.
32249         (ipa_edge_args_info_available_for_edge_p): Likewise.
32250         * ipa-prop.c (ipa_edge_args_vector): Removed.
32251         (edge_removal_hook_holder): Likewise.
32252         (edge_duplication_hook_holder): Likewise.
32253         (ipa_edge_args_sum): New variable.
32254         (ipa_propagate_indirect_call_infos): Test ipa_edge_args_sum instead of
32255         ipa_edge_args_vector.
32256         (ipa_free_edge_args_substructures): Likewise.
32257         (ipa_free_all_edge_args): Free ipa_edge_args_sum instead of
32258         ipa_edge_args_vector.
32259         (ipa_edge_removal_hook): Turned into method
32260         ipa_edge_args_sum_t::remove.
32261         (ipa_edge_duplication_hook): Turned into method
32262         ipa_edge_args_sum_t::duplicate.
32263         (ipa_register_cgraph_hooks): Create ipa_edge_args_sum instead of
32264         registering edge hooks.
32265         (ipa_unregister_cgraph_hooks): Do not unregister edge hooks.
32266         * ipa-inline-analysis.c (estimate_function_body_sizes): Test
32267         ipa_edge_args_sum instead of ipa_edge_args_vector.
32268         * ipa-profile.c (ipa_profile): Likewise.
32269
32270 2017-05-03  Martin Jambor  <mjambor@suse.cz>
32271
32272         * symbol-summary.h (function_summary): New method exists.
32273         (function_summary::symtab_removal): Deallocate through release.
32274         (call_summary): New class.
32275         (gt_ggc_mx): New overload.
32276         (gt_pch_nx): Likewise.
32277         (gt_pch_nx): Likewise.
32278
32279 2017-05-03  Jeff Law  <law@redhat.com>
32280
32281         PR tree-optimization/78496
32282         * tree-vrp.c (simplify_cond_using_ranges_1): Renamed
32283         from simplify_cond_using_ranges.  Split off code to walk
32284         backwards through casts into ...
32285         (simplify_cond_using_ranges_2): New function.
32286         (simplify_stmt_using_ranges): Call simplify_cond_using_ranges_1.
32287         (execute_vrp): After identifying jump threads, call
32288         simplify_cond_using_ranges_2.
32289
32290 2017-05-03  Jan Hubicka  <hubicka@ucw.cz>
32291
32292         PR bootstrap/80609
32293         * ipa-inline.h (inline_summary): Add ctor.
32294         (create_ggc): Do not use ggc_cleared_alloc.
32295
32296 2017-05-03  Jeff Downs  <heydowns@somuchpressure.net>
32297             Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
32298
32299         * gcc.c (handle_braces): Support escaping in switch matching
32300         text.
32301         * doc/invoke.texi (Spec Files): Document it.
32302         Remove superfluous @code markup in items.
32303
32304 2017-05-03  David Malcolm  <dmalcolm@redhat.com>
32305
32306         * diagnostic-show-locus.c (struct column_range): New struct.
32307         (get_affected_columns): New function.
32308         (get_printed_columns): New function.
32309         (struct correction): New struct.
32310         (correction::ensure_capacity): New function.
32311         (correction::ensure_terminated): New function.
32312         (struct line_corrections): New struct.
32313         (line_corrections::~line_corrections): New dtor.
32314         (line_corrections::add_hint): New function.
32315         (layout::print_trailing_fixits): Reimplement in terms of the new
32316         classes.
32317         (selftest::test_overlapped_fixit_printing): New function.
32318         (selftest::diagnostic_show_locus_c_tests): Call it.
32319
32320 2017-05-03  Nathan Sidwell  <nathan@acm.org>
32321
32322         Canonicalize canonical type hashing
32323         * tree.h (type_hash_canon_hash): Declare.
32324         * tree.c (type_hash_list, attribute_hash_list): Move into
32325         type_hash_canon_hash.
32326         (build_type_attribute_qual_variant): Break out hash code calc into
32327         type_hash_canon_hash.
32328         (type_hash_canon_hash): New.  Generic type hash computation.
32329         (build_range_type_1, build_array_type_1, build_function_type,
32330         build_method_type_directly, build_offset_type, build_complex_type,
32331         make_vector_type): Call it.
32332
32333 2017-05-03  Richard Biener  <rguenther@suse.de>
32334
32335         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
32336         When all DRs have unknown misaligned do not always peel
32337         when there is a store but apply the same costing model as if
32338         there were only loads.
32339
32340 2017-05-03  Richard Biener  <rguenther@suse.de>
32341
32342         Revert
32343         PR tree-optimization/80492
32344         * tree-ssa-alias.c (decl_refs_may_alias_p): Handle
32345         compare_base_decls returning dont-know properly.
32346
32347 2017-05-03  Thomas Preud'homme  <thomas.preudhomme@arm.com>
32348
32349         * config/arm/iterators.md (CCSI): New mode iterator.
32350         (arch): New mode attribute.
32351         * config/arm/sync.md (atomic_compare_and_swap<mode>_1): Rename into ...
32352         (atomic_compare_and_swap<CCSI:arch><NARROW:mode>_1): This and ...
32353         (atomic_compare_and_swap<CCSI:arch><SIDI:mode>_1): This.  Use CCSI
32354         code iterator for success result mode.
32355         * config/arm/arm.c (arm_expand_compare_and_swap): Adapt code to use
32356         the corresponding new insn generators.
32357
32358 2017-05-03  Bin Cheng  <bin.cheng@arm.com>
32359
32360         Revert r247509
32361         2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32362         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
32363
32364 2017-05-03  Richard Sandiford  <richard.sandiford@linaro.org>
32365
32366         * tree-data-ref.h (SUB_CONFLICTS_IN_A): Wrap SUB argument in brackets.
32367         (SUB_CONFLICTS_IN_B, SUB_LAST_CONFLICT, SUB_DISTANCE): Likewise.
32368         (DDR_A): Wrap DDR argument in brackets.
32369         (DDR_B, DDR_AFFINE_P, DDR_ARE_DEPENDENT, DDR_SUBSCRIPTS): Likewise.
32370         (DDR_LOOP_NEST, DDR_INNER_LOOP, DDR_SELF_REFERENCE): Likewise.
32371         (DDR_REVERSED_P): Likewise.
32372
32373 2017-05-03  Jakub Jelinek  <jakub@redhat.com>
32374
32375         PR tree-optimization/79472
32376         * tree-switch-conversion.c (struct switch_conv_info): Add
32377         contiguous_range and default_case_nonstandard fields.
32378         (collect_switch_conv_info): Compute contiguous_range and
32379         default_case_nonstandard fields, don't clear final_bb if
32380         contiguous_range and only the default case doesn't have the required
32381         structure.
32382         (check_all_empty_except_final): Set default_case_nonstandard instead
32383         of failing if contiguous_range and the default case doesn't have empty
32384         block.
32385         (check_final_bb): Add SWTCH argument, don't fail if contiguous_range
32386         and only the default case doesn't have the required constants.  Skip
32387         virtual phis.
32388         (gather_default_values): Skip virtual phis.  Allow non-NULL CASE_LOW
32389         if default_case_nonstandard.
32390         (build_constructors): Build constant 1 just once.  Assert that default
32391         values aren't inserted in between cases if contiguous_range.  Skip
32392         virtual phis.
32393         (build_arrays): Skip virtual phis.
32394         (prune_bbs): Add DEFAULT_BB argument, don't remove that bb.
32395         (fix_phi_nodes): Don't add e2f phi arg if default_case_nonstandard.
32396         Handle virtual phis.
32397         (gen_inbound_check): Handle default_case_nonstandard case.
32398         (process_switch): Adjust check_final_bb caller.  Call
32399         gather_default_values with the first non-default case instead of
32400         default case if default_case_nonstandard.
32401
32402 2017-05-02  Nathan Sidwell  <nathan@acm.org>
32403
32404         * ggc-page.c (move_ptes_to_front): Replace unsigned >0 with i--
32405         check.  Fix formatting.
32406
32407 2017-05-02  Jan Hubicka  <hubicka@ucw.cz>
32408
32409         * ipa-inline-analysis.c (estimate_node_size_and_time): Allow roundoff
32410         errors when comparing specialized and unspecialized times.
32411
32412 2017-05-02  David Malcolm  <dmalcolm@redhat.com>
32413
32414         * diagnostic-show-locus.c
32415         (layout::should_print_annotation_line_p): Make private.
32416         (layout::print_annotation_line): Make private.
32417         (layout::annotation_line_showed_range_p): Make private.
32418         (layout::show_ruler): Make private.
32419         (layout::print_source_line): Make private.  Pass in line and
32420         line_width, rather than calling location_get_source_line.  Drop
32421         returned value.
32422         (layout::print_leading_fixits): New method.
32423         (layout::print_any_fixits): Rename to...
32424         (layout::print_trailing_fixits): ...this, and make private.
32425         Don't print newline fixits.
32426         (diagnostic_show_locus): Move logic for printing one row into...
32427         (layout::print_line): ...this new function.  Move the
32428         location_get_source_line call and error-handling from
32429         print_source_line to here.  Call print_leading_fixits, and rename
32430         print_any_fixits to print_trailing_fixits.
32431         (selftest::test_fixit_insert_containing_newline): Update now that
32432         newlines are partially supported.
32433         (selftest::test_fixit_insert_containing_newline_2): New test.
32434         (selftest::test_fixit_replace_containing_newline): Update comments.
32435         (selftest::diagnostic_show_locus_c_tests): Call the new test.
32436         * edit-context.c (class added_line): New class.
32437         (class edited_line): Describe newline handling in comment.
32438         (edited_line::actually_edited_p): New method.
32439         (edited_line::print_content): Delete redundant decl.
32440         (edited_line::m_predecessors): New field.
32441         (edited_file::print_content): Call edited_line::print_content.
32442         (edited_file::print_diff): Update to support newlines.
32443         (edited_file::print_diff_hunk): Likewise.
32444         (edited_file::print_run_of_changed_lines): New function.
32445         (edited_file::print_diff_line): Convert to...
32446         (print_diff_line): ...this.
32447         (edited_file::get_effective_line_count): New function.
32448         (edited_line::edited_line): Initialize new field m_predecessors.
32449         (edited_line::~edited_line): Clean up m_predecessors.
32450         (edited_line::apply_fixit): Handle newlines.
32451         (edited_line::get_effective_line_count): New function.
32452         (edited_line::print_content): New function.
32453         (edited_line::print_diff_lines): New function.
32454         (selftest::test_applying_fixits_insert_containing_newline): New
32455         test.
32456         (selftest::test_applying_fixits_replace_containing_newline): New
32457         test.
32458         (selftest::insert_line): New function.
32459         (selftest::test_applying_fixits_multiple_lines): Add example of
32460         inserting a line.
32461         (selftest::edit_context_c_tests): Call the new tests.
32462
32463 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32464
32465         * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Delete
32466         parameter cand.  Update dump information.
32467         (get_computation_cost): Update uses.
32468
32469 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32470
32471         * tree-ssa-loop-ivopts.c (get_computation_aff_1): New.
32472         (get_computation_aff): Reorder parameters.  Use get_computation_aff_1.
32473         (get_computation_at, rewrite_use_address): Update use of
32474         get_computation_aff.
32475
32476 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32477
32478         * tree-ssa-loop-ivopts.c (get_computation_at): Reorder parameters.
32479         (get_computation): Delete.
32480         (get_computation_cost): Implement like get_computation_cost_at.
32481         Use get_computation_at.
32482         (get_computation_cost_at): Delete.
32483         (rewrite_use_nonlinear_expr): Use get_computation_at.
32484         (rewrite_use_compare, remove_unused_ivs): Ditto.
32485
32486 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32487
32488         * tree-ssa-loop-ivopts.c (rewrite_use_address): Simple refactor.
32489
32490 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32491
32492         * tree-ssa-loop-ivopts.c (struct iv_ca): Rename n_regs to n_invs.
32493         (ivopts_global_cost_for_size): Rename parameter and update uses.
32494         (iv_ca_recount_cost): Update uses.
32495         (iv_ca_set_remove_invs, iv_ca_set_no_cp): Record invariants and
32496         candidates seperately in n_invs and n_cands.
32497         (iv_ca_set_add_invs, iv_ca_set_cp, iv_ca_new): Ditto.
32498
32499 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32500
32501         * tree-ssa-loop-ivopts.c (struct walk_tree_data): New.
32502         (find_inv_vars_cb): New.
32503         (find_depends): Renamed to ...
32504         (find_inv_vars): ... this.
32505         (add_candidate_1, force_var_cost): Call find_inv_vars.
32506         (split_address_cost, determine_group_iv_cost_cond): Ditto.
32507
32508 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32509
32510         * tree-ssa-loop-ivopts.c (struct cost_pair): Rename depends_on to
32511         inv_vars.  Add inv_exprs.
32512         (struct iv_cand): Rename depends_on to inv_vars.
32513         (struct ivopts_data): Rename max_inv_id/n_invariant_uses to
32514         max_inv_var_id/n_inv_var_uses.  Move max_inv_expr_id around.
32515         Refactor field used_inv_exprs from has_map to array n_inv_expr_uses.
32516         (dump_cand): Dump inv_vars.
32517         (tree_ssa_iv_optimize_init): Support inv_vars and inv_exprs.
32518         (record_invariant, find_depends, add_candidate_1): Ditto.
32519         (set_group_iv_cost, force_var_cost): Ditto.
32520         (split_address_cost, ptr_difference_cost, difference_cost): Ditto.
32521         (get_computation_cost_at, get_computation_cost): Ditto.
32522         (determine_group_iv_cost_generic): Ditto.
32523         (determine_group_iv_cost_address): Ditto.
32524         (determine_group_iv_cost_cond, autoinc_possible_for_pair): Ditto.
32525         (determine_group_iv_costs): Ditto.
32526         (iv_ca_recount_cost): Update call to ivopts_global_cost_for_size.
32527         (iv_ca_set_remove_invariants): Renamed to ...
32528         (iv_ca_set_remove_invs): ... this.  Support inv_vars and inv_exprs.
32529         (iv_ca_set_no_cp): Use iv_ca_set_remove_invs.
32530         (iv_ca_set_add_invariants):  Renamed to ...
32531         (iv_ca_set_add_invs): ... this.  Support inv_vars and inv_exprs.
32532         (iv_ca_set_cp): Use iv_ca_set_add_invs.
32533         (iv_ca_has_deps): Support inv_vars and inv_exprs.
32534         (iv_ca_new, iv_ca_free, iv_ca_dump, free_loop_data): Ditto.
32535         (create_new_ivs): Remove useless dump.
32536
32537 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32538
32539         * tree-ssa-loop-ivopts.c (get_computation_cost_at): Remove pseudo
32540         iv_cand code.
32541         (determine_group_iv_cost_cond, determine_iv_cost): Ditto.
32542         (iv_ca_set_no_cp, create_new_iv): Ditto.
32543
32544 2017-05-02  Bin Cheng  <bin.cheng@arm.com>
32545
32546         * rtlanal.c (rtx_cost): Handle TRUNCATE between tieable modes.
32547
32548 2017-05-02  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
32549
32550         * tree.h (EXPR_CILK_SPAWN): Use macro TREE_CHECK2 instead of
32551         function tree_check2.
32552
32553 2017-05-02  Martin Liska  <mliska@suse.cz>
32554
32555         * doc/gcov.texi: Add missing preposition.
32556         * gcov.c (function_info::function_info): Properly fill up
32557         all member variables.
32558
32559 2017-05-02  Tamar Christina  <tamar.christina@arm.com>
32560
32561         * expr.c (expand_expr_real_2): Re-cost if previous costs are the same.
32562
32563 2017-05-02  Tamar Christina  <tamar.christina@arm.com>
32564
32565         * simplify-rtx.c (simplify_binary_operation_1): Add LSHIFTRT case.
32566
32567 2017-05-02  Martin Liska  <mliska@suse.cz>
32568
32569         PR lto/77954.
32570         * lto-streamer-in.c (lto_read_tree_1): Remove
32571         LTO_STREAMER_DEBUG.
32572         * lto-streamer.c (struct tree_hash_entry): Likewise.
32573         (struct tree_entry_hasher): Likewise.
32574         (tree_entry_hasher::hash): Likewise.
32575         (tree_entry_hasher::equal): Likewise.
32576         (lto_streamer_init): Likewise.
32577         (lto_orig_address_map): Likewise.
32578         (lto_orig_address_get): Likewise.
32579         (lto_orig_address_remove): Likewise.
32580         * lto-streamer.h: Likewise.
32581         * tree-streamer-in.c (streamer_alloc_tree): Likewise.
32582         * tree-streamer-out.c (streamer_write_tree_header): Likewise.
32583
32584 2017-05-02  Sebastian Peryt  <sebastian.peryt@intel.com>
32585
32586         * config/i386/avx512fintrin.h (_mm_mask_add_round_sd)
32587         (_mm_maskz_add_round_sd, _mm_mask_add_round_ss)
32588         (mm_maskz_add_round_ss, _mm_mask_sub_round_sd)
32589         (mm_maskz_sub_round_sd, _mm_mask_sub_round_ss)
32590         (mm_maskz_sub_round_ss, _mm_mask_add_sd)
32591         (mm_maskz_add_sd, _mm_mask_add_ss, _mm_maskz_add_ss)
32592         (mm_mask_sub_sd, _mm_maskz_sub_sd, _mm_mask_sub_ss)
32593         (mm_maskz_sub_ss): New intrinsics.
32594         * config/i386/i386-builtin-types.def (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
32595         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): New function type aliases.
32596         * config/i386/i386-builtin.def (__builtin_ia32_addsd_mask_round)
32597         (__builtin_ia32_addss_mask_round, __builtin_ia32_subsd_mask_round)
32598         (__builtin_ia32_subss_mask_round): New builtins.
32599         * config/i386/i386.c (V2DF_FTYPE_V2DF_V2DF_V2DF_UQI_INT)
32600         (V4SF_FTYPE_V4SF_V4SF_V4SF_UQI_INT): Handle new types.
32601         * config/i386/sse.md (<sse>_vm<plusminus_insn><mode>3<round_name>):
32602         Renamed to ...
32603         (<sse>_vm<plusminus_insn><mode>3<mask_name><round_name>): ... this.
32604         (v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_op3>%2, %1, %0|%0, %1, %<iptr>2<round_op3>}):
32605         Changed to ...
32606         (v<plusminus_mnemonic><ssescalarmodesuffix>\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %<iptr>2<round_mask_op3>}):
32607         ... this.
32608
32609 2017-05-02  Martin Jambor  <mjambor@suse.cz>
32610
32611         PR tree-optimization/78687
32612         * tree-sra.c (access): New field parent.
32613         (process_subtree_disqualification): New function.
32614         (disqualify_candidate): Call it.
32615         (build_accesses_from_assign): Reset write flag if creating an
32616         assighnment link.
32617         (build_access_subtree): Fill in parent field and also prpagate
32618         down grp_write flag.
32619         (create_artificial_child_access): New parameter set_grp_write, set
32620         grp_write to its value.
32621         (propagate_subaccesses_across_link): Also propagate grp_write flag
32622         values.
32623         (propagate_all_subaccesses): Push the closest parent back to work
32624         queue if add_access_to_work_queue returned true.
32625
32626 2017-05-02  Richard Biener  <rguenther@suse.de>
32627
32628         * common.opt (fstrict-overflow): Alias negative to fwrapv.
32629         * doc/invoke.texi (fstrict-overflow): Remove all traces of
32630         -fstrict-overflow documentation.
32631         * tree.h (TYPE_OVERFLOW_UNDEFINED): Do not test flag_strict_overflow.
32632         (POINTER_TYPE_OVERFLOW_UNDEFINED): Test !flag_wrapv instead of
32633         flag_strict_overflow.
32634         * ipa-inline.c (can_inline_edge_p): Do not test flag_strict_overflow.
32635         * lto-opts.c (lto_write_options): Do not stream it.
32636         * lto-wrapper.c (merge_and_complain): Do not handle it.
32637         * opts.c (default_options_table): Do not set -fstrict-overflow.
32638         (finish_options): Likewise do not clear it when sanitizing.
32639         * simplify-rtx.c (simplify_const_relational_operation): Do not
32640         test flag_strict_overflow.
32641
32642 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
32643
32644         * config/alpha/alpha.md (*add<mode>3_ieee): Merge to add<mode>3
32645         using enabled attribute.
32646         (*sub<mode>3_ieee): Merge to sub<mode>3 using enabled attribute.
32647         (*mul<mode>3_ieee): Merge to mul<mode>3 using enabled attribute.
32648         (*div<mode>3_ieee): Merge to div<mode>3 using enabled attribute.
32649         (*sqrt<mode>2_ieee): Merge to sqrt<mode>2 using enabled attribute.
32650         (*fix_truncdfdi_ieee): Merge to *fix_truncdfdi2 using enabled attribute.
32651         (*fix_truncsfdi_ieee): Merge to *fix_truncsfdi2 using enabled attribute.
32652         (*floatdisf_ieee): Merge to floatdisf2 using enabled attribute.
32653         (*floatdidf_ieee): Merge to floatdidf2 using enabled attribute.
32654         (*truncdfsf2_ieee): Merge to truncdfsf2 using enabled attribute.
32655         (*cmpdf_ieee): Merge to *cmpdf_internal using enabled attribute.
32656
32657 2017-05-02  Uros Bizjak  <ubizjak@gmail.com>
32658
32659         * config/i386/i386.c (ix86_code_end): Use {FIRST,LAST}_INT_REG.
32660
32661 2017-05-02  Richard Biener  <rguenther@suse.de>
32662
32663         PR tree-optimization/80591
32664         Revert
32665         2017-04-10  Richard Biener  <rguenther@suse.de>
32666
32667         * tree-ssa-structalias.c (find_func_aliases): Properly handle
32668         asm inputs.
32669
32670 2017-05-02  Richard Biener  <rguenther@suse.de>
32671
32672         PR tree-optimization/80549
32673         * tree-cfgcleanup.c (mfb_keep_latches): New helper.
32674         (cleanup_tree_cfg_noloop): Create forwarders to known loop
32675         headers if they do not have a preheader.
32676
32677 2017-05-02  Martin Liska  <mliska@suse.cz>
32678
32679         PR other/80589
32680         * common.opt: Fix typo.
32681         * doc/invoke.texi: Likewise.
32682
32683 2017-05-01  Jan Beulich  <jbeulich@suse.com>
32684
32685         * config/i386/sse.md (xop_vpermil2<mode>3): Do not allow operand
32686         swapping, add (x,x,m,x,n) alternative.
32687
32688 2017-05-01  Nathan Sidwell  <nathan@acm.org>
32689
32690         * calls.c (combine_pending_stack_adjustment_and_call): Remove
32691         unnecessary unadjusted_alignment check.
32692
32693 2017-05-01  Xi Ruoyao  <ryxi@stu.xidian.edu.cn>
32694
32695         PR c++/80038
32696         * cilk_common.c (expand_builtin_cilk_detach): Move pedigree
32697         operations here.
32698         * gimplify.c (gimplify_cilk_detach): New function.
32699         (gimplify_call_expr, gimplify_modify_expr): Call it as needed.
32700         * tree-core.h: Document EXPR_CILK_SPAWN.
32701         * tree.h (EXPR_CILK_SPAWN): Define.
32702
32703 2017-05-01  David Malcolm  <dmalcolm@redhat.com>
32704
32705         * diagnostic-show-locus.c (layout::get_expanded_location): Rewrite
32706         to use new fixit_hint representation, using the "replace" logic.
32707         (get_line_span_for_fixit_hint): Likewise.
32708         (layout::print_any_fixits): Likewise.
32709         (selftest::test_one_liner_many_fixits): Rename to...
32710         (selftest::test_one_liner_many_fixits_1): ...this, and update
32711         comment and expected output to reflect that the multiple fix-it
32712         hints are now consolidated into one insertion.
32713         (selftest::test_one_liner_many_fixits_2): New test.
32714         (selftest::test_diagnostic_show_locus_one_liner): Update for
32715         above.
32716         (selftest::test_fixit_consolidation): Update for fix-it API
32717         change.
32718         * diagnostic.c (print_parseable_fixits): Likewise.
32719         * edit-context.c (edited_line::m_line_events): Convert from
32720         auto_vec <line_event *> to auto_vec <line_event>.
32721         (class line_event): Convert from abstract base class to a concrete
32722         class, taking over the role of replace_event.
32723         (class insert_event): Delete.
32724         (class replace_event): Rename to class line_event.  Convert to
32725         half-open range.
32726         (edit_context::add_fixits): Reimplement.
32727         (edit_context::apply_insert): Delete.
32728         (edit_context::apply_replace): Rename to...
32729         (edit_context::apply_fixit): ...this.  Convert to half-open range.
32730         (edited_file::apply_insert): Delete.
32731         (edited_file::apply_replace): Rename to...
32732         (edited_file::apply_fixit): ...this.
32733         (edited_line::~edited_line): Drop deletion of events.
32734         (edited_line::apply_insert): Delete.
32735         (edited_line::apply_replace): Rename to...
32736         (edited_line::apply_fixit): ...this.  Convert to half-open range.
32737         Update for change to type of m_line_events.
32738         * edit-context.h (edit_context::apply_insert): Delete.
32739         (edit_context::apply_replace): Rename to...
32740         (edit_context::apply_fixit): ...this.
32741
32742 2017-05-01  Martin Sebor  <msebor@redhat.com>
32743
32744         * gimple-ssa-sprintf.c (format_integer): Set knownrange when it's
32745         known.
32746
32747 2017-05-01  Uros Bizjak  <ubizjak@gmail.com>
32748
32749         PR target/68491
32750         * config/i386/cpuid.h (__get_cpuid): Always return 0 when
32751         __get_cpuid_max returns 0.
32752         (__get_cpuid_count): Ditto.
32753
32754 2017-05-01  Eric Botcazou  <ebotcazou@adacore.com>
32755
32756         * tree.c (substitute_in_expr) <tcc_vl_exp>: Also inline a call if the
32757         replacement expression is another instance of one of its arguments.
32758
32759 2017-05-01  Jakub Jelinek  <jakub@redhat.com>
32760
32761         PR target/79430
32762         * rtlanal.c (reg_set_p): If reg is a stack_pointer_rtx, also
32763         check for stack push/pop autoinc.
32764         * config/i386/i386.c (ix86_agi_dependent): Return false
32765         if the only reason why modified_in_p returned true is that
32766         addr is SP based and set_insn is a push or pop.
32767
32768 2017-04-29  Jan Hubicka  <hubicka@ucw.cz>
32769
32770         * ipa-inline.c (compute_inlined_call_time): Remove now unnecesary
32771         overflow check.
32772
32773 2017-04-29  Jan Hubicka  <hubicka@ucw.cz>
32774
32775         PR ipa/79224
32776         * ipa-inline-analysis.c (dump_predicate): Add optional parameter NL.
32777         (account_size_time): Use two predicates - exec_pred and
32778         nonconst_pred_ptr.
32779         (evaluate_conditions_for_known_args): Compute both clause and
32780         nonspec_clause.
32781         (evaluate_properties_for_edge): Evaulate both clause and nonspec_clause.
32782         (inline_summary_t::duplicate): Update.
32783         (estimate_function_body_sizes): Caluculate exec and nonconst predicates
32784         separately.
32785         (compute_inline_parameters): Likewise.
32786         (estimate_edge_size_and_time): Update caluclation of time.
32787         (estimate_node_size_and_time): Compute both time and nonspecialized
32788         time.
32789         (estimate_ipcp_clone_size_and_time): Update.
32790         (inline_merge_summary): Update.
32791         (do_estimate_edge_time): Update.
32792         (do_estimate_edge_size): Update.
32793         (do_estimate_edge_hints): Update.
32794         (inline_read_section, inline_write_summary): Stream both new predicates.
32795         * ipa-inline.c (compute_uninlined_call_time): Take uninlined_call_time
32796         as argument.
32797         (compute_inlined_call_time): Cleanup.
32798         (big_speedup_p): Update.
32799         (edge_badness): Update.
32800         * ipa-inline.h (INLINE_TIME_SCALE): Remove.
32801         (size_time_entry): Replace predicate by exec_predicate and
32802         nonconst_predicate.
32803         (edge_growth_cache_entry): Cache both time nad nonspecialized time.
32804         (estimate_edge_time): Return also nonspec_time.
32805         (reset_edge_growth_cache): Update.
32806
32807 2017-04-29  Jakub Jelinek  <jakub@redhat.com>
32808
32809         PR rtl-optimization/80491
32810         * ifcvt.c (noce_process_if_block): When looking for x setter
32811         with missing else_bb, don't check only the insn right before
32812         cond_earliest, but look for the last insn that x is modified in
32813         within the same bb.
32814
32815         PR rtl-optimization/80491
32816         * alias.c (memory_modified_in_insn_p): Return true for CALL_INSNs.
32817
32818 2017-04-29  Marc Glisse  <marc.glisse@inria.fr>
32819
32820         PR tree-optimization/80487
32821         * tree-ssa-alias.c (stmt_kills_ref_p): Handle stpncpy and strncpy.
32822
32823 2017-04-29  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
32824
32825         PR tree-optimization/79697
32826         * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Check if callee
32827         is BUILT_IN_STRDUP, BUILT_IN_STRNDUP, BUILT_IN_REALLOC.
32828         (propagate_necessity): Check if def_callee is BUILT_IN_STRDUP or
32829         BUILT_IN_STRNDUP.
32830         * gimple-fold.c (gimple_fold_builtin_realloc): New function.
32831         (gimple_fold_builtin): Call gimple_fold_builtin_realloc.
32832
32833 2017-04-28  Martin Sebor  <msebor@redhat.com>
32834
32835         PR tree-optimization/80523
32836         * gimple-ssa-sprintf.c (target_to_host_charmap): New global variable.
32837         (init_target_to_host_charmap, target_to_host, target_strtol10): New
32838         functions.
32839         (maybe_warn, format_directive, parse_directive): Use new functions.
32840         (pass_sprintf_length::execute): Call init_target_to_host_charmap.
32841
32842 2017-04-28  Marc Glisse  <marc.glisse@inria.fr>
32843
32844         * match.pd (X+Z OP Y+Z, X-Z OP Y-Z, Z-X OP Z-Y): New transformations.
32845
32846 2017-04-28  Bernd Edlinger  <bernd.edlinger@hotmail.de>
32847
32848         * configure.ac (SYSTEM_HEADER_DIR, BUILD_SYSTEM_HEADER_DIR,
32849         target_header_dir): Set correctly.
32850         * configure: Regenerated.
32851         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
32852         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
32853         instead of SYSTEM_HEADER_DIR.
32854
32855 2017-04-28  Jan Hubicka  <hubicka@ucw.cz>
32856
32857         * ipa-cp.c (perform_estimation_of_a_value): Turn time to sreal.
32858         (estimate_local_effects): Likewise.
32859         * ipa-inline.c (compute_inlined_call_time, want_inline_small_function_p,
32860         edge_badness, inline_small_functions, dump_overall_stats): LIkewise.
32861         * ipa-inline.h (edge_growth_cache_entry, estimate_time_after_inlining,
32862         estimate_ipcp_clone_size_and_time, do_estimate_edge_time,
32863         do_estimate_edge_time, estimate_edge_time): Likewise.
32864         * ipa-inline-analysis.c (estimate_node_size_and_time,
32865         estimate_ipcp_clone_size_and_time, do_estimate_edge_time): Likewise.
32866         (estimate_time_after_inlining): Remove.
32867
32868 2017-04-28  Martin Liska  <mliska@suse.cz>
32869
32870         * doc/gcov.texi: Enhance documentation of gcov.
32871
32872 2017-04-28  Martin Liska  <mliska@suse.cz>
32873
32874         * doc/gcov.texi: Sort options in alphabetic order.
32875         * doc/gcov-dump.texi: Likewise.
32876         * doc/gcov-tool.texi: Likewise.
32877         * gcov.c (print_usage): Likewise.
32878         * gcov-dump.c (print_usage): Likewise.
32879         * gcov-tool.c (print_merge_usage_message): Likewise.
32880         (print_rewrite_usage_message): Likewise.
32881         (print_overlap_usage_message): Likewise.
32882
32883 2017-04-28  Martin Liska  <mliska@suse.cz>
32884
32885         PR gcov-profile/53915
32886         * gcov.c (format_gcov): Print 'NAN %' when top > bottom.
32887
32888 2017-04-28  Martin Liska  <mliska@suse.cz>
32889
32890         PR gcov-profile/79891
32891         * gcov.c (add_line_counts): Assign BBs to lines just if the BB
32892         is marked by compiler as living on a line.
32893         (get_cycles_count): Remove usage of the union.
32894         (output_intermediate_file): Likewise.
32895         (find_source): Fix GNU coding style.
32896         (accumulate_line_counts): Remove old non-all block mode.
32897         (output_lines): Remove usage of the union.
32898         * profile.c (output_location): Include all BBs, even if
32899         belonging to a same line (and file) as a previous BB.
32900
32901 2017-04-28  Martin Liska  <mliska@suse.cz>
32902
32903         * gcov.c (process_args): Handle new argument 'w'.
32904         (read_graph_file): Assign ID to BBs.
32905         (output_branch_count): Display BB # if verbose flag is set.
32906         (output_lines): Likewise for arcs.
32907         (print_usage): Add '--verbose' option help.
32908         * doc/gcov.texi: Document --verbose (-w) option.
32909
32910 2017-04-28  Martin Liska  <mliska@suse.cz>
32911
32912         * gcov.c (struct block_location_info): New struct.
32913         (process_file): Fill up the new structure.
32914         (read_graph_file): Replace usage of encoding by the newly added
32915         struct.
32916         (add_line_counts): Likewise.
32917         (accumulate_line_counts): Remove usage of the union.
32918         (function_info::function_info): New function.
32919         (function_info::~function_info): Likewise.
32920         (process_file): Call delete instead of release_function.
32921         (release_function): Release the function.
32922         (release_structures): Call delete instead of release_function.
32923         (solve_flow_graph): Replace usage of num_blocks.
32924         (find_exception_blocks): Likewise.
32925         (output_lines): Fix GNU coding style.
32926
32927 2017-04-28  Martin Liska  <mliska@suse.cz>
32928
32929         PR driver/56469
32930         * coverage.c (coverage_remove_note_file): New function.
32931         * coverage.h: Declare the function.
32932         * toplev.c (finalize): Clean if an error has been seen.
32933
32934 2017-04-28  Martin Liska  <mliska@suse.cz>
32935
32936         PR gcov-profile/80031
32937         * gcov-dump.c (tag_blocks): Just print number of basic blocks.
32938         * gcov-io.h (GCOV_TAG_BLOCKS_NUM): Remove unused macro.
32939         * gcov.c (read_graph_file): Read just number of blocks.
32940         * profile.c (branch_prob): Do not stream 0 flags per a basic
32941         block.
32942
32943 2017-04-28  Martin Liska  <mliska@suse.cz>
32944
32945         * gcov-dump.c (tag_*): Add new argument to declarations.
32946         (dump_gcov_file): Likewise.
32947         (tag_blocks): Add and use new argument depth.
32948         (tag_arcs): Likewise.
32949         (tag_lines): Likewise.
32950         (tag_counters): Likewise.
32951         (tag_summary): Likewise.
32952         (dump_working_sets): Use depth to do a proper indentation.
32953
32954 2017-04-28  Jakub Jelinek  <jakub@redhat.com>
32955
32956         PR bootstrap/80531
32957         * cgraph.h (symtab_node::debug_symtab): No longer inline.
32958         * symtab.c (symtab_node::debug_symtab): Move definition here.
32959
32960 2017-04-28  Richard Biener  <rguenther@suse.de>
32961
32962         * lto-streamer.h (LTO_major_version): Bump to 7.
32963
32964 2017-04-28  Richard Biener  <rguenther@suse.de>
32965
32966         * tree-vrp.c (assert_info): New struct.
32967         (add_assert_info): New helper.
32968         (register_edge_assert_for_2): Refactor to add asserts to a vector
32969         of assert_info.
32970         (register_edge_assert_for_1): Likewise.
32971         (register_edge_assert_for): Likewise.
32972         (finish_register_edge_assert_for): New helper actually registering
32973         asserts where live on edge.
32974         (find_conditional_asserts): Adjust.
32975         (find_switch_asserts): Likewise.
32976         (evrp_dom_walker::try_find_new_range): Generalize.
32977         (evrp_dom_walker::before_dom_children): Use register_edge_assert_for.
32978
32979 2017-04-27  Marek Polacek  <polacek@redhat.com>
32980
32981         PR sanitizer/80349
32982         * fold-const.c (fold_binary_loc) <case EQ_EXPR, NE_EXPR>: Convert
32983         arg10 and arg11 to itype.
32984
32985 2017-04-27  Jonathan Wakely  <jwakely@redhat.com>
32986
32987         * doc/extend.texi (Object Size Checking): Improve grammar.
32988
32989 2017-04-27  Richard Earnshaw  <rearnsha@arm.com>
32990
32991         PR target/80530
32992         * config/aarch64/aarch64.c (aarch64_emit_approx_sqrt): Ensure
32993         that the logic for permitting reciprocal estimates matches that
32994         in use_rsqrt_p.
32995
32996 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
32997
32998         PR c++/80534
32999         * tree.c (type_cache_hasher::equal): Only compare
33000         TYPE_TYPELESS_STORAGE flag on non-aggregate element types.
33001         (build_array_type_1): Only hash TYPE_TYPELESS_STORAGE flag on
33002         non-aggregate element types.
33003         * tree.h (TYPE_TYPELESS_STORAGE): Fix comment typo, add more details
33004         about the flag on ARRAY_TYPEs in the comment, formatting fix.
33005
33006 2017-04-27  Richard Biener  <rguenther@suse.de>
33007
33008         PR middle-end/80533
33009         * emit-rtl.c (set_mem_attributes_minus_bitpos): When
33010         stripping ARRAY_REFs from MEM_EXPR make sure we're not
33011         keeping a reference to a trailing array.
33012
33013 2017-04-27  Richard Biener  <rguenther@suse.de>
33014
33015         PR middle-end/80539
33016         * tree-chrec.c (chrec_fold_plus_poly_poly): Deal with not
33017         being in loop-closed SSA form conservatively.
33018         (chrec_fold_multiply_poly_poly): Likewise.
33019
33020 2017-04-27  Tamar Christina  <tamar.christina@arm.com>
33021
33022         PR middle-end/79665
33023         * expr.c (expand_expr_real_2): Move TRUNC_MOD_EXPR, FLOOR_MOD_EXPR,
33024         CEIL_MOD_EXPR, ROUND_MOD_EXPR cases.
33025
33026 2017-04-27  Jakub Jelinek  <jakub@redhat.com>
33027
33028         PR target/77728
33029         * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): Remove.
33030         (aarch64_function_arg_alignment): Return unsigned int again, but still
33031         ignore TYPE_FIELDS chain decls other than FIELD_DECLs.
33032         (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
33033         Don't emit -Wpsabi note.
33034         (aarch64_function_arg_boundary): Likewise.
33035         (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
33036         caller.
33037
33038 2017-04-26  Nathan Sidwell  <nathan@acm.org>
33039
33040         * tree.h (crc32_unsigned_n): Declare.
33041         (crc32_unsigned, crc32_unsigned): Make inline.
33042         * tree.c (crc32_unsigned_bits): Replace with ...
33043         (crc32_unsigned_n): ... this.
33044         (crc32_unsigned, crc32_byte): Remove.
33045         (crc32_string): Remove unnecessary braces.
33046
33047 2017-04-25  Jan Hubicka  <hubicka@ucw.cz>
33048
33049         * ipa-cp.c (estimate_local_effects): Convert sreal to int.
33050         * ipa-inline-analysis.c (MAX_TIME): Remove.
33051         (account_size_time): Use sreal for time.
33052         (dump_inline_summary): Update.
33053         (estimate_function_body_sizes): Update.
33054         (estimate_edge_size_and_time): Update.
33055         (estimate_calls_size_and_time): Update.
33056         (estimate_node_size_and_time): Update.
33057         (inline_merge_summary): Update.
33058         (inline_update_overall_summary): Update.
33059         (estimate_time_after_inlining): Update.
33060         (inline_read_section): Update.
33061         (inline_write_summary): Update.
33062         * ipa-inline.c (compute_uninlined_call_time): Update.
33063         (compute_inlined_call_time): Update.
33064         (recursive_inlining): Update.
33065         (inline_small_functions): Update.
33066         (dump_overall_stats): Update.
33067         * ipa-inline.h: Include sreal.h.
33068         (size_time_entry): Turn time to sreal.
33069         (inline_summary): Turn self_time nad time to sreal.
33070
33071 2017-04-25  Jan Hubicka  <hubicka@ucw.cz>
33072
33073         * sreal.c: Include backend.h, tree.h, gimple.h, cgraph.h and
33074         data-streamer.h
33075         (sreal::stream_out, sreal::stream_in): New.
33076         * sreal.h (sreal::stream_out, sreal::stream_in): Declare.
33077
33078 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
33079
33080         * Makefile.in (s-options): Invoke opt-gather.awk with LC_ALL=C in the
33081         environment.
33082
33083 2017-04-25  Uros Bizjak  <ubizjak@gmail.com>
33084
33085         PR target/70799
33086         * config/i386/i386.c (dimode_scalar_to_vector_candidate_p):
33087         Handle ASHIFTRT.
33088         (dimode_scalar_chain::compute_convert_gain): Ditto.
33089         (dimode_scalar_chain::make_vector_copies): Ditto.
33090         (dimode_scalar_chain::convert_reg): Ditto.
33091         (dimode_scalar_chain::convert_insn): Ditto.
33092         * config/i386/sse.md (VI24_AVX512BW_1): Remove mode iterator.
33093         (VI248_AVX512BW_1): New mode iterator.
33094         (<mask_codefor>ashr<mode>3<mask_name>): Merge insn pattern with
33095         <mask_codefor>ashrv2di3<mask_name> insn using VI248_AVX512BW_1
33096         mode iterator.
33097
33098 2017-04-25  Martin Sebor  <msebor@redhat.com>
33099
33100         PR tree-optimization/80497
33101         * gimple-ssa-sprintf.c (get_int_range): Avoid assuming all integer
33102         constants are representable in HOST_WIDE_INT.
33103         (parse_directive): Ditto.
33104
33105 2017-04-25  Martin Sebor  <msebor@redhat.com>
33106
33107         PR bootstrap/80486
33108         * dominance.c (dom_info::m_n_basic_blocks): Change type to unsigned.
33109         (new_zero_array): Adjust signature.
33110         (dom_info::dom_init): Used unsigned rather that size_t.
33111         (dom_info::dom_info): Same.
33112
33113 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
33114             Jakub Jelinek  <jakub@redhat.com>
33115
33116         PR target/77728
33117         * config/arm/arm.c: Include gimple.h.
33118         (aapcs_layout_arg): Emit -Wpsabi note if arm_needs_doubleword_align
33119         returns negative, increment ncrn only if it returned positive.
33120         (arm_needs_doubleword_align): Return int instead of bool,
33121         ignore DECL_ALIGN of non-FIELD_DECL TYPE_FIELDS chain
33122         members, but if there is any such non-FIELD_DECL
33123         > PARM_BOUNDARY aligned decl, return -1 instead of false.
33124         (arm_function_arg): Emit -Wpsabi note if arm_needs_doubleword_align
33125         returns negative, increment nregs only if it returned positive.
33126         (arm_setup_incoming_varargs): Likewise.
33127         (arm_function_arg_boundary): Emit -Wpsabi note if
33128         arm_needs_doubleword_align returns negative, return
33129         DOUBLEWORD_ALIGNMENT only if it returned positive.
33130
33131 2017-04-25  Marek Polacek  <polacek@redhat.com>
33132
33133         PR sanitizer/80349
33134         * fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
33135         first argument to type.
33136
33137 2017-04-25  Bill Seurer  <seurer@linux.vnet.ibm.com>
33138
33139         PR target/80482
33140         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Change
33141         type checks to test for compatibility instead of equality.
33142
33143 2017-04-25  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
33144             Jakub Jelinek  <jakub@redhat.com>
33145
33146         PR target/77728
33147         * config/aarch64/aarch64.c (struct aarch64_fn_arg_alignment): New
33148         type.
33149         (aarch64_function_arg_alignment): Return aarch64_fn_arg_alignment
33150         struct.  Ignore DECL_ALIGN of decls other than FIELD_DECL for
33151         the alignment computation, but return their maximum in warn_alignment.
33152         (aarch64_layout_arg): Adjust aarch64_function_arg_alignment caller.
33153         Emit a -Wpsabi note if warn_alignment is 16 bytes, but alignment
33154         is smaller.
33155         (aarch64_function_arg_boundary): Likewise.  Simplify using MIN/MAX.
33156         (aarch64_gimplify_va_arg_expr): Adjust aarch64_function_arg_alignment
33157         caller.
33158
33159 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33160
33161         * config/arc/simdext.md (dmpyh): Fix typo.
33162
33163 2017-04-25  Richard Biener  <rguenther@suse.de>
33164
33165         PR tree-optimization/80492
33166         * alias.c (compare_base_decls): Handle registers with asm
33167         specification conservatively.
33168         * tree-ssa-alias.c (decl_refs_may_alias_p): Handle
33169         compare_base_decls returning dont-know properly.
33170
33171 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33172
33173         * config/arc/arc.c (LEGITIMATE_OFFSET_ADDRESS_P): Delete macro.
33174         (legitimate_offset_address_p): New function.
33175         (arc_legitimate_address_p): Use above function.
33176
33177 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33178
33179         * config/arc/arc.c (arc_output_mi_thunk): Emit PIC calls.
33180
33181 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33182
33183         * config/arc/arc.c (arc_conditional_register_usage): Use ACCL,
33184         ACCH registers whenever they are available.
33185
33186 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33187
33188         * config/arc/arc.c (arc_conditional_register_usage): Make D0, D1
33189         double regs fix when not used.
33190
33191 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33192
33193         * config/arc/arc.h (REGNO_OK_FOR_BASE_P): Consider also extension
33194         core registers.
33195         (REG_OK_FOR_INDEX_P_NONSTRICT): Likewise.
33196         (REG_OK_FOR_BASE_P_NONSTRICT): Likewise.
33197
33198 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33199
33200         * config/arc/arc.c (arc_output_addsi): Check for h-register class
33201         when emitting short ADD instructions.
33202
33203 2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
33204
33205         * config/arc/arc.md (cmpsi_cc_insn_mixed): Use 'h' register
33206         constraint.
33207         (cmpsi_cc_c_insn): Likewise.
33208         (cbranchsi4_scratch): Compute proper instruction length using
33209         compact_hreg_operand.
33210         * config/arc/predicates.md (compact_hreg_operand): New predicate.
33211
33212 2017-04-25  Richard Biener  <rguenther@suse.de>
33213
33214         PR middle-end/80509
33215         * passes.c (pass_manager::pass_manager): Initialize
33216         m_name_to_pass_map.
33217
33218 2017-04-25  Richard Biener  <rguenther@suse.de>
33219
33220         PR tree-optimization/79201
33221         * tree-ssa-sink.c (statement_sink_location): Handle calls.
33222
33223 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33224
33225         PR target/80464
33226         * config/s390/vector.md: Split MEM->GPR vector moves for
33227         non-s_operand addresses.
33228
33229 2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
33230
33231         PR target/79895
33232         * config/s390/predicates.md (reload_const_wide_int_operand): New
33233         predicate.
33234         * config/s390/s390.md ("movti"): Remove d/P alternative.
33235         ("movti_bigconst"): New pattern definition.
33236
33237 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
33238
33239         PR target/80080
33240         * s390-protos.h (s390_expand_cs_hqi): Removed.
33241         (s390_expand_cs, s390_expand_atomic_exchange_tdsi): New prototypes.
33242         * config/s390/s390.c (s390_emit_compare_and_swap): Handle all integer
33243         modes as well as CCZ1mode and CCZmode.
33244         (s390_expand_atomic_exchange_tdsi, s390_expand_atomic): Adapt to new
33245         signature of s390_emit_compare_and_swap.
33246         (s390_expand_cs_hqi): Likewise, make static.
33247         (s390_expand_cs_tdsi): Generate an explicit compare before trying
33248         compare-and-swap, in some cases.
33249         (s390_expand_cs): Wrapper function.
33250         (s390_expand_atomic_exchange_tdsi): New backend specific expander for
33251         atomic_exchange.
33252         (s390_match_ccmode_set): Allow CCZmode <-> CCZ1 mode.
33253         * config/s390/s390.md ("atomic_compare_and_swap<mode>"): Merge the
33254         patterns for small and large integers.  Forbid symref memory operands.
33255         Move expander to s390.c.  Require cc register.
33256         ("atomic_compare_and_swap<DGPR:mode><CCZZ1:mode>_internal")
33257         ("*atomic_compare_and_swap<TDI:mode><CCZZ1:mode>_1")
33258         ("*atomic_compare_and_swapdi<CCZZ1:mode>_2")
33259         ("*atomic_compare_and_swapsi<CCZZ1:mode>_3"): Use s_operand to forbid
33260         symref memory operands.  Remove CC mode and call s390_match_ccmode
33261         instead.
33262         ("atomic_exchange<mode>"): Allow and implement all integer modes.
33263
33264 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
33265
33266         * config/s390/s390.md (define_peephole2): New peephole to help
33267         combining the load-and-test pattern with volatile memory.
33268
33269 2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>
33270
33271         * config/s390/s390.md ("cstorecc4"): Use load-on-condition and deal
33272         with CCZmode for TARGET_Z196.
33273
33274 2017-04-25  Jakub Jelinek  <jakub@redhat.com>
33275
33276         PR rtl-optimization/80501
33277         * combine.c (make_compound_operation_int): Set subreg_code to SET
33278         even for AND with mask of the sign bit of mode.
33279
33280         PR rtl-optimization/80500
33281         * loop-unroll.c (combine_var_copies_in_loop_exit): Call copy_rtx on
33282         sum's initial value.
33283
33284 2017-04-25  Julian Brown  <julian@codesourcery.com>
33285             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
33286
33287         * config/aarch64/thunderx2t99.md (thunderx2t99_crc): New Reservation.
33288
33289 2017-04-25  Marc Glisse  <marc.glisse@inria.fr>
33290
33291         * fold-const.c (tree_single_nonzero_warnv_p): Handle SSA_NAME.
33292
33293 2017-04-25  Julian Brown  <julian@codesourcery.com>
33294             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
33295
33296         * config/aarch64/thunderx2t99.md (thunderx2t99_aes): New Reservation.
33297         (thunderx2t99_sha): New Reservation.
33298
33299 2017-04-25  Julian Brown  <julian@codesourcery.com>
33300             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
33301
33302         * config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Fix
33303         type for 1-element load.
33304
33305 2017-04-24  Marc Glisse  <marc.glisse@inria.fr>
33306
33307         * match.pd (X/[ex]C CMP Y/[ex]C): New transformation.
33308
33309 2017-04-24  Martin Jambor  <mjambor@suse.cz>
33310
33311         PR tree-optimization/80293
33312         * tree-sra.c (scalarizable_type_p): New parameter const_decl, make
33313         char arrays not totally scalarizable if it is false.
33314         (analyze_all_variable_accesses): Pass correct value in the new
33315         parameter.  Add a statistics counter.
33316
33317 2017-04-24  Jan Hubicka  <hubicka@ucw.cz>
33318
33319         PR middle-end/79931
33320         * ipa-devirt.c (dump_possible_polymorphic_call_targets): Fix ICE.
33321
33322 2017-04-24  Richard Biener  <rguenther@suse.de>
33323
33324         PR tree-optimization/80494
33325         * tree-scalar-evolution.c (analyze_scalar_evolution_1): Bail
33326         out for complex types.
33327
33328 2017-04-24  Richard Biener  <rguenther@suse.de>
33329
33330         * tree-ssa-sccvn.h (run_scc_vn): Adjust prototype.
33331         * tree-ssa-sccvn.c (print_scc): Print SCC size.
33332         (extract_and_process_scc_for_name): Never fail but drop SCC to varying.
33333         (DFS): Adjust and never fail.
33334         (sccvn_dom_walker::fail): Remove.
33335         (sccvn_dom_walker::before_dom_children): Adjust.
33336         (run_scc_vn): Likewise and never fail.
33337         * tree-ssa-pre.c (pass_pre::execute): Adjust.
33338         (pass_fre::execute): Likewise.
33339
33340 2017-04-24  Richard Biener  <rguenther@suse.de>
33341
33342         PR tree-optimization/79725
33343         * tree-ssa-sink.c (statement_sink_location): Return whether
33344         failure reason was zero uses.  Move that check later.
33345         (sink_code_in_bb): Deal with zero uses by removing the stmt
33346         if possible.
33347
33348 2017-04-24  Richard Biener  <rguenther@suse.de>
33349
33350         PR c++/2972
33351         * tree-ssa-uninit.c (warn_uninitialized_vars): Handle some
33352         pointer-based references.
33353
33354 2017-04-24  Richard Biener  <rguenther@suse.de>
33355
33356         PR bootstrap/79814
33357         * pass_manager.h (pass_manager::operator new): Remove.
33358         (pass_manager::operator delete): Likewise.
33359         * passes.c (pass_manager::operator new): Remove.
33360         (pass_manager::operator delete): Likewise.
33361         (pass_manager::pass_manager): Zero individual pass members.
33362
33363 2017-04-23  Uros Bizjak  <ubizjak@gmail.com>
33364
33365         PR target/70799
33366         * config/i386/i386.c (dimode_scalar_to_vector_candidate_p)
33367         <case ASHIFT, case LSHIFTRT>: Also consider variable shifts.
33368         Check "XEXP (src, 1)" operand here.
33369         <case PLUS, case MINUS, case IOR, case XOR, case AND>:
33370         Check "XEXP (src, 1)" operand here.
33371         (dimode_scalar_chain::make_vector_copies): Detect count register
33372         of a shift instruction.  Zero extend count register from QImode
33373         to DImode to satisfy vector shift pattern count operand predicate.
33374         Substitute vector shift count operand with a DImode copy.
33375         (dimode_scalar_chain::convert_reg): Ditto, zero-extend from
33376         vector register.
33377
33378 2017-04-21  Uros Bizjak  <ubizjak@gmail.com>
33379
33380         * config/i386/i386.md (*extzvqi_mem_rex64): Move above *extzv<mode>.
33381         Remove UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
33382         (*insvqi_1_mem_rex64): Move above insv<mode>_1.  Remove
33383         UNSPEC_NOREX_MEM tag.  Update corresponding peephole2 pattern.
33384         (UNSPEC_NOREX_MEM): Remove definition.
33385
33386 2017-04-21  Richard Biener  <rguenther@suse.de>
33387
33388         PR tree-optimization/79547
33389         * tree-ssa-structalias.c (find_func_aliases_for_builtin_call):
33390         Handle strlen, strcmp, strncmp, strcasecmp, strncasecmp, memcmp,
33391         bcmp, strspn, strcspn, __builtin_object_size and __builtin_constant_p
33392         without any constraints.
33393
33394 2017-04-21  Richard Biener  <rguenther@suse.de>
33395
33396         PR tree-optimization/78847
33397         * fold-const.c (split_tree): Handle POINTER_PLUS_EXPR.
33398
33399 2017-04-21  Richard Biener  <rguenther@suse.de>
33400
33401         * tree.h (build_qualified_type): Annotate with CXX_MEM_STAT_INFO.
33402         (build_distinct_type_copy): Likewise.
33403         (build_variant_type_copy): Likewise.
33404         * tree.c (build_qualified_type): Pass down mem-stat info.
33405         (build_distinct_type_copy): Likewise.
33406         (build_variant_type_copy): Likewise.
33407
33408 2017-04-21  Richard Biener  <rguenther@suse.de>
33409
33410         PR tree-optimization/80237
33411         * tree-ssa-pre.c (find_leader_in_sets): Add third set argument,
33412         defaulted to NULL.
33413         (phi_translate_1): Also allow a leader in AVAIL_OUT of pred
33414         for a simplified result.
33415
33416 2016-04-21  Richard Biener  <rguenther@suse.de>
33417
33418         * tree-ssa-loop-ivcanon.c (constant_after_peeling): Do not require
33419         sth as strict as a simple_iv but a chrec without symbols and an
33420         operand defined in the loop we are peeling (and not some subloop).
33421         (propagate_constants_for_unrolling): Propagate all constants.
33422
33423 2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
33424
33425         PR target/79804
33426         * config/i386/i386.c (print_reg): Remove assert for disalowed
33427         regno values, call output_operand_lossage instead.
33428
33429 2017-04-20  Uros Bizjak  <ubizjak@gmail.com>
33430
33431         PR target/78090
33432         * config/i386/constraints.md (Yc): New register constraint.
33433         * config/i386/i386.md (*float<SWI48:mode><MODEF:mode>2_mixed):
33434         Use Yc constraint for alternative 2 of operand 0.  Remove
33435         preferred_for_speed attribute.
33436
33437 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
33438
33439         * omp-low.c (lower_lastprivate_clauses): Correct handling of linear and
33440         lastprivate clauses in SIMT case.
33441
33442 2017-04-20  Volker Reichelt  <v.reichelt@netcologne.de>
33443
33444         * doc/invoke.texi (-Wextra-semi): Document new warning option.
33445
33446 2017-04-20  Richard Biener  <rguenther@suse.de>
33447
33448         PR tree-optimization/57796
33449         * tree-vect-stmts.c (vect_model_store_cost): Cost scatters
33450         as N scalar stores.
33451         (vect_model_load_cost): Cost gathers as N scalar loads.
33452
33453 2017-04-20  Richard Biener  <rguenther@suse.de>
33454
33455         * ggc-page.c (ggc_allocated_p): Rename to ...
33456         (safe_lookup_page_table_entry): ... this and return the lookup
33457         result.
33458         (gt_ggc_m_S): Use safe_lookup_page_table_entry.
33459
33460 2017-04-20  Richard Biener  <rguenther@suse.de>
33461
33462         PR tree-optimization/80453
33463         * tree-ssa-sccvn.h (struct vn_phi_s): Add cclhs and ccrhs members.
33464         * tree-ssa-sccvn.c (cond_stmts_equal_p): Use recorded lhs and rhs
33465         from the conditions.
33466         (vn_phi_eq): Pass them down.
33467         (vn_phi_lookup): Record them.
33468         (vn_phi_insert): Likewise.
33469
33470 2017-04-20  Matthew Fortune  <matthew.fortune@imgtec.com>
33471
33472         * config/mips/mips.c (mips_expand_vec_perm_const): Re-fix
33473         uninitialized variable warning to avoid buffer overrun.
33474
33475 2017-04-20  Alexander Monakov  <amonakov@ispras.ru>
33476
33477         PR other/71250
33478         * doc/invoke.texi (-Wmissing-field-initializers): Mention that warning
33479         is suppressed for '{ 0 }' in C.
33480
33481 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
33482
33483         * BASE-VER: Set to 8.0.0.
33484
33485 2017-04-20  Thomas Preud'homme  <thomas.preudhomme@arm.com>
33486
33487         * config/arm/arm.c (arm_elf_asm_cdtor): Create non-default
33488         priority .init_array and .fini_array section with SECTION_NOTYPE
33489         flag.
33490
33491 2017-04-20  Jakub Jelinek  <jakub@redhat.com>
33492
33493         PR middle-end/80423
33494         * tree.h (build_array_type): Add typeless_storage default argument.
33495         * tree.c (type_cache_hasher::equal): Also compare
33496         TYPE_TYPELESS_STORAGE flag for ARRAY_TYPEs.
33497         (build_array_type): Add typeless_storage argument, set
33498         TYPE_TYPELESS_STORAGE to it, if shared also hash it, and pass to
33499         recursive call.
33500         (build_nonshared_array_type): Adjust build_array_type_1 caller.
33501         (build_array_type): Likewise.  Add typeless_storage argument.
33502
33503 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
33504             Jakub Jelinek  <jakub@redhat.com>
33505
33506         PR tree-optimization/80426
33507         * tree-vrp.c (extract_range_from_binary_expr_1): For an additive
33508         operation on symbolic operands, also compute the overflow for the
33509         invariant part when the operation degenerates into a negation.
33510
33511 2017-04-19  Jakub Jelinek  <jakub@redhat.com>
33512
33513         PR debug/80461
33514         * dwarf2out.c (modified_type_die, gen_type_die_with_usage):
33515         Check for t with zero TYPE_QUALS_NO_ADDR_SPACE.
33516
33517         PR debug/80436
33518         * tree-ssa-loop-manip.c (find_uses_to_rename_def): Ignore debug uses.
33519
33520 2017-04-19  Georg-Johann Lay  <avr@gjlay.de>
33521
33522         PR target/80462
33523         * config/avr/avr.c (tree.h): Include it.
33524         (cgraph.h): Include it.
33525         (avr_encode_section_info): Don't warn for uninitialized progmem
33526         variable if it's just an alias.
33527
33528 2017-04-19  Richard Biener  <rguenther@suse.de>
33529
33530         PR ipa/65972
33531         * auto-profile.c (afdo_vpt_for_early_inline): Update SSA
33532         when needed by AutoPGO.
33533
33534 2017-04-19  Paulo J. Matos  <paulo@matos-sorge.com>
33535
33536         PR lto/50345
33537         * doc/lto.texi: Remove an extra 'that'.
33538
33539 2017-04-19  Segher Boessenkool  <segher@kernel.crashing.org>
33540
33541         PR rtl-optimization/80429
33542         * ira.c (split_live_ranges_for_shrink_wrap): Don't split regs that
33543         are only used in debug insns.
33544
33545 2017-04-19  Eric Botcazou  <ebotcazou@adacore.com>
33546             Vladimir Makarov  <vmakarov@redhat.com>
33547
33548         * config/sparc/predicates.md (input_operand): Add comment.  Return
33549         true for any memory operand when LRA is in progress.
33550         * config/sparc/sparc.c (sparc_expand_move): Minor formatting fix.
33551
33552 2017-04-18  Jeff Law  <law@redhat.com>
33553
33554         PR target/74563
33555         * mips.md ({return,simple_return}_internal): Do not overwrite
33556         operands[0].
33557
33558 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
33559
33560         PR tree-optimization/80443
33561         * tree-vrp.c (intersect_ranges): For signed 1-bit precision type,
33562         instead of adding 1, subtract -1 and similarly instead of subtracting
33563         1 add -1.
33564
33565 2017-04-18  Richard Sandiford  <richard.sandiford@arm.com>
33566
33567         PR rtl-optimization/80357
33568         * haifa-sched.c (tmp_bitmap): New variable.
33569         (model_recompute): Handle duplicate use records.
33570         (alloc_global_sched_pressure_data): Initialize tmp_bitmap.
33571         (free_global_sched_pressure_data): Free it.
33572
33573 2017-04-18  Bernd Edlinger  <bernd.edlinger@hotmail.de>
33574
33575         Revert:
33576         2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
33577         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
33578         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
33579         instead of SYSTEM_HEADER_DIR.
33580
33581 2017-04-18  Jeff Law  <law@redhat.com>
33582
33583         PR middle-end/80422
33584         * cfgcleanup.c (try_crossjump_to_edge): Verify SRC1 and SRC2 have
33585         predecessors after walking up the insn chain.
33586
33587 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
33588
33589         PR debug/80263
33590         * dwarf2out.c (modified_type_die): Try harder not to emit internal
33591         sizetype type into debug info.
33592
33593 2017-04-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
33594
33595         PR target/80099
33596         * config/rs6000/rs6000.c (rs6000_expand_vector_extract): Eliminate
33597         unneeded test for TARGET_UPPER_REGS_SF.
33598         * config/rs6000/vsx.md (vsx_extract_v4sf_var): Likewise.
33599
33600 2017-04-18  Jakub Jelinek  <jakub@redhat.com>
33601
33602         PR sanitizer/80444
33603         * sancov.c (sancov_pass): Use gsi_start_nondebug_after_labels_bb
33604         instead of gsi_after_labels.
33605
33606 2017-04-18  Jeff Law  <law@redhat.com>
33607
33608         * regcprop.c (maybe_mode_change): Avoid creating copies of the
33609         stack pointer.
33610
33611         Revert:
33612         2017-04-13  Jeff Law  <law@redhat.com>
33613         * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
33614         in operands[1] if it is a MEM and TARGET_MIPS16 is active.
33615
33616 2017-04-18  Georg-Johann Lay  <avr@gjlay.de>
33617
33618         PR target/79453
33619         * config/avr/avr.c (intl.h): Include it.
33620         (avr_pgm_check_var_decl) [reason]: Wrap diagnostic snippets into _().
33621
33622 2017-04-18  Martin Liska  <mliska@suse.cz>
33623
33624         PR gcov-profile/78783
33625         * gcov-tool.c (gcov_output_files): Validate that destination
33626         file is either removed by the tool or by a user.
33627
33628 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
33629             Guy Benyei  <guybe@mellanox.com>
33630
33631         * config/arc/arc.c (arc_reorg): Move loop_end_id into a more local
33632         block, and do not negate it, the stored id is already negative.
33633
33634 2017-04-14  Andrew Burgess  <andrew.burgess@embecosm.com>
33635
33636         * config/arc/arc.md (doloop_begin_i): Use @pcl assembler syntax.
33637
33638 2017-04-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
33639
33640         PR target/80098
33641         * config/rs6000/rs6000-cpus.def (OTHER_P9_VECTOR_MASKS): Define
33642         masks of options that should be turned off if the VSX vector
33643         options are turned off.
33644         (OTHER_P8_VECTOR_MASKS): Likewise.
33645         (OTHER_VSX_VECTOR_MASKS): Likewise.
33646         * config/rs6000/rs6000.c (rs6000_option_override_internal): Call
33647         rs6000_disable_incompatible_switches to validate no type switches
33648         like -mvsx.
33649         (rs6000_incompatible_switch): New function to disallow turning on
33650         other vector options if -mno-vsx, -mno-power8-vector, or
33651         -mno-power9-vector are specified.
33652
33653 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
33654
33655         * config/arc/arc.h (CRT_CALL_STATIC_FUNCTION): Use long calls.
33656
33657 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
33658
33659         * config/arc/arc-protos.h (arc_decl_pretend_args): Remove.
33660         * config/arc/arc.c (arc_decl_pretend_args): Likewise.
33661         * config/arc/arc.h (CFA_FRAME_BASE_OFFSET): Likewise.
33662         (ARG_POINTER_CFA_OFFSET): Likewise.
33663
33664 2017-04-14  Claudiu Zissulescu  <claziss@synopsys.com>
33665
33666         * config/arc/arc.c (arc_mode_dependent_address_p): Relax
33667         conditions to take advantage of various optimizations.
33668
33669 2017-04-13  Jeff Law  <law@redhat.com>
33670
33671         * config/mips.mips.md (zero_extendsidi2): Do not allow SP to appear
33672         in operands[1] if it is a MEM and TARGET_MIPS16 is active.
33673         (zero_extendsidi2_dext): Likewise.
33674
33675 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
33676
33677         PR sanitizer/80403
33678         * fold-const.c (fold_ternary_loc): Revert
33679         use op0 instead of fold_convert_loc (loc, type, arg0) part of
33680         2017-04-12 change.
33681
33682 2017-04-13  Vladimir Makarov  <vmakarov@redhat.com>
33683
33684         PR rtl-optimization/80343
33685         * lra-remat.c (update_scratch_ops): Assign original hard reg to
33686         new scratch pseudo.
33687
33688 2017-04-13  Denis Khalikov <d.khalikov@partner.samsung.com>
33689
33690         PR sanitizer/80414
33691         * ubsan.c (ubsan_expand_bounds_ifn): Pass original index
33692         to ubsan_encode_value.
33693
33694 2017-04-13  Jeff Law  <law@redhat.com>
33695
33696         * reload1.c (eliminate_regs_1): Call gen_rtx_raw_SUBREG for SUBREGs
33697         appearing in DEBUG_INSNs.
33698
33699 2017-04-13  Martin Liska  <mliska@suse.cz>
33700
33701         PR gcov-profile/80413
33702         * gcov-io.c (gcov_write_string): Copy to buffer just when
33703         allocated size is greater than zero.
33704
33705 2017-04-13  Jakub Jelinek  <jakub@redhat.com>
33706
33707         PR debug/80321
33708         * dwarf2out.c (decls_for_scope): Ignore declarations of
33709         current_function_decl in BLOCK_NONLOCALIZED_VARS.
33710
33711 2017-04-12  Jan Hubicka  <hubicka@ucw.cz>
33712
33713         PR lto/69953
33714         * ipa-visibility.c (non_local_p): Fix typos.
33715         (localize_node): When localizing symbol in same comdat group,
33716         dissolve the group only when we know external symbols are going
33717         to be privatized.
33718         (function_and_variable_visibility): Do not localize DECL_EXTERNAL.
33719
33720 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
33721
33722         PR tree-optimization/79390
33723         * optabs.c (emit_conditional_move): If the preferred op2/op3 operand
33724         order does not result in usable sequence, retry with reversed operand
33725         order.
33726
33727         PR sanitizer/80403
33728         PR sanitizer/80404
33729         PR sanitizer/80405
33730         * fold-const.c (fold_ternary_loc): Use op1 instead of arg1 as argument
33731         to fold_build2_loc.  Convert TREE_OPERAND (tem, 0) to type.  Use
33732         op0 instead of fold_convert_loc (loc, type, arg0).
33733
33734 2017-04-12  Jeff Law  <law@redhat.com>
33735
33736         * genattrtab.c (write_eligible_delay): Verify DELAY_INSN still
33737         has a delay slot in the generated code.
33738
33739         * config/cris/cris.md (cris_preferred_reload_class): Return
33740         GENNONACR_REGS rather than GENERAL_REGS.
33741
33742 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
33743
33744         PR c/80163
33745         * expr.c <CASE_CONVERT>: For EXPAND_INITIALIZER determine SIGN_EXTEND
33746         vs. ZERO_EXTEND based on signedness of treeop0's type rather than
33747         signedness of the result type.
33748
33749 2017-04-12  Richard Biener  <rguenther@suse.de>
33750             Jeff Law  <law@redhat.com>
33751
33752         PR tree-optimization/80359
33753         * tree-ssa-dse.c (maybe_trim_partially_dead_store): Do not
33754         trim stores to TARGET_MEM_REFs.
33755
33756 2017-04-12  Richard Biener  <rguenther@suse.de>
33757
33758         PR tree-optimization/79390
33759         * gimple-ssa-split-paths.c (is_feasible_trace): Restrict
33760         threading case even more.
33761
33762 2017-04-12  Segher Boessenkool  <segher@kernel.crashing.org>
33763
33764         PR target/80382
33765         * config/rs6000/sync.md (atomic_load<mode>, atomic_store<mode): Test
33766         for quad_address_p for TImode, instead of just not indexed_address.
33767
33768 2017-04-12  Richard Biener  <rguenther@suse.de>
33769             Bernd Edlinger  <bernd.edlinger@hotmail.de>
33770
33771         PR middle-end/79671
33772         * alias.c (component_uses_parent_alias_set_from): Handle
33773         TYPE_TYPELESS_STORAGE.
33774         (get_alias_set): Likewise.
33775         * tree-core.h (tree_type_common): Add typeless_storage flag.
33776         * tree.h (TYPE_TYPELESS_STORAGE): New macro.
33777         * stor-layout.c (place_union_field): Set TYPE_TYPELESS_STORAGE
33778         for types containing members with TYPE_TYPELESS_STORAGE.
33779         (place_field): Likewise.
33780         (layout_type): Likewise for ARRAY_TYPE.
33781         * lto-streamer-out.c (hash_tree): Hash TYPE_TYPELESS_STORAGE.
33782         * tree-streamer-in.c (unpack_ts_type_common_value_fields): Stream
33783         TYPE_TYPELESS_STORAGE.
33784         * tree-streamer-out.c (pack_ts_type_common_value_fields): Likewise.
33785
33786 2017-04-12  Jakub Jelinek  <jakub@redhat.com>
33787
33788         PR sanitizer/80349
33789         * fold-const.c (fold_binary_loc) <case BIT_IOR_EXPR>: Convert arg0's
33790         first argument to type.
33791
33792 2017-04-11  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
33793
33794         PR target/80376
33795         PR target/80315
33796         * config/rs6000/rs6000.c (rs6000_expand_unop_builtin): Return
33797         CONST0_RTX (mode) rather than const0_rtx where appropriate.
33798         (rs6000_expand_binop_builtin): Likewise.
33799         (rs6000_expand_ternop_builtin): Likewise; also add missing
33800         vsx_xxpermdi_* variants; also fix typo (arg1 => arg2) for
33801         vshasigma built-ins.
33802         * doc/extend.texi: Document that vec_xxpermdi's third argument
33803         must be a constant.
33804
33805 2017-04-11  Uros Bizjak  <ubizjak@gmail.com>
33806
33807         * config/i386/i386.c (dimode_scalar_chain::compute_convert_gain):
33808         Use shift_const cost parameter when calculating gain of STV shifts.
33809
33810 2017-04-11  Vladimir Makarov  <vmakarov@redhat.com>
33811
33812         PR rtl-optimization/70478
33813         * lra-constraints.c (process_alt_operands): Check memory for
33814         disfavoring memory insn operand.
33815
33816 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
33817
33818         PR middle-end/80100
33819         * simplify-rtx.c (simplify_binary_operation_1) <case IOR>: Perform
33820         left shift in unsigned HOST_WIDE_INT type.
33821
33822         PR rtl-optimization/80385
33823         * simplify-rtx.c (simplify_unary_operation_1): Don't transform
33824         (not (neg X)) into (plus X -1) for complex or non-integral modes.
33825
33826         PR libgomp/80394
33827         * omp-low.c (scan_omp_task): Don't optimize away empty tasks
33828         if they have any depend clauses.
33829
33830 2017-04-11  Martin Liska  <mliska@suse.cz>
33831
33832         PR ipa/80212
33833         * cgraph.c (cgraph_node::dump): Dump calls_comdat_local.
33834         * ipa-split.c (split_function): Create a local comdat symbol
33835         if caller is in a comdat group.
33836
33837 2017-04-11  Martin Liska  <mliska@suse.cz>
33838
33839         PR ipa/80212
33840         * ipa-cp.c (determine_versionability): Handle calls_comdat_local
33841         flags.
33842
33843 2017-04-11  Martin Sebor  <msebor@redhat.com>
33844
33845         PR middle-end/80364
33846         * gimple-ssa-sprintf.c (get_int_range): Remove second argument and
33847         always use the int type.  Use INTEGRAL_TYPE_P() rather than testing
33848         for INTEGER_TYPE.
33849         (directive::set_width, directive::set_precision, format_character):
33850         Adjust.
33851         (parse_directive): Use INTEGRAL_TYPE_P() rather than testing for
33852         INTEGER_TYPE.
33853
33854 2017-04-11  Richard Earnshaw  <rearnsha@arm.com>
33855
33856         PR target/80389
33857         * config/arm/arm.c (arm_configure_build_target): When -mcpu and -arch
33858         conflict, set target->arch_name instead of target->cpu_name.
33859
33860 2017-04-11  Richard Biener  <rguenther@suse.de>
33861
33862         PR tree-optimization/80374
33863         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Use
33864         build_zero_cst, remove fold_convertible_p check again.
33865
33866 2017-04-11  Martin Liska  <mliska@suse.cz>
33867
33868         PR sanitizer/70878
33869         * ubsan.c (instrument_object_size): Do not instrument register
33870         variables.
33871
33872 2017-04-11  Jakub Jelinek  <jakub@redhat.com>
33873
33874         PR target/80381
33875         * config/i386/i386-builtin-types.def
33876         (V16HI_FTYPE_V16HI_INT_V16HI_UHI_COUNT,
33877         V16HI_FTYPE_V16HI_V8HI_V16HI_UHI_COUNT,
33878         V16SI_FTYPE_V16SI_INT_V16SI_UHI_COUNT,
33879         V16SI_FTYPE_V16SI_V4SI_V16SI_UHI_COUNT,
33880         V2DI_FTYPE_V2DI_INT_V2DI_UQI_COUNT,
33881         V2DI_FTYPE_V2DI_V2DI_V2DI_UQI_COUNT,
33882         V32HI_FTYPE_V32HI_INT_V32HI_USI_COUNT,
33883         V32HI_FTYPE_V32HI_V8HI_V32HI_USI_COUNT,
33884         V4DI_FTYPE_V4DI_INT_V4DI_UQI_COUNT,
33885         V4DI_FTYPE_V4DI_V2DI_V4DI_UQI_COUNT,
33886         V4SI_FTYPE_V4SI_INT_V4SI_UQI_COUNT,
33887         V4SI_FTYPE_V4SI_V4SI_V4SI_UQI_COUNT,
33888         V8DI_FTYPE_V8DI_INT_V8DI_UQI_COUNT,
33889         V8DI_FTYPE_V8DI_V2DI_V8DI_UQI_COUNT,
33890         V8HI_FTYPE_V8HI_INT_V8HI_UQI_COUNT,
33891         V8HI_FTYPE_V8HI_V8HI_V8HI_UQI_COUNT,
33892         V8SI_FTYPE_V8SI_INT_V8SI_UQI_COUNT,
33893         V8SI_FTYPE_V8SI_V4SI_V8SI_UQI_COUNT): New function type aliases.
33894         * config/i386/i386-builtin.def (__builtin_ia32_pslld512_mask,
33895         __builtin_ia32_pslldi512_mask, __builtin_ia32_psllq512_mask,
33896         __builtin_ia32_psllqi512_mask, __builtin_ia32_psrad512_mask,
33897         __builtin_ia32_psradi512_mask, __builtin_ia32_psraq512_mask,
33898         __builtin_ia32_psraqi512_mask, __builtin_ia32_psrld512_mask,
33899         __builtin_ia32_psrldi512_mask, __builtin_ia32_psrlq512_mask,
33900         __builtin_ia32_psrlqi512_mask, __builtin_ia32_psllwi128_mask,
33901         __builtin_ia32_pslldi128_mask, __builtin_ia32_psllqi128_mask,
33902         __builtin_ia32_psllw128_mask, __builtin_ia32_pslld128_mask,
33903         __builtin_ia32_psllq128_mask, __builtin_ia32_psllwi256_mask,
33904         __builtin_ia32_psllw256_mask, __builtin_ia32_pslldi256_mask,
33905         __builtin_ia32_pslld256_mask, __builtin_ia32_psllqi256_mask,
33906         __builtin_ia32_psllq256_mask, __builtin_ia32_psradi128_mask,
33907         __builtin_ia32_psrad128_mask, __builtin_ia32_psradi256_mask,
33908         __builtin_ia32_psrad256_mask, __builtin_ia32_psraqi128_mask,
33909         __builtin_ia32_psraq128_mask, __builtin_ia32_psraqi256_mask,
33910         __builtin_ia32_psraq256_mask, __builtin_ia32_psrldi128_mask,
33911         __builtin_ia32_psrld128_mask, __builtin_ia32_psrldi256_mask,
33912         __builtin_ia32_psrld256_mask, __builtin_ia32_psrlqi128_mask,
33913         __builtin_ia32_psrlq128_mask, __builtin_ia32_psrlqi256_mask,
33914         __builtin_ia32_psrlq256_mask, __builtin_ia32_psrawi256_mask,
33915         __builtin_ia32_psraw256_mask, __builtin_ia32_psrawi128_mask,
33916         __builtin_ia32_psraw128_mask, __builtin_ia32_psrlwi256_mask,
33917         __builtin_ia32_psrlw256_mask, __builtin_ia32_psrlwi128_mask,
33918         __builtin_ia32_psrlw128_mask, __builtin_ia32_psllwi512_mask,
33919         __builtin_ia32_psllw512_mask, __builtin_ia32_psrawi512_mask,
33920         __builtin_ia32_psraw512_mask, __builtin_ia32_psrlwi512_mask,
33921         __builtin_ia32_psrlw512_mask): Use _COUNT suffixed function type
33922         aliases.
33923         * config/i386/i386.c (ix86_expand_args_builtin): Rename last_arg_count
33924         flag to second_arg_count, handle 4 argument function type _COUNT
33925         aliases, handle second_arg_count on second argument rather than last.
33926
33927 2017-04-10  Jeff Law  <law@redhat.com>
33928
33929         PR tree-optimization/80374
33930         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Do not try to
33931         record anything if we can not convert integer_zero_node to the
33932         desired type.
33933
33934 2017-04-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
33935
33936         PR target/80108
33937         * config/rs6000/rs6000.c (rs6000_option_override_internal):
33938         Enhance special handling given to the TARGET_P9_MINMAX option in
33939         relation to certain other options.
33940
33941 2017-04-10  Bin Cheng  <bin.cheng@arm.com>
33942
33943         PR tree-optimization/80153
33944         * tree-ssa-loop-ivopts.c (add_iv_candidate_for_use): Check and
33945         remove POINTER_PLUS_EXPR's base part directly, rather than through
33946         aff_tree.
33947
33948 2017-04-10  Richard Biener  <rguenther@suse.de>
33949             Bin Cheng  <bin.cheng@arm.com>
33950
33951         PR tree-optimization/80153
33952         * tree-affine.c (aff_combination_to_tree): Get base pointer from
33953         the first element of pointer type aff_tree.  Build result expr in
33954         aff_tree's type.
33955         (add_elt_to_tree): Convert to type unconditionally.  Remove other
33956         fold_convert calls.
33957         * tree-ssa-loop-ivopts.c (alloc_iv): Pass in consistent types.
33958         (rewrite_use_nonlinear_expr): Check invariant using iv information.
33959
33960 2017-04-10  Richard Biener  <rguenther@suse.de>
33961
33962         * tree-ssa-structalias.c (find_func_aliases): Properly handle
33963         asm inputs.
33964
33965 2017-04-10  Vladimir Makarov  <vmakarov@redhat.com>
33966
33967         PR rtl-optimization/70478
33968         * lra-constraints.c (curr_small_class_check): New.
33969         (update_and_check_small_class_inputs): New.
33970         (process_alt_operands): Update curr_small_class_check.  Disfavor
33971         alternative insn memory operands.  Check available regs for small
33972         class operands.
33973
33974 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
33975
33976         PR target/80057
33977         * config/mips/mips.opt (-mvirt): Update description.
33978         * doc/invoke.texi (-mvirt): Likewise.
33979
33980 2017-04-10  Richard Biener  <rguenther@suse.de>
33981
33982         PR middle-end/80362
33983         * fold-const.c (fold_binary_loc): Look at unstripped ops when
33984         looking for NEGATE_EXPR in -A / -B to A / B folding.
33985
33986 2017-04-10  Martin Liska  <mliska@suse.cz>
33987
33988         PR gcov-profile/80224
33989         * gcov.c (print_usage): Fix usage string.
33990         (get_gcov_intermediate_filename): Remove.
33991         (output_gcov_file): Use both for normal and intermediate format.
33992         (generate_results): Do not initialize special file for
33993         intermediate format.
33994
33995 2017-04-10  Richard Biener  <rguenther@suse.de>
33996
33997         PR tree-optimization/80304
33998         * tree-ssa-loop-im.c (ref_indep_loop_p_1): Also recurse
33999         for safelen.
34000
34001 2017-04-10  Nathan Sidwell  <nathan@acm.org>
34002
34003         PR target/79905
34004         * config/rs6000/rs6000.c (rs6000_vector_type): New.
34005         (rs6000_init_builtins): Use it.
34006
34007 2016-04-10  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
34008
34009         * config/arm/arm.md (<mrc>): Add mode to SET source.
34010         (<mrrc>): Likewise.
34011
34012 2017-04-10  Richard Biener  <rguenther@suse.de>
34013
34014         PR middle-end/80344
34015         * gimplify.c (is_gimple_mem_rhs_or_call): Allow CLOBBERs.
34016
34017 2017-04-10  Jakub Jelinek  <jakub@redhat.com>
34018
34019         PR target/80324
34020         * config/i386/avx512fintrin.h (_mm512_reduce_add_epi32,
34021         _mm512_reduce_mul_epi32, _mm512_reduce_and_epi32,
34022         _mm512_reduce_or_epi32, _mm512_mask_reduce_add_epi32,
34023         _mm512_mask_reduce_mul_epi32, _mm512_mask_reduce_and_epi32,
34024         _mm512_mask_reduce_or_epi32, _mm512_reduce_min_epi32,
34025         _mm512_reduce_max_epi32, _mm512_reduce_min_epu32,
34026         _mm512_reduce_max_epu32, _mm512_mask_reduce_min_epi32,
34027         _mm512_mask_reduce_max_epi32, _mm512_mask_reduce_min_epu32,
34028         _mm512_mask_reduce_max_epu32, _mm512_reduce_add_ps,
34029         _mm512_reduce_mul_ps, _mm512_mask_reduce_add_ps,
34030         _mm512_mask_reduce_mul_ps, _mm512_reduce_min_ps, _mm512_reduce_max_ps,
34031         _mm512_mask_reduce_min_ps, _mm512_mask_reduce_max_ps,
34032         _mm512_reduce_add_epi64, _mm512_reduce_mul_epi64,
34033         _mm512_reduce_and_epi64, _mm512_reduce_or_epi64,
34034         _mm512_mask_reduce_add_epi64, _mm512_mask_reduce_mul_epi64,
34035         _mm512_mask_reduce_and_epi64, _mm512_mask_reduce_or_epi64,
34036         _mm512_reduce_min_epi64, _mm512_reduce_max_epi64,
34037         _mm512_mask_reduce_min_epi64, _mm512_mask_reduce_max_epi64,
34038         _mm512_reduce_min_epu64, _mm512_reduce_max_epu64,
34039         _mm512_mask_reduce_min_epu64, _mm512_mask_reduce_max_epu64,
34040         _mm512_reduce_add_pd, _mm512_reduce_mul_pd, _mm512_mask_reduce_add_pd,
34041         _mm512_mask_reduce_mul_pd, _mm512_reduce_min_pd, _mm512_reduce_max_pd,
34042         _mm512_mask_reduce_min_pd, _mm512_mask_reduce_max_pd): New intrinsics.
34043
34044 2017-04-08  Vladimir Makarov  <vmakarov@redhat.com>
34045
34046         PR rtl-optimization/70478
34047         * lra-constraints.c: Reverse the last patch.
34048
34049 2017-04-08  Andreas Tobler  <andreast@gcc.gnu.org>
34050
34051         * config/aarch64/aarch64-freebsd.h: Define MCOUNT_NAME.
34052         Add comment for WCHAR_T.
34053
34054 2017-04-08  Martin Liska  <mliska@suse.cz>
34055
34056         Revert:
34057         2017-04-07  Martin Liska  <mliska@suse.cz>
34058
34059         PR ipa/80212
34060         * ipa-split.c (split_function): Add function part to a same comdat
34061         group.
34062
34063 2017-04-08  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
34064
34065         PR target/80358
34066         * config/rs6000/rs6000.c (expand_block_compare): Fix boundary check.
34067
34068 2017-04-07  Pat Haugen  <pthaugen@us.ibm.com>
34069
34070         * rs6000/rs6000.c (vec_load_pendulum): Rename...
34071         (vec_pairing): ...to this.
34072         (power9_sched_reorder2): Rewrite code for pairing vector/vecload insns.
34073         (rs6000_sched_init): Adjust for name change.
34074         (struct rs6000_sched_context): Likewise.
34075         (rs6000_init_sched_context): Likewise.
34076         (rs6000_set_sched_context): Likewise.
34077
34078 2017-04-07  Jakub Jelinek  <jakub@redhat.com>
34079
34080         PR target/80322
34081         PR target/80323
34082         PR target/80325
34083         PR target/80326
34084         * config/i386/avxintrin.h (_mm256_cvtsd_f64, _mm256_cvtss_f32): New
34085         intrinsics.
34086         * config/i386/avx512fintrin.h (_mm512_int2mask, _mm512_mask2int,
34087         _mm512_abs_ps, _mm512_mask_abs_ps, _mm512_abs_pd, _mm512_mask_abs_pd,
34088         _mm512_cvtsd_f64, _mm512_cvtss_f32): Likewise.
34089
34090 2017-04-07  Andreas Tobler  <andreast@gcc.gnu.org>
34091
34092         * config/aarch64/aarch64-freebsd.h: Define WCHAR_TYPE.
34093
34094 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
34095
34096         PR rtl-optimization/70703
34097         * ira-color.c (update_conflict_hard_regno_costs): Use
34098         int64_t instead of HOST_WIDE_INT.
34099
34100 2017-04-07  Vladimir Makarov  <vmakarov@redhat.com>
34101
34102         PR rtl-optimization/70478
34103         * lra-constraints.c (process_alt_operands): Disfavor alternative
34104         insn memory operands.
34105
34106 2017-04-07  Jeff Law  <law@redhat.com>
34107
34108         * config/iq2000/iq2000.c (final_prescan_insn): Do not separate a
34109         CALL and NOTE_INSN_CALL_ARG_LOCATION.
34110
34111 2017-04-07  Martin Liska  <mliska@suse.cz>
34112
34113         PR target/79889
34114         * config/aarch64/aarch64.c (aarch64_process_target_attr):
34115         Show error message instead of an ICE.
34116
34117 2017-04-07  Martin Liska  <mliska@suse.cz>
34118
34119         PR ipa/80212
34120         * ipa-split.c (split_function): Add function part to a same comdat
34121         group.
34122
34123 2017-04-07  Richard Biener  <rguenther@suse.de>
34124
34125         PR middle-end/80341
34126         * tree.c (get_unwidened): Also handle ! for_type case for
34127         INTEGER_CSTs.
34128         * convert.c (do_narrow): Split out from ...
34129         (convert_to_integer_1): ... here.  Do not pass final truncation
34130         type to get_unwidened for TRUNC_DIV_EXPR.
34131
34132 2017-04-07  Richard Biener  <rguenther@suse.de>
34133
34134         * tree-affine.c (wide_int_ext_for_comb): Take type rather
34135         than aff_tree.
34136         (aff_combination_const): Adjust.
34137         (aff_combination_scale): Likewise.
34138         (aff_combination_add_elt): Likewise.
34139         (aff_combination_add_cst): Likewise.
34140         (aff_combination_convert): Likewise.
34141         (add_elt_to_tree): Likewise.  Remove unused argument.
34142         (aff_combination_to_tree): Adjust calls to add_elt_to_tree.
34143
34144 2017-04-07  Sebastian Huber  <sebastian.huber@embedded-brains.de>
34145
34146         * config/arm/arm.h (ARM_DEFAULT_SHORT_ENUMS): Provide default
34147         definition.
34148         * config/arm/arm.c (arm_default_short_enums): Use
34149         ARM_DEFAULT_SHORT_ENUMS.
34150         * config/arm/rtems.h (ARM_DEFAULT_SHORT_ENUMS): Define.
34151
34152 2017-04-06  Jakub Jelinek  <jakub@redhat.com>
34153
34154         PR debug/80234
34155         * dwarf2out.c (gen_member_die): Handle C++17 inline static data
34156         members with redundant out-of-class redeclaration.
34157
34158 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
34159
34160         PR target/80286
34161         * config/i386/sse.md (*vec_extractv4si_0_zext_sse4): New pattern.
34162         * config/i386/i386.md (*zero_extendsidi2):
34163         Add (?*x,*x) and (?*v,*v) alternatives.
34164
34165 2017-04-06  Uros Bizjak  <ubizjak@gmail.com>
34166
34167         PR target/79733
34168         * config/i386/i386.c (ix86_expand_builtin)
34169         <case IX86_BUILTIN_K{,OR}TEST{C,Z}{8,16,32,64}>: Determine insn operand
34170         mode from insn data. Convert operands to insn operand mode.
34171         Copy operands that don't satisfy insn predicate to a register.
34172
34173 2017-04-06  Sam Thursfield  <sam.thursfield@codethink.co.uk>
34174
34175         * config/rs6000/x-aix: Increase memory limit for genautomata on AIX.
34176         Update comments.
34177
34178 2017-04-06  Richard Biener  <rguenther@suse.de>
34179
34180         PR tree-optimization/80334
34181         * tree-ssa-loop-ivopts.c (rewrite_use_address): Properly
34182         preserve alignment of accesses.
34183
34184 2017-04-06  Richard Biener  <rguenther@suse.de>
34185
34186         PR tree-optimization/80262
34187         * tree-sra.c (build_ref_for_offset): Preserve address-space
34188         information.
34189         * tree-ssa-sccvn.c (vn_reference_maybe_forwprop_address):
34190         Drop useless address-space information on MEM_REF offsets.
34191
34192 2017-04-05  Andreas Schwab  <schwab@linux-m68k.org>
34193
34194         * builtins.def (BUILT_IN_UPDATE_SETJMP_BUF): Fix type.
34195
34196 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
34197
34198         PR rtl-optimization/70703
34199         * ira-color.c (update_conflict_hard_regno_costs): Use
34200         HOST_WIDE_INT instead of long.
34201
34202 2017-04-05  Uros Bizjak  <ubizjak@gmail.com>
34203
34204         PR target/80298
34205         * config/i386/mmintrin.h: Add -msse target option when __SSE__ is
34206         not defined for x86_64 target.  Add -mmmx target option when __SSE2__
34207         is not defined.
34208         * config/i386/mm3dnow.h: Add -msse target when __SSE__ is not defined
34209         for x86_64 target.  Handle -m3dnowa option.
34210
34211 2017-04-05  Vladimir Makarov  <vmakarov@redhat.com>
34212
34213         PR rtl-optimization/70703
34214         * ira-color.c (update_costs_from_allocno): Use the smallest mode.
34215         (update_conflict_hard_regno_costs): Use long instead of unsigned
34216         arithmetic for cost calculation.
34217
34218 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
34219             Bernd Edlinger  <bernd.edlinger@hotmail.de>
34220
34221         PR sanitizer/80308
34222         * asan.c (asan_store_shadow_bytes): Fix location of last_chunk_value
34223         for big endian.
34224
34225 2017-04-05  Eric Botcazou  <ebotcazou@adacore.com>
34226
34227         PR target/78002
34228         * config/aarch64/aarch64.c (aarch64_emit_probe_stack_range): Replace
34229         ptr_mode with Pmode throughout.
34230         * config/aarch64/aarch64.md (probe_stack_range_<PTR:mode): Rename
34231         into probe_stack_range and use DImode.
34232
34233 2017-04-05  Dominik Vogt  <vogt@linux.vnet.ibm.com>
34234
34235         PR target/79890
34236         * config/s390/s390.c (s390_register_info_gprtofpr): Return if
34237         call_eh_return is true.
34238
34239 2017-04-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34240
34241         * config/s390/s390-c.c (s390_resolve_overloaded_builtin):
34242         Initialize last_match_fntype_index.
34243
34244 2017-04-05  Jakub Jelinek  <jakub@redhat.com>
34245
34246         PR target/80310
34247         * tree-nvr.c: Include internal-fn.h.
34248         (pass_return_slot::execute): Ignore internal calls without
34249         direct optab.
34250
34251 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
34252             Richard Biener  <rguenther@suse.de>
34253
34254         PR c++/80297
34255         * genmatch.c (capture::gen_transform): For GENERIC unshare_expr
34256         captures used multiple times, except for the last use.
34257         * generic-match-head.c: Include gimplify.h.
34258
34259 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
34260
34261         PR tree-optimization/79390
34262         * target.h (struct noce_if_info): Declare.
34263         * targhooks.h (default_noce_conversion_profitable_p): Declare.
34264         * target.def (noce_conversion_profitable_p): New target hook.
34265         * ifcvt.h (struct noce_if_info): New type, moved from ...
34266         * ifcvt.c (struct noce_if_info): ... here.
34267         (noce_conversion_profitable_p): Renamed to ...
34268         (default_noce_conversion_profitable_p): ... this.  No longer
34269         static nor inline.
34270         (noce_try_store_flag_constants, noce_try_addcc,
34271         noce_try_store_flag_mask, noce_try_cmove, noce_try_cmove_arith,
34272         noce_convert_multiple_sets): Use targetm.noce_conversion_profitable_p
34273         instead of noce_conversion_profitable_p.
34274         * config/i386/i386.c: Include ifcvt.h.
34275         (ix86_option_override_internal): Don't override
34276         PARAM_MAX_RTL_IF_CONVERSION_INSNS default.
34277         (ix86_noce_conversion_profitable_p): New function.
34278         (TARGET_NOCE_CONVERSION_PROFITABLE_P): Redefine.
34279         * config/i386/x86-tune.def (X86_TUNE_ONE_IF_CONV_INSN): Adjust comment.
34280         * doc/tm.texi.in (TARGET_NOCE_CONVERSION_PROFITABLE_P): Add.
34281         * doc/tm.texi: Regenerated.
34282
34283 2017-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34284
34285         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Grammar
34286         correction.
34287
34288 2017-04-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>
34289
34290         PR target/80307
34291         * config/arm/arm.c (thumb1_rtx_costs): Give a cost of 32
34292         instructions for small multiply cores.
34293
34294 2017-04-04  Jeff Law  <law@redhat.com>
34295
34296         * config/mips/mips.c (mips_multi_add): Zero initialize the newly
34297         added member.
34298         (mips_expand_vec_perm_const): Initialize elements in orig_perm
34299         that are not set by the loop over the elements.
34300
34301 2017-04-04  Jakub Jelinek  <jakub@redhat.com>
34302
34303         PR target/80286
34304         * config/i386/i386.c (ix86_expand_args_builtin): If op has scalar
34305         int mode, convert_modes it to mode as unsigned, otherwise use
34306         lowpart_subreg to mode rather than SImode.
34307         * config/i386/sse.md (<mask_codefor>ashr<mode>3<mask_name>,
34308         ashr<mode>3, ashr<mode>3<mask_name>, <shift_insn><mode>3<mask_name>):
34309         Use DImode instead of SImode for the shift count operand.
34310         * config/i386/mmx.md (mmx_ashr<mode>3, mmx_<shift_insn><mode>3):
34311         Likewise.
34312
34313 2017-04-04  Richard Biener  <rguenther@suse.de>
34314
34315         PR middle-end/80281
34316         * match.pd (A + (-B) -> A - B): Make sure to preserve unsigned
34317         arithmetic done for the negate or the plus.  Simplify.
34318         (A - (-B) -> A + B): Likewise.
34319         * fold-const.c (split_tree): Make sure to not negate pointers.
34320
34321 2017-04-04  Segher Boessenkool  <segher@kernel.crashing.org>
34322
34323         PR rtl-optimization/60818
34324         * simplify-rtx.c (simplify_binary_operation_1): Do not replace
34325         a compare of comparisons with the thing compared if this results
34326         in a different machine mode.
34327
34328 2017-04-03  Jonathan Wakely  <jwakely@redhat.com>
34329
34330         * alias.c (base_alias_check): Fix typo in comment.
34331         * cgraph.h (class ipa_polymorphic_call_context): Likewise.
34332         * cgraphunit.c (symbol_table::compile): Likewise.
34333         * collect2.c (maybe_run_lto_and_relink): Likewise.
34334         * config/arm/arm.c (arm_thumb1_mi_thunk): Likewise.
34335         * config/avr/avr-arch.h (avr_arch_info_t): Likewise.
34336         * config/avr/avr.c (avr_map_op_t): Likewise.
34337         * config/cr16/cr16.h (DATA_ALIGNMENT): Likewise.
34338         * config/epiphany/epiphany.c (TARGET_ARG_PARTIAL_BYTES): Likewise.
34339         * config/epiphany/epiphany.md (movcc): Likewise.
34340         * config/i386/i386.c (legitimize_pe_coff_extern_decl): Likewise.
34341         * config/m68k/m68k.c (struct _sched_ib, m68k_sched_variable_issue):
34342         Likewise.
34343         * config/mips/mips.c (mips_save_restore_reg): Likewise.
34344         * config/rx/rx.c (rx_is_restricted_memory_address): Likewise.
34345         * config/s390/s390.c (Z10_EARLYLOAD_DISTANCE): Likewise.
34346         * config/sh/sh.c (sh_rtx_costs): Likewise.
34347         * fold-const.c (fold_truth_andor): Likewise.
34348         * genautomata.c (collapse_flag): Likewise.
34349         * gengtype.h (struct type::u::s): Likewise.
34350         * gensupport.c (has_subst_attribute, add_mnemonic_string): Likewise.
34351         * input.c (FORMAT_AMOUNT): Likewise.
34352         * ipa-cp.c (class ipcp_lattice, agg_replacements_to_vector)
34353         (known_aggs_to_agg_replacement_list): Likewise.
34354         * ipa-inline-analysis.c: Likewise.
34355         * ipa-inline.h (estimate_edge_time, estimate_edge_hints): Likewise.
34356         * ipa-polymorphic-call.c
34357         (ipa_polymorphic_call_context::restrict_to_inner_class): Likewise.
34358         * loop-unroll.c (analyze_insn_to_expand_var): Likewise.
34359         * lra.c (lra_optional_reload_pseudos, lra_subreg_reload_pseudos):
34360         Likewise.
34361         * modulo-sched.c (apply_reg_moves): Likewise.
34362         * omp-expand.c (build_omp_regions_1): Likewise.
34363         * trans-mem.c (struct tm_wrapper_hasher): Likewise.
34364         * tree-ssa-loop-ivopts.c (may_eliminate_iv): Likewise.
34365         * tree-ssa-loop-niter.c (maybe_lower_iteration_bound): Likewise.
34366         * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Likewise.
34367         * value-prof.c: Likewise.
34368         * var-tracking.c (val_reset): Likewise.
34369
34370 2017-04-03  Richard Biener  <rguenther@suse.de>
34371
34372         PR tree-optimization/80275
34373         * fold-const.c (split_address_to_core_and_offset): Handle
34374         POINTER_PLUS_EXPR.
34375
34376 2017-04-03  Eric Botcazou  <ebotcazou@adacore.com>
34377
34378         * tree-nested.c (get_descriptor_type): Make sure that the alignment of
34379         descriptors is at least equal to that of functions.
34380
34381 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
34382
34383         * config/i386/sse.md (movdi_to_sse): Add missing DONE.
34384
34385 2017-04-02  Uros Bizjak  <ubizjak@gmail.com>
34386
34387         PR target/80250
34388         * config/i386/sse.md (mov<IMOD4:mode>): Remove insn pattern.
34389         (mov<IMOD4:mode>): New expander.
34390         (*mov<IMOD4:mode>_internal): New insn and split pattern.
34391
34392 2017-03-31  Segher Boessenkool  <segher@kernel.crashing.org>
34393
34394         PR rtl-optimization/79405
34395         * fwprop.c (propagations_left): New variable.
34396         (forward_propagate_into): Decrement it.
34397         (fwprop_init): Initialize it.
34398         (fw_prop): If the variable has reached zero, stop propagating.
34399         (fwprop_addr): Ditto.
34400
34401 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
34402
34403         PR debug/79255
34404         * dwarf2out.c (decls_for_scope): If BLOCK_NONLOCALIZED_VAR is
34405         a FUNCTION_DECL, pass it as decl instead of origin to
34406         process_scope_var.
34407
34408 2017-03-31  Alexander Monakov  <amonakov@ispras.ru>
34409
34410         * config/nvptx/nvptx.c (nvptx_output_softstack_switch): Correct format
34411         string.
34412
34413 2017-03-31  Pat Haugen  <pthaugen@us.ibm.com>
34414
34415         PR target/80107
34416         * config/rs6000/rs6000.md (extendhi<mode>2): Add test for
34417         TARGET_VSX_SMALL_INTEGER.
34418
34419 2017-03-31  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34420
34421         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Add
34422         reference to the OpenPOWER 64-Bit ELF V2 ABI Specification.
34423
34424 2017-03-31  Matthew Fortune  <matthew.fortune@imgtec.com>
34425
34426         * config/mips/mips-msa.md (msa_vec_extract_<msafmt_f>): Update
34427         extraction from odd-numbered MSA register.
34428
34429 2017-03-31  Jakub Jelinek  <jakub@redhat.com>
34430
34431         PR middle-end/80173
34432         * expmed.c (store_bit_field_1): Don't attempt to create
34433         a word subreg out of hard registers wider than word if they
34434         have HARD_REGNO_NREGS of 1 for their mode.
34435
34436         PR middle-end/80163
34437         * varasm.c (initializer_constant_valid_p_1): Disallow sign-extending
34438         conversions to integer types wider than word and pointer.
34439
34440         PR debug/80025
34441         * cselib.h (rtx_equal_for_cselib_1): Add depth argument.
34442         (rtx_equal_for_cselib_p): Pass 0 to it.
34443         * cselib.c (cselib_hasher::equal): Likewise.
34444         (rtx_equal_for_cselib_1): Add depth argument.  If depth
34445         is 128, don't look up VALUE locs and punt.  Increment
34446         depth in recursive calls when walking VALUE locs.
34447
34448 2017-03-31  Bernd Edlinger  <bernd.edlinger@hotmail.de>
34449
34450         * gcov.c (md5sum_to_hex): Fix output of MD5 hex bytes.
34451         (make_gcov_file_name): Use the canonical path name for generating
34452         the MD5 value.
34453         (read_line): Fix handling of files with ascii null bytes.
34454
34455 2017-03-30  Matthew Fortune  <matthew.fortune@imgtec.com>
34456
34457         * config/mips/mips.c (mips_expand_vector_init): Create a const_vector
34458         to initialise a vector register instead
34459         of using a const_int.
34460
34461 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
34462
34463         PR translation/80189
34464         * gimplify.c (omp_default_clause): Use %qs instead of %s in
34465         diagnostic messages.
34466
34467 2017-03-30  Peter Bergner  <bergner@vnet.ibm.com>
34468
34469         PR target/80246
34470         * config/rs6000/dfp.md (dfp_dxex_<mode>): Update mode of operand 0.
34471         (dfp_diex_<mode>): Update mode of operand 1.
34472         * doc/extend.texi (dxex, dxexq): Document change to return type.
34473         (diex, diexq): Document change to argument type.
34474
34475 2017-03-30  Martin Jambor  <mjambor@suse.cz>
34476
34477         PR ipa/77333
34478         * cgraph.h (cgraph_build_function_type_skip_args): Declare.
34479         * cgraph.c (redirect_call_stmt_to_callee): Set gimple fntype so that
34480         it reflects the signature changes performed at the callee side.
34481         * cgraphclones.c (build_function_type_skip_args): Make public, renamed
34482         to cgraph_build_function_type_skip_args.
34483         (build_function_decl_skip_args): Adjust call to the above function.
34484
34485 2017-03-30  Jakub Jelinek  <jakub@redhat.com>
34486
34487         PR target/80206
34488         * config/i386/sse.md
34489         (<extract_type>_vextract<shuffletype><extract_suf>_mask): Use
34490         register as dest whenever it is a MEM not rtx_equal_p to the
34491         corresponding dup operand, and when forcing into reg move the
34492         reg into the memory afterwards.
34493         (<extract_type_2>_vextract<shuffletype><extract_suf_2>_mask):
34494         Likewise.  Use <ssehalfvecmode> instead of <ssequartermode>
34495         for the force_reg mode.
34496         (avx512vl_vextractf128<mode>): Use register as dest either
34497         always when a MEM, or when it is a MEM not rtx_equal_p to the
34498         corresponding dup operand, or even not when it is a CONST_VECTOR
34499         depending on the mode and lo vs. hi.
34500         (avx512dq_vextract<shuffletype>64x2_1_maskm): Remove extraneous
34501         parens.
34502         (avx512f_vextract<shuffletype>32x4_1_maskm): Likewise.
34503         (<mask_codefor>avx512dq_vextract<shuffletype>64x2_1<mask_name>):
34504         Likewise.  Require that operands[2] is even.
34505         (<mask_codefor>avx512f_vextract<shuffletype>32x4_1<mask_name>):
34506         Remove extraneous parens.  Require that operands[2] is a multiple
34507         of 4.
34508         (vec_extract_lo_<mode><mask_name>): Don't bother testing if
34509         operands[0] is a MEM if <mask_applied>, the predicates/constraints
34510         disallow memory then.
34511
34512 2017-03-30  Richard Biener  <rguenther@suse.de>
34513
34514         PR tree-optimization/77498
34515         * tree-ssa-pre.c (phi_translate_1): Do not allow simplifications
34516         to non-constants over backedges.
34517
34518 2017-03-29  Segher Boessenkool  <segher@kernel.crashing.org>
34519
34520         PR rtl-optimization/80233
34521         * combine.c (combine_instructions): Only take NONDEBUG_INSN_P insns
34522         as last_combined_insn.  Do not test for BARRIER_P separately.
34523
34524 2017-03-29  Andreas Schwab  <schwab@suse.de>
34525
34526         PR ada/80146
34527         * calls.c (prepare_call_address): Convert funexp to Pmode before
34528         copying to temp reg.
34529
34530 2017-03-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
34531
34532         PR tree-optimization/80158
34533         * gimple-ssa-strength-reduction.c (replace_mult_candidate):
34534         Handle possible future case of more than one alternate
34535         interpretation.
34536         (replace_rhs_if_not_dup): Likewise.
34537         (replace_one_candidate): Likewise.
34538
34539 2017-03-28  Vladimir Makarov  <vmakarov@redhat.com>
34540
34541         PR rtl-optimization/80193
34542         * ira.c (ira): Do not check allocation for LRA.
34543
34544 2017-03-28  Alexander Monakov  <amonakov@ispras.ru>
34545
34546         * config/nvptx/nvptx-protos.h (nvptx_output_simt_enter): Declare.
34547         (nvptx_output_simt_exit): Declare.
34548         * config/nvptx/nvptx.c (nvptx_init_unisimt_predicate): Use
34549         cfun->machine->unisimt_location.  Handle NULL unisimt_predicate.
34550         (init_softstack_frame): Move initialization of crtl->is_leaf to...
34551         (nvptx_declare_function_name): ...here.  Emit declaration of local
34552         memory space buffer for omp_simt_enter insn.
34553         (nvptx_output_unisimt_switch): New.
34554         (nvptx_output_softstack_switch): New.
34555         (nvptx_output_simt_enter): New.
34556         (nvptx_output_simt_exit): New.
34557         * config/nvptx/nvptx.h (struct machine_function): New fields
34558         has_simtreg, unisimt_location, simt_stack_size, simt_stack_align.
34559         * config/nvptx/nvptx.md (UNSPECV_SIMT_ENTER): New unspec.
34560         (UNSPECV_SIMT_EXIT): Ditto.
34561         (omp_simt_enter_insn): New insn.
34562         (omp_simt_enter): New expansion.
34563         (omp_simt_exit): New insn.
34564         * config/nvptx/nvptx.opt (msoft-stack-reserve-local): New option.
34565
34566         * internal-fn.c (expand_GOMP_SIMT_ENTER): New.
34567         (expand_GOMP_SIMT_ENTER_ALLOC): New.
34568         (expand_GOMP_SIMT_EXIT): New.
34569         * internal-fn.def (GOMP_SIMT_ENTER): New internal function.
34570         (GOMP_SIMT_ENTER_ALLOC): Ditto.
34571         (GOMP_SIMT_EXIT): Ditto.
34572         * target-insns.def (omp_simt_enter): New insn.
34573         (omp_simt_exit): Ditto.
34574         * omp-low.c (struct omplow_simd_context): New fields simt_eargs,
34575         simt_dlist.
34576         (lower_rec_simd_input_clauses): Implement SIMT privatization.
34577         (lower_rec_input_clauses): Likewise.
34578         (lower_lastprivate_clauses): Handle SIMT privatization.
34579
34580         * omp-offload.c: Include langhooks.h, tree-nested.h, stor-layout.h.
34581         (ompdevlow_adjust_simt_enter): New.
34582         (find_simtpriv_var_op): New.
34583         (execute_omp_device_lower): Handle IFN_GOMP_SIMT_ENTER,
34584         IFN_GOMP_SIMT_ENTER_ALLOC, IFN_GOMP_SIMT_EXIT.
34585
34586         * tree-inline.h (struct copy_body_data): New field dst_simt_vars.
34587         * tree-inline.c (expand_call_inline): Handle SIMT privatization.
34588         (copy_decl_for_dup_finish): Ditto.
34589
34590         * tree-ssa.c (execute_update_addresses_taken): Handle GOMP_SIMT_ENTER.
34591
34592 2017-03-28  Uros Bizjak  <ubizjak@gmail.com>
34593
34594         PR target/53383
34595         * config/i386/i386.c (ix86_option_override_internal): Always
34596         allow -mpreferred-stack-boundary=3 for 64-bit targets.
34597
34598 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
34599
34600         * tree-vect-loop.c (optimize_mask_stores): Add bb to the right loop.
34601
34602 2017-03-28  Bin Cheng  <bin.cheng@arm.com>
34603
34604         * tree-vect-loop-manip.c (slpeel_add_loop_guard): New param and
34605         mark new edge's irreducible flag accordign to it.
34606         (vect_do_peeling): Check loop preheader edge's irreducible flag
34607         and pass it to function slpeel_add_loop_guard.
34608
34609 2017-03-28  Richard Sandiford  <richard.sandiford@arm.com>
34610
34611         PR tree-optimization/80218
34612         * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
34613         Update block frequencies and counts.
34614
34615 2017-03-28  Richard Biener  <rguenther@suse.de>
34616
34617         PR tree-optimization/78644
34618         * tree-ssa-ccp.c (evaluate_stmt): When we may not use the value
34619         of a simplification result we may not use it at all.
34620
34621 2017-03-28  Richard Biener  <rguenther@suse.de>
34622
34623         PR ipa/80205
34624         * tree-inline.c (copy_phis_for_bb): Do not create PHI node
34625         without arguments, generate default definition of a SSA name.
34626
34627 2017-03-28  Richard Biener  <rguenther@suse.de>
34628
34629         PR middle-end/80222
34630         * gimple-fold.c (gimple_fold_indirect_ref): Do not touch
34631         TYPE_REF_CAN_ALIAS_ALL references.
34632         * fold-const.c (fold_indirect_ref_1): Likewise.
34633
34634 2017-03-28  Martin Liska  <mliska@suse.cz>
34635
34636         PR ipa/80104
34637         * cgraphunit.c (cgraph_node::expand_thunk): Mark argument of a
34638         thunk call as DECL_GIMPLE_REG_P when vector or complex type.
34639
34640 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
34641             Thomas Petazzoni  <thomas.petazzoni@free-electrons.com>
34642
34643         * config/arc/arc.h (CPP_SPEC): Add subtarget_cpp_spec.
34644         (EXTRA_SPECS): Define.
34645         (SUBTARGET_EXTRA_SPECS): Likewise.
34646         (SUBTARGET_CPP_SPEC): Likewise.
34647         * config/arc/elf.h (EXTRA_SPECS): Renamed to
34648         SUBTARGET_EXTRA_SPECS.
34649         * config/arc/linux.h (SUBTARGET_CPP_SPEC): Define.
34650
34651 2017-03-28  Claudiu Zissulescu  <claziss@synopsys.com>
34652
34653         * config/arc/simdext.md (vst64_insn): Update pattern.
34654         (vld32wh_insn): Likewise.
34655         (vld32wl_insn): Likewise.
34656         (vld64_insn): Likewise.
34657         (vld32_insn): Likewise.
34658
34659 2017-03-28  Marek Polacek  <polacek@redhat.com>
34660
34661         PR sanitizer/80067
34662         * fold-const.c (fold_comparison): Use protected_set_expr_location
34663         instead of SET_EXPR_LOCATION.
34664
34665 2017-03-28  Markus Trippelsdorf  <markus@trippelsdorf.de>
34666
34667         * tree.c (add_expr): Avoid name lookup warning.
34668
34669 2017-03-27  Jeff Law  <law@redhat.com>
34670
34671         PR tree-optimization/80216
34672         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): Fix typo in
34673         function name.  Limit recursion depth.
34674         (record_temporary_equivalences): Corresponding changes.
34675
34676 2017-03-27  Jonathan Wakely  <jwakely@redhat.com>
34677
34678         * doc/invoke.texi (-Wno-narrowing): Reorder so default behavior is
34679         covered first.
34680
34681 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
34682
34683         PR target/80102
34684         * reg-notes.def (REG_CFA_NOTE): Define.  Use it for CFA related
34685         notes.
34686         * cfgcleanup.c (reg_note_cfa_p): New array.
34687         (insns_have_identical_cfa_notes): New function.
34688         (old_insns_match_p): Don't cross-jump in between /f
34689         and non-/f instructions.  If both i1 and i2 are frame related,
34690         verify all CFA notes, their order and content.
34691
34692 2017-03-27  Michael Meissner  <meissner@linux.vnet.ibm.com>
34693
34694         PR target/78543
34695         * config/rs6000/rs6000.md (bswaphi2_extenddi): Combine bswap
34696         HImode and SImode with zero extend to DImode to one insn.
34697         (bswap<mode>2_extenddi): Likewise.
34698         (bswapsi2_extenddi): Likewise.
34699         (bswaphi2_extendsi): Likewise.
34700         (bswaphi2): Combine bswap HImode and SImode into one insn.
34701         Separate memory insns from swapping register.
34702         (bswapsi2): Likewise.
34703         (bswap<mode>2): Likewise.
34704         (bswaphi2_internal): Delete, no longer used.
34705         (bswapsi2_internal): Likewise.
34706         (bswap<mode>2_load): Split bswap HImode/SImode into separate load,
34707         store, and gpr<-gpr swap insns.
34708         (bswap<mode>2_store): Likewise.
34709         (bswaphi2_reg): Register only splitter, combine with the splitter.
34710         (bswaphi2 splitter): Likewise.
34711         (bswapsi2_reg): Likewise.
34712         (bswapsi2 splitter): Likewise.
34713         (bswapdi2): If we have the LDBRX and STDBRX instructions, split
34714         the insns into load, store, and register/register insns.
34715         (bswapdi2_ldbrx): Likewise.
34716         (bswapdi2_load): Likewise.
34717         (bswapdi2_store): Likewise.
34718         (bswapdi2_reg): Likewise.
34719
34720 2017-03-27  Gunther Nikl  <gnikl@users.sourceforge.net>
34721
34722         * system.h (HAVE_DESIGNATED_INITIALIZERS): Fix non C++ case.
34723         (HAVE_DESIGNATED_UNION_INITIALIZERS): Likewise.
34724
34725 2017-03-27  Kelvin Nilsen  <kelvin@gcc.gnu.org>
34726
34727         PR target/80103
34728         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Edit and
34729         add comments.
34730         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
34731         special handling for target option conflicts between dform
34732         options (-mpower9-dform, -mpower9-dform-vector,
34733         -mpower9-dform-scalar) and -mno-direct-move.
34734
34735 2017-03-27  Richard Biener  <rguenther@suse.de>
34736
34737         PR tree-optimization/80181
34738         * tree-ssa-ccp.c (likely_value): UNDEFINED ^ X is UNDEFINED.
34739
34740 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34741
34742         * config/arc/predicates.md (move_double_src_operand): Replace the
34743         call to move_double_src_operand with a call to address_operand.
34744
34745 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34746
34747         * config/arc/elf.h (ARGET_ARC_TP_REGNO_DEFAULT): Define.
34748         * config/arc/linux.h (ARGET_ARC_TP_REGNO_DEFAULT): Likewise.
34749         * config/arc/arc.opt (mtp-regno): Use ARGET_ARC_TP_REGNO_DEFAULT.
34750
34751 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34752
34753         * config/arc/predicates.md (long_immediate_loadstore_operand):
34754         Consider scaled addresses cases.
34755
34756 2017-03-27  Claudiu Zissulescu  <claziss@synopsys.com>
34757
34758         * config/arc/arc.c (arc_epilogue_uses): BLINK should be also
34759         restored when in interrupt.
34760         * config/arc/arc.md (simple_return): ARCv2 rtie instruction
34761         doesn't have delay slot.
34762
34763 2017-03-27  Richard Biener  <rguenther@suse.de>
34764
34765         PR ipa/79776
34766         * tree-ssa-structalias.c (associate_varinfo_to_alias): Skip
34767         inlined thunk clones.
34768
34769 2017-03-27  Jakub Jelinek  <jakub@redhat.com>
34770
34771         PR sanitizer/80168
34772         * asan.c (instrument_derefs): Copy over last operand from
34773         original COMPONENT_REF to the new COMPONENT_REF with
34774         DECL_BIT_FIELD_REPRESENTATIVE.
34775         * ubsan.c (instrument_object_size): Likewise.
34776
34777 2017-03-27  Richard Biener  <rguenther@suse.de>
34778
34779         PR tree-optimization/80170
34780         * tree-vect-data-refs.c (vect_compute_data_ref_alignment): Make
34781         sure DR/SCEV didnt fold in constants we do not see when looking
34782         at the reference base alignment.
34783
34784 2017-03-27  Richard Biener  <rguenther@suse.de>
34785
34786         PR middle-end/80171
34787         * gimple-fold.c (fold_ctor_reference): Properly guard against
34788         NULL return value from canonicalize_constructor_val.
34789
34790 2017-03-25  Uros Bizjak  <ubizjak@gmail.com>
34791
34792         PR target/80180
34793         * config/i386/i386.c (ix86_expand_builtin)
34794         <IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Do not expand arg0 between
34795         flags reg setting and flags reg using instructions.
34796         <IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Ditto.  Use non-flags reg
34797         clobbering instructions to zero extend op2.
34798
34799 2017-03-25  Gerald Pfeifer  <gerald@pfeifer.com>
34800
34801         * doc/install.texi (Configuration) <--with-aix-soname>:
34802         Update link to AIX ld.
34803
34804 2017-03-25  Bernd Schmidt  <bschmidt@redhat.com>
34805
34806         PR rtl-optimization/80160
34807         PR rtl-optimization/80159
34808         * lra-assigns.c (must_not_spill_p): Tighten new test to also take
34809         reg_alternate_class into account.
34810
34811 2017-03-24  Vladimir Makarov  <vmakarov@redhat.com>
34812
34813         PR target/80148
34814         * lra-assigns.c (assign_by_spills): Add spilled non-reload pseudos
34815         to consider in curr_insn_transform.
34816
34817 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
34818
34819         * genrecog.c (validate_pattern): Add VEC_SELECT validation.
34820         * genmodes.c (emit_min_insn_modes_c): Call emit_mode_nunits
34821         and emit_mode_inner.
34822
34823 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34824
34825         * config/s390/s390-builtins.def: Add VXE builtins.  Add a flags
34826         argument to the overloaded builtin variants.  Use the new flag to
34827         deprecate certain builtin variants.
34828         * config/s390/s390-builtin-types.def: Add new builtin types.
34829         * config/s390/s390-builtins.h: Support new flags field for
34830         overloaded builtins.
34831         * config/s390/s390-c.c (OB_DEF_VAR): New flags field.
34832         (s390_macro_to_expand): Enable vector float data type.
34833         (s390_cpu_cpp_builtins_internal): Indicate support of the new
34834         builtins by incrementing the __VEC__ version number.
34835         (s390_expand_overloaded_builtin): Support expansion of vec_xl and
34836         vec_xst.
34837         (s390_resolve_overloaded_builtin): Emit error messages depending
34838         on the builtin flags.
34839         * config/s390/s390.c (s390_expand_builtin): Support additional
34840         flags argument.  Change error message to match the messages
34841         emitted in s390-c.c.
34842         * config/s390/s390.md: New UNSPEC_* constants.
34843         (op_type): Add new instruction types.
34844         * config/s390/vecintrin.h: Add new builtins and test data class
34845         constants.
34846         * config/s390/vx-builtins.md (V_HW_32_64): Add V4SF.
34847         (V_HW_4, VEC_HW, VECF_HW): New mode iterators.
34848         (VEC_INEXACT, VEC_NOINEXACT): New constants.
34849         ("vec_splats<mode>", "vec_insert<mode>", "vec_promote<mode>")
34850         ("vec_insert_and_zero<mode>", "vec_mergeh<mode>")
34851         ("vec_mergel<mode>"): V_HW -> VEC_HW.
34852
34853         ("vlrlrv16qi", "vstrlrv16qi", "vbpermv16qi", "vec_msumv2di")
34854         ("vmslg", "*vftci<mode>_cconly", "vftci<mode>_intcconly")
34855         ("*vftci<mode>", "vftci<mode>_intcc", "vec_double_s64")
34856         ("vec_double_u64", "vfmin<mode>", "vfmax<mode>"): New definition.
34857
34858         ("and_av2df3", "and_cv2df3", "vec_andc_av2df3")
34859         ("vec_andc_cv2df3", "xor_av2df3", "xor_cv2df3", "vec_nor_av2df3")
34860         ("vec_nor_cv2df3", "ior_av2df3", "ior_cv2df3", "vec_nabs")
34861         ("*vftcidb", "*vftcidb_cconly", "vftcidb"): Remove definition.
34862
34863         ("vec_all_<fpcmpcc:code>v2df", "vec_any_<fpcmpcc:code>v2df")
34864         ("vec_scatter_elementv4si_DI", "vec_cmp<fpcmp:code>v2df")
34865         ("vec_di_to_df_s64", "vec_di_to_df_u64", "vec_df_to_di_u64")
34866         ("vfidb", "*vldeb", "*vledb", "*vec_cmp<insn_cmp>v2df_cconly")
34867         ("vec_cmpeqv2df_cc", "vec_cmpeqv2df_cc", "vec_cmphv2df_cc")
34868         ("vec_cmphev2df_cc", "*vec_cmpeqv2df_cc")
34869         ("*vec_cmphv2df_cc", "*vec_cmphev2df_cc"): Enable new modes as ...
34870
34871         ("vec_all_<fpcmpcc:code><mode>", "vec_any_<fpcmpcc:code><mode>")
34872         ("vec_scatter_element<V_HW_4:mode>_DI")
34873         ("vec_cmp<fpcmp:code><mode>", "vcdgb", "vcdlgb", "vclgdb")
34874         ("vec_fpint<mode>", "vflls")
34875         ("vflrd", "*vec_cmp<insn_cmp><mode>_cconly", "vec_cmpeq<mode>_cc")
34876         ("vec_cmpeq<mode>_cc", "vec_cmph<mode>_cc", "vec_cmphe<mode>_cc")
34877         ("*vec_cmpeq<mode>_cc", "*vec_cmph<mode>_cc")
34878         ("*vec_cmphe<mode>_cc"): ... these.
34879
34880         ("vec_ctd_s64", "vec_ctsl", "vec_ctul", "vec_st2f"): Use rounding
34881         mode constant instead of magic value.
34882
34883 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34884
34885         * config/s390/s390.c (s390_expand_vec_compare): Support other
34886         vector floating point modes than just V2DF.
34887         (s390_expand_vcond): Likewise.
34888         (s390_hard_regno_mode_ok): Allow SFmode values in VRs.
34889         (s390_cannot_change_mode_class): Prevent mode changes between TF
34890         and V1TF in vector registers.
34891         * config/s390/s390.md (DF, SF): New mode attributes.
34892         ("*cmp<mode>_ccs", "add<mode>3", "sub<mode>3", "mul<mode>3")
34893         ("fma<mode>4", "fms<mode>4", "div<mode>3", "*neg<mode>2"): Add
34894         SFmode support for VRs.
34895         * config/s390/vector.md (V_HW, V_HW2, VT_HW, ti*, nonvec): Add new
34896         vector fp modes.
34897         (VFT, VF_HW): New mode iterators.
34898         (vw, sdx): New mode attributes.
34899         ("addv2df3", "subv2df3", "mulv2df3", "divv2df3", "sqrtv2df2")
34900         ("fmav2df4","fmsv2df4", "negv2df2", "absv2df2", "*negabsv2df2")
34901         ("smaxv2df3", "sminv2df3", "*vec_cmp<VFCMP_HW_OP:code>v2df_nocc")
34902         ("vec_cmpuneqv2df", "vec_cmpltgtv2df", "vec_orderedv2df")
34903         ("vec_unorderedv2df"): Adjust the v2df only patterns to support
34904         also the new vector floating point modes.  Renaming to ...
34905
34906         ("add<mode>3", "sub<mode>3", "mul<mode>3", "div<mode>3")
34907         ("sqrt<mode>2", "fma<mode>4", "fms<mode>4", "neg<mode>2")
34908         ("abs<mode>2", "negabs<mode>2", "smax<mode>3")
34909         ("smin<mode>3", "*vec_cmp<VFCMP_HW_OP:code><mode>_nocc")
34910         ("vec_cmpuneq<mode>", "vec_cmpltgt<mode>", "vec_ordered<mode>")
34911         ("vec_unordered<mode>"): ... these.
34912
34913         ("neg_fma<mode>4", "neg_fms<mode>4", "*smax<mode>3_vxe")
34914         ("*smin<mode>3_vxe", "*sminv2df3_vx", "*vec_extendv4sf")
34915         ("*vec_extendv2df"): New insn definitions.
34916
34917 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34918
34919         * config/s390/s390.md ("*adddi3_sign", "*subdi3_sign", "mulditi3")
34920         ("mulditi3_2", "*muldi3_sign"): New patterns.
34921         ("muldi3", "*muldi3", "mulsi3", "*mulsi3"): Add an expander and
34922         rename the pattern definition.
34923
34924 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34925
34926         * config/s390/s390.md ("indirect_jump"): Turn insn definition into
34927         expander.
34928         ("*indirect_jump", "*indirect2_jump"): New pattern definitions.
34929
34930 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34931
34932         * config/s390/s390.c (s390_expand_vec_init): Use vllezl
34933         instruction if possible.
34934         * config/s390/vector.md (vec_halfnumelts): New mode
34935         attribute.
34936         ("*vec_vllezlf<mode>"): New pattern.
34937
34938 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34939
34940         * config/s390/vector.md ("popcountv16qi2", "popcountv8hi2")
34941         ("popcountv4si2", "popcountv2di2"): Rename to ...
34942         ("popcount<mode>2", "popcountv8hi2_vx", "popcountv4si2_vx")
34943         ("popcountv2di2_vx"): ... these and add !TARGET_VXE to the
34944         condition.
34945         ("popcount<mode>2_vxe"): New pattern.
34946
34947 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34948
34949         * common/config/s390/s390-common.c (processor_flags_table): Add
34950         arch12.
34951         * config.gcc: Add arch12.
34952         * config/s390/driver-native.c (s390_host_detect_local_cpu):
34953         Default to arch12 for unknown CPU model numbers.
34954         * config/s390/s390-builtins.def: Add B_VXE builtin flag.
34955         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Adjust
34956         PROCESSOR_max sanity check.
34957         * config/s390/s390-opts.h (enum processor_type): Add
34958         PROCESSOR_ARCH12.
34959         * config/s390/s390.c (processor_table): Add arch12.
34960         (s390_expand_builtin): Add check for B_VXE flag.
34961         (s390_issue_rate): Add PROCESSOR_ARCH12.
34962         (s390_get_sched_attrmask): Likewise.
34963         (s390_get_unit_mask): Likewise.
34964         (s390_sched_score): Enable z13 scheduling for arch12.
34965         (s390_sched_reorder): Likewise.
34966         (s390_sched_variable_issue): Likewise.
34967         * config/s390/s390.h (enum processor_flags): Add PF_ARCH12 and
34968         PF_VXE.
34969         (s390_tune_attr): Use z13 scheduling also for arch12.
34970         (TARGET_CPU_ARCH12, TARGET_CPU_ARCH12_P, TARGET_CPU_VXE)
34971         (TARGET_CPU_VXE_P, TARGET_ARCH12, TARGET_ARCH12_P, TARGET_VXE)
34972         (TARGET_VXE_P): New macros.
34973         * config/s390/s390.md: Add arch12 to cpu attribute.  Add arch12
34974         and vxe to cpu_facility.  Add arch12 and vxe to enabled attribute.
34975         * config/s390/s390.opt: Add arch12 as processor_type.
34976
34977 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34978
34979         * config/s390/s390.md
34980         ("fixuns_truncdddi2", "fixuns_trunctddi2")
34981         ("fixuns_trunc<BFP:mode><GPR:mode>2"): Merge into ...
34982         ("fixuns_trunc<FP:mode><GPR:mode>2"): New expander.
34983
34984         ("fixuns_trunc<BFP:mode><GPR:mode>2", "fixuns_trunc<mode>si2"):
34985         Rename expanders to ...
34986
34987         ("fixuns_trunc<BFP:mode><GPR:mode>2_emu")
34988         ("fixuns_truncdddi2_emu"): ... these.
34989
34990         ("fixuns_trunc<mode>si2_emu"): New expander.
34991
34992         ("*fixuns_truncdfdi2_z13"): Rename to ...
34993         ("*fixuns_truncdfdi2_vx"): ... this.
34994
34995 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
34996
34997         * config/s390/2964.md: Remove the single element vector compare
34998         instructions which are no longer used.
34999         * config/s390/s390.c (s390_select_ccmode): Remove handling of
35000         vector CCmodes.
35001         (s390_canonicalize_comparison): Remove handling of DFmode
35002         compares.
35003         (s390_expand_vec_compare_scalar): Remove function.
35004         (s390_emit_compare): Don't call s390_expand_vec_compare_scalar.
35005         * config/s390/s390.md ("*vec_cmp<insn_cmp>df_cconly"): Remove
35006         pattern.
35007         ("*cmp<mode>_ccs"): Add wfcdb instruction.
35008
35009 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35010
35011         * config/s390/s390.md ("mov<mode>_64dfp" DD_DF): Use vleig for loading a
35012         FP zero.
35013         ("*mov<mode>_64" DD_DF): Remove the vector instructions. These
35014         will anyway by matched by mov<mode>_64dfp.
35015
35016 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35017
35018         * config/s390/s390.md ("mov<mode>" SD_SF): Change vleg/vsteg to
35019         vlef/vstef.  Add missing operand to vleif.
35020
35021 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35022
35023         * config/s390/s390.c (s390_expand_vec_init): Enable vector load
35024         pair for all vector types with 64 bit elements.
35025         * config/s390/vx-builtins.md (V_HW_64): Move mode iterator to ...
35026         * config/s390/vector.md (V_HW_64): ... here.
35027         (V_128_NOSINGLE): New mode iterator.
35028         ("vec_init<V_HW:mode>"): Use V_128 as mode iterator.
35029         ("*vec_splat<mode>"): Use V_128_NOSINGLE mode iterator.
35030         ("*vec_tf_to_v1tf", "*vec_ti_to_v1ti"): New pattern definitions.
35031         ("*vec_load_pairv2di"): Change to ...
35032         ("*vec_load_pair<mode>"): ... this one.
35033
35034 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35035
35036         * config/s390/constraints.md: Add comments.
35037         (jKK): Reject element sizes > 8 bytes.
35038         * config/s390/s390.c (s390_split_ok_p): Enable splitting also for
35039         s_operands.
35040         * config/s390/s390.md: Add the s_operand checks formerly in
35041         s390_split_ok_p to various splitters where they are still
35042         required.
35043         * config/s390/vector.md ("mov<mode>" V_128): Add GPR alternatives
35044         for 128 bit vectors.  Plus two splitters.
35045
35046 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35047
35048         * config/s390/s390.md: Rename the cpu facilty vec to vx throughout
35049         the file.
35050
35051 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35052
35053         PR target/79893
35054         * config/s390/s390-c.c (s390_adjust_builtin_arglist): Issue an
35055         error if the boundary argument is not constant.
35056
35057 2017-03-24  Jakub Jelinek  <jakub@redhat.com>
35058
35059         PR rtl-optimization/80112
35060         * loop-doloop.c (doloop_condition_get): Don't check condition
35061         if cmp isn't SET with IF_THEN_ELSE src.
35062
35063 2017-03-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35064
35065         PR tree-optimization/80158
35066         * gimple-ssa-strength-reduction.c (replace_mult_candidate): When
35067         replacing a candidate statement, also replace it for the
35068         candidate's alternate interpretation.
35069         (replace_rhs_if_not_dup): Likewise.
35070         (replace_one_candidate): Likewise.
35071
35072 2017-03-24  Richard Biener  <rguenther@suse.de>
35073
35074         PR tree-optimization/80167
35075         * graphite-isl-ast-to-gimple.c
35076         (translate_isl_ast_to_gimple::is_valid_rename): Handle default-defs
35077         properly.
35078         (translate_isl_ast_to_gimple::get_rename): Likewise.
35079
35080 2017-03-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
35081
35082         * config/rs6000/rs6000.c (rs6000_option_override_internal): Change
35083         handling of certain combinations of target options, including the
35084         combinations -mpower8-vector vs. -mno-vsx, -mpower9-vector vs.
35085         -mno-power8-vector, and -mpower9_dform vs. -mno-power9-vector.
35086
35087 2017-03-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35088
35089         PR target/71436
35090         * config/arm/arm.md (*load_multiple): Add reload_completed to
35091         matching condition.
35092
35093 2017-03-23  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35094             Richard Biener  <rguenth@suse.de>
35095
35096         PR tree-optimization/79908
35097         PR tree-optimization/80136
35098         * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
35099         been cast away, gimplify_and_add suffices.
35100
35101 2017-03-23  Markus Trippelsdorf  <markus@trippelsdorf.de>
35102
35103         * tree-vrp.c (identify_jump_threads): Delete avail_exprs.
35104
35105 2017-03-23  Richard Biener  <rguenther@suse.de>
35106
35107         PR tree-optimization/80032
35108         * gimplify.c (gimple_push_cleanup): Forced unconditional
35109         cleanups still have to go to the conditional_cleanups
35110         sequence.
35111
35112 2017-03-22  Jakub Jelinek  <jakub@redhat.com>
35113
35114         PR tree-optimization/80072
35115         * tree-ssa-reassoc.c (struct operand_entry): Change id field type
35116         to unsigned int.
35117         (next_operand_entry_id): Change type to unsigned int.
35118         (sort_by_operand_rank): Make sure to return the right return value
35119         even if unsigned fields are bigger than INT_MAX.
35120         (struct oecount): Change cnt and id type to unsigned int.
35121         (oecount_hasher::equal): Formatting fix.
35122         (oecount_cmp): Make sure to return the right return value
35123         even if unsigned fields are bigger than INT_MAX.
35124         (undistribute_ops_list): Change next_oecount_id type to unsigned int.
35125
35126         PR c++/80129
35127         * gimplify.c (gimplify_modify_expr_rhs) <case COND_EXPR>: Clear
35128         TREE_READONLY on result if writing it more than once.
35129
35130         PR sanitizer/80110
35131         * doc/invoke.texi (-fsanitize=thread): Document that with
35132         -fnon-call-exceptions atomics are not able to throw
35133         exceptions.
35134
35135         PR sanitizer/80110
35136         * tsan.c: Include tree-eh.h.
35137         (instrument_builtin_call): Call maybe_clean_eh_stmt or
35138         maybe_clean_or_replace_eh_stmt where needed.
35139         (instrument_memory_accesses): Add cfg_changed argument.
35140         Call gimple_purge_dead_eh_edges on each block and set *cfg_changed
35141         if it returned true.
35142         (tsan_pass): Adjust caller.  Return TODO_cleanup_cfg if cfg_changed.
35143
35144         PR rtl-optimization/63191
35145         * config/i386/i386.c (ix86_delegitimize_address): Turn into small
35146         wrapper function, moved the whole old content into ...
35147         (ix86_delegitimize_address_1): ... this.  New inline function.
35148         (ix86_find_base_term): Use ix86_delegitimize_address_1 with
35149         true as last argument instead of ix86_delegitimize_address.
35150
35151 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
35152
35153         * config/aarch64/aarch64.c (generic_branch_cost): Copy
35154         cortexa57_branch_cost.
35155
35156 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
35157
35158         * config/aarch64/aarch64.c (generic_tunings): Add AES fusion.
35159
35160 2017-03-21  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
35161
35162         PR target/80123
35163         * doc/md.texi (Constraints): Document wA constraint.
35164         * config/rs6000/constraints.md (wA): New.
35165         * config/rs6000/rs6000.c (rs6000_debug_reg_global): Add wA reg_class.
35166         (rs6000_init_hard_regno_mode_ok): Init wA constraint.
35167         * config/rs6000/rs6000.h (RS6000_CONSTRAINT_wA): New.
35168         * config/rs6000/vsx.md (vsx_splat_<mode>): Use wA constraint.
35169
35170 2017-03-22  Cesar Philippidis  <cesar@codesourcery.com>
35171
35172         PR c++/80029
35173         * gimplify.c (is_oacc_declared): New function.
35174         (oacc_default_clause): Use it to set default flags for acc declared
35175         variables inside parallel regions.
35176         (gimplify_scan_omp_clauses): Strip firstprivate pointers for acc
35177         declared variables.
35178         (gimplify_oacc_declare): Gimplify the declare clauses.  Add the
35179         declare attribute to any decl as necessary.
35180
35181 2017-03-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
35182
35183         PR target/80082
35184         * config/arm/arm-isa.h (isa_bit_lpae): New feature bit.
35185         (ISA_ARMv7ve): Add isa_bit_lpae to the definition.
35186         * config/arm/arm-protos.h (arm_arch7ve): Rename into ...
35187         (arm_arch_lpae): This.
35188         * config/arm/arm.c (arm_arch7ve): Rename into ...
35189         (arm_arch_lpae): This.  Define it in term of isa_bit_lpae.
35190         * config/arm/arm.h (TARGET_HAVE_LPAE): Redefine in term of
35191         arm_arch_lpae.
35192
35193 2017-03-22  Martin Liska  <mliska@suse.cz>
35194
35195         PR target/79906
35196         * config/rs6000/rs6000.c (rs6000_inner_target_options): Show
35197         error message instead of an ICE.
35198
35199 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35200
35201         * doc/extend.texi (6.11 Additional Floating Types): Revise.
35202
35203 2017-03-21  Kelvin Nilsen  <kelvin@gcc.gnu.org>
35204
35205         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
35206         comments.
35207         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
35208         comments.
35209
35210 2017-03-21  Martin Sebor  <msebor@redhat.com>
35211
35212         * doc/extend.texi: Use "cannot" instead of "can't."
35213         * doc/hostconfig.texi: Same.
35214         * doc/install.texi: Same.
35215         * doc/invoke.texi: Same.
35216         * doc/loop.texi: Same.
35217         * doc/md.texi: Same.
35218         * doc/objc.texi: Same.
35219         * doc/rtl.texi: Same.
35220         * doc/tm.texi: Same.
35221         * doc/tm.texi.in: Same.
35222         * doc/trouble.texi: Same.
35223
35224 2017-03-21  Alexandre Oliva  <aoliva@redhat.com>
35225
35226         PR debug/63238
35227         * dwarf2out.c (struct checksum_attributes): Add at_alignment.
35228         (collect_checksum_attributes): Set it.
35229         (die_checksum_ordered): Use it.
35230
35231 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35232
35233         PR tree-optimization/79908
35234         * tree-stdarg.c (expand_ifn_va_arg_1): Revert the following
35235         change: For a VA_ARG whose LHS has been cast away, use
35236         force_gimple_operand to construct the side effects.
35237
35238 2017-03-21  David Malcolm  <dmalcolm@redhat.com>
35239
35240         PR translation/80001
35241         * omp-offload.c (oacc_loop_fixed_partitions): Make diagnostics
35242         more amenable to translation.
35243         (oacc_loop_auto_partitions): Likewise.
35244
35245 2017-03-21  Marek Polacek  <polacek@redhat.com>
35246             Martin Sebor  <msebor@redhat.com>
35247
35248         PR tree-optimization/80109
35249         * gimple-ssa-warn-alloca.c (alloca_call_type): Only call get_range_info
35250         on INTEGRAL_TYPE_P.
35251
35252 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
35253             Segher Boessenkool  <segher@kernel.crashing.org>
35254
35255         PR target/80125
35256         * combine.c (can_combine_p): Revert the 2017-03-20 change, only
35257         check reg_used_between_p between insn and one of succ or succ2
35258         depending on if succ is artificial insn not inserted into insn
35259         stream.
35260
35261 2017-03-21  Martin Liska  <mliska@suse.cz>
35262
35263         PR gcov-profile/80081
35264         * Makefile.in: Add gcov-dump and fix installation of gcov-tool.
35265         * doc/gcc.texi: Include gcov-dump stuff.
35266         * doc/gcov-dump.texi: New file.
35267
35268 2017-03-21  Toma Tabacu  <toma.tabacu@imgtec.com>
35269
35270         PR rtl-optimization/79150
35271         * config/mips/mips.c (mips_block_move_loop): Emit a NOP after the
35272         conditional jump, if the jump is the last insn of the loop.
35273
35274 2017-03-21  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35275             Richard Biener  <rguenth@suse.de>
35276
35277         PR tree-optimization/79908
35278         * tree-stdarg.c (expand_ifn_va_arg_1): For a VA_ARG whose LHS has
35279         been cast away, use force_gimple_operand to construct the side
35280         effects.
35281
35282 2017-03-21  Martin Liska  <mliska@suse.cz>
35283
35284         PR libfortran/79956
35285         * simplify-rtx.c (simplify_immed_subreg): Initialize a variable
35286         to NULL.
35287
35288 2017-03-21  Brad Spengler <spender@grsecurity.net>
35289
35290         PR plugins/80094
35291         * plugin.c (htab_hash_plugin): New function.
35292         (add_new_plugin): Use it and adjust.
35293         (parse_plugin_arg_opt): Adjust.
35294         (init_one_plugin): Likewise.
35295
35296 2017-03-21  Richard Biener  <rguenther@suse.de>
35297
35298         PR tree-optimization/80032
35299         * gimplify.c (gimple_push_cleanup): Add force_uncond parameter,
35300         if set force the cleanup to happen unconditionally.
35301         (gimplify_target_expr): Push inserted clobbers with force_uncond
35302         to avoid them being removed by control-dependent DCE.
35303
35304 2017-03-21  Richard Biener  <rguenther@suse.de>
35305
35306         PR tree-optimization/80122
35307         * tree-inline.c (copy_bb): Do not expans va-arg packs or
35308         va_arg_pack_len when the inlined call stmt requires pack
35309         expansion itself.
35310         * tree-inline.h (struct copy_body_data): Make call_stmt a gcall *.
35311
35312 2017-03-21  Jakub Jelinek  <jakub@redhat.com>
35313
35314         PR sanitizer/78158
35315         * tsan.c (instrument_builtin_call): If the memory model argument
35316         is not a constant, assume it is valid.
35317
35318         PR c/67338
35319         * fold-const.c (round_up_loc): Negate divisor in unsigned type to
35320         avoid UB.
35321
35322 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
35323
35324         PR rtl-optimization/79910
35325         * combine.c (can_combine_p): Do not allow combining an I0 or I1
35326         if its dest is used by an insn before I2 (other than the combined
35327         insns themselves, which are properly handled already).
35328
35329 2017-03-20  Segher Boessenkool  <segher@kernel.crashing.org>
35330
35331         Revert:
35332         2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
35333
35334         * combine.c (record_used_regs): New static function.
35335         (try_combine): Handle situations where there is an additional
35336         instruction between I2 and I3 which needs to have a LOG_LINK
35337         updated.
35338
35339         Revert:
35340         2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
35341
35342         * combine.c (try_combine): Delete redundant i1 test.  Call
35343         prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
35344
35345 2017-03-20  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
35346
35347         PR target/80083
35348         * config/rs6000/rs6000.md (*movsi_internal1): Fix constraints for
35349         alternatives 13/14.
35350
35351 2017-03-20  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35352
35353         PR tree-optimization/80054
35354         * gimple-ssa-strength-reduction.c (all_phi_incrs_profitable): Fail
35355         the optimization if a PHI or any of its arguments is not dominated
35356         by the candidate's basis.  Use gphi* rather than gimple* as
35357         appropriate.
35358         (replace_profitable_candidates): Clean up a gimple* variable that
35359         should be a gphi* variable.
35360
35361 2017-03-20  Martin Sebor  <msebor@redhat.com>
35362
35363         PR c++/52477
35364         * doc/extend.texi (attribute constructor): Document present limitation.
35365
35366 2017-03-20  Kelvin Nilsen  <kelvin@gcc.gnu.org>
35367
35368         PR target/79963
35369         * config/rs6000/altivec.h (vec_all_ne): Under __cplusplus__ and
35370         __POWER9_VECTOR__ #ifdef control, change template definition to
35371         use Power9-specific built-in function.
35372         (vec_any_eq): Likewise.
35373         * config/rs6000/vector.md (vector_ae_v2di_p): Change the flag used
35374         to control outcomes from this test.
35375         (vector_ae_<mode>p): For VEC_F modes, likewise.
35376
35377 2017-03-20  Ian Lance Taylor  <iant@google.com>
35378
35379         * config/i386/i386.c (ix86_function_regparm): Save an extra
35380         register for -fsplit-stack with DECL_STATIC_CHAIN.
35381
35382 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
35383
35384         PR target/79912
35385         * config/riscv/riscv.c (riscv_preferred_reload_class): Remove.
35386         (TARGET_PREFERRED_RELOAD_CLASS): Likewise.
35387
35388 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com>
35389
35390         * config/riscv/riscv.c (riscv_print_operand): Use "fence
35391         iorw,ow".
35392         * config/riscv/sync.mc (mem_thread_fence_1): Use "fence
35393         iorw,iorw".
35394
35395 2017-03-20  Marek Polacek  <polacek@redhat.com>
35396
35397         PR sanitizer/80063
35398         * asan.c (DEF_SANITIZER_BUILTIN): Use do { } while (0).
35399
35400 2017-03-20  Richard Biener  <rguenther@suse.de>
35401
35402         PR tree-optimization/80113
35403         * graphite-isl-ast-to-gimple.c (copy_loop_phi_nodes): Do not
35404         allocate extra SSA name for PHI def.
35405         (add_close_phis_to_outer_loops): Likewise.
35406         (add_close_phis_to_merge_points): Likewise.
35407         (copy_loop_close_phi_args): Likewise.
35408         (copy_cond_phi_nodes): Likewise.
35409
35410 2017-03-20  Martin Liska  <mliska@suse.cz>
35411
35412         PR middle-end/79753
35413         * tree-chkp.c (chkp_build_returned_bound): Do not build
35414         returned bounds for a LHS that's not a BOUNDED_P type.
35415
35416 2017-03-20  Martin Liska  <mliska@suse.cz>
35417
35418         PR target/79769
35419         PR target/79770
35420         * tree-chkp.c (chkp_find_bounds_1): Handle REAL_CST,
35421         COMPLEX_CST and VECTOR_CST.
35422
35423 2017-03-20  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
35424
35425         PR target/78857
35426         * config/s390/s390.md ("cmp<mode>_ccs_0"): Add a clobber of the
35427         target operand.  A new splitter adds the clobber statement in case
35428         the target operand is dead anyway.
35429
35430 2017-03-19  Gerald Pfeifer  <gerald@pfeifer.com>
35431
35432         * doc/install.texi (Specific) <sparc-*-linux*>: No longer refer
35433         to age-old versions of binutils and glibc.
35434
35435 2017-03-18  Segher Boessenkool  <segher@kernel.crashing.org>
35436
35437         * doc/contrib.texi (Contributors): Remove duplicate entry for myself.
35438
35439 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
35440
35441         * doc/contrib.texi (Contributors): Add Segher Boessenkool.
35442
35443 2017-03-18  Gerald Pfeifer  <gerald@pfeifer.com>
35444
35445         * doc/install.texi (Specific) <arm-*-eabi>: Remove old
35446         requirement for binutils 2.13.
35447
35448 2017-03-17  Jim Wilson  <jim.wilson@linaro.org>
35449
35450         * combine.c (try_combine): Delete redundant i1 test.  Call
35451         prev_nonnote_nondebug_insn instead of prev_nonnote_insn.
35452
35453 2017-03-17  Palmer Dabbelt  <palmer@dabbelt.com
35454
35455         * doc/install.texi (Specific) <riscv32-*-elf>: Add riscv32-*-elf,
35456         riscv32-*-linux, riscv64-*-elf, riscv64-*-linux to the table of
35457         contents.
35458         <riscv64-*-elf>: Re-arrange section
35459         <riscv32-*-elf>: Add a note about requiring binutils 2.28.
35460         <riscv32-*-linux>: Likewise.
35461         <riscv64-*-elf>: Likewise
35462         <riscv64-*-linux>: Likewise.
35463
35464 2017-03-17  Richard Earnshaw  <rearnsha@arm.com>
35465
35466         PR target/80052
35467         * aarch64.opt(verbose-cost-dump): Fix typo.
35468
35469 2017-03-17  Pat Haugen  <pthaugen@us.ibm.com>
35470
35471         PR target/79951
35472         * config/rs6000/rs6000.md (copysign<mode>3_fcpsgn): Test
35473         for VECTOR_UNIT_VSX_P (<MODE>mode) too.
35474
35475 2017-03-17  Bernd Schmidt  <bschmidt@redhat.com>
35476
35477         * reload.c (find_reloads): When reloading a nonoffsettable address,
35478         use RELOAD_OTHER for it and its address reloads.
35479
35480         PR rtl-optimization/79910
35481         * combine.c (record_used_regs): New static function.
35482         (try_combine): Handle situations where there is an additional
35483         instruction between I2 and I3 which needs to have a LOG_LINK
35484         updated.
35485
35486 2017-03-17  Jeff Law  <law@redhat.com>
35487
35488         PR tree-optimization/71437
35489         * tree-vrp.c (simplify_stmt_for_jump_threading): Lookup the
35490         conditional in the hash table first.
35491         (vrp_dom_walker::before_dom_children): Extract condition from
35492         ASSERT_EXPR.  Record condition, its inverion and any implied
35493         conditions as well.
35494
35495 2017-03-17  Marek Polacek  <polacek@redhat.com>
35496             Markus Trippelsdorf  <markus@trippelsdorf.de>
35497
35498         PR tree-optimization/80079
35499         * gimple-ssa-store-merging.c (class pass_store_merging): Initialize
35500         m_stores_head.
35501
35502 2017-03-17  Richard Biener  <rguenther@suse.de>
35503
35504         PR middle-end/80075
35505         * tree-eh.c (stmt_could_throw_1_p): Only handle gimple assigns.
35506         Properly verify the LHS before the RHS possibly claims to be
35507         handled.
35508         (stmt_could_throw_p): Hande gimple conds fully here.  Clobbers
35509         do not throw.
35510
35511 2017-03-17  Martin Jambor  <mjambor@suse.cz>
35512
35513         * doc/invoke.texi (Option Options): Include -fipa-vrp in the list.
35514         (List of -O2 options): Likewise.
35515         (-fipa-bit-cp): Replace "ipa" with "interprocedural."
35516         (-fipa-vrp) New.
35517
35518 2017-03-17  Tom de Vries  <tom@codesourcery.com>
35519
35520         * gcov-dump.c (print_usage): Print bug_report_url.
35521
35522 2017-03-17  Richard Biener  <rguenther@suse.de>
35523
35524         PR middle-end/80050
35525         * genmatch.c (parser::next): Remove pointless check for CPP_EOF.
35526         (parser::peek): Likewise.
35527
35528 2017-03-17  Richard Biener  <rguenther@suse.de>
35529
35530         PR tree-optimization/80048
35531         * sese.c (free_sese_info): Properly release rename_map and
35532         copied_bb_map elements.
35533
35534 2017-03-16  Alexandre Oliva  <aoliva@redhat.com>
35535
35536         * gimple-ssa-store-merging.c (struct imm_store_chain_info):
35537         Add linked-list forward and backlinks.  Insert on
35538         construction, remove on destruction.
35539         (class pass_store_merging): Add m_stores_head field.
35540         (pass_store_merging::terminate_and_process_all_chains):
35541         Iterate over m_stores_head list.
35542         (pass_store_merging::terminate_all_aliasing_chains):
35543         Likewise.
35544         (pass_store_merging::execute): Check for debug stmts first.
35545         Push new chains onto the m_stores_head stack.
35546
35547 2017-03-16  Michael Meissner  <meissner@linux.vnet.ibm.com>
35548
35549         PR target/71294
35550         * config/rs6000/vsx.md (vsx_splat_<mode>, VSX_D iterator): Allow a
35551         SPLAT operation on ISA 2.07 64-bit systems that have direct move,
35552         but no MTVSRDD support, by doing MTVSRD and XXPERMDI.
35553
35554 2017-03-16  Jeff Law  <law@redhat.com>
35555
35556         PR tree-optimization/71437
35557         * tree-ssa-dom.c (dom_opt_dom_walker): Remove thread_across_edge
35558         member function.  Implementation moved into after_dom_children
35559         member function and into the threader's thread_outgoing_edges
35560         function.
35561         (dom_opt_dom_walker::after_dom_children): Simplify by moving
35562         some code into new thread_outgoing_edges.
35563         * tree-ssa-threadedge.c (thread_across_edge): Make static and simplify
35564         definition.  Simplify marker handling (do it here).   Assume we always
35565         have the available expression and the const/copies tables.
35566         (thread_outgoing_edges): New function extracted from tree-ssa-dom.c
35567         and tree-vrp.c
35568         * tree-ssa-threadedge.h (thread_outgoing_edges): Declare.
35569         * tree-vrp.c (equiv_stack): No longer file scoped.
35570         (vrp_dom_walker): New class.
35571         (vrp_dom_walker::before_dom_children): New member function.
35572         (vrp_dom_walker::after_dom_children): Likewise.
35573         (identify_jump_threads):  Setup domwalker.  Use it rather than
35574         walking edges in a random order by hand.  Simplify setup/finalization.
35575         (finalize_jump_threads): Remove.
35576         (vrp_finalize): Do not call identify_jump_threads here.
35577         (execute_vrp): Do it here instead and call thread_through_all_blocks
35578         here too.
35579
35580         PR tree-optimization/71437
35581         * tree-ssa-dom.c (pfn_simplify): Add basic_block argument.  All
35582         callers changed.
35583         (simplify_stmt_for_jump_threading): Add basic_block argument.  All
35584         callers changed.
35585         (lhs_of_dominating_assert): Moved from here into tree-vrp.c.
35586         (dom_opt_dom_walker::thread_across_edge): Remove
35587         handle_dominating_asserts argument.  All callers changed.
35588         (record_temporary_equivalences_from_stmts_at_dest): Corresponding
35589         changes.  Remove calls to lhs_of_dominating_assert.  Other
35590         uses of handle_dominating_asserts turn into unconditional code
35591         (simplify_control_stmt_condition_1): Likewise.
35592         (simplify_control_stmt_condition): Likewise.
35593         (thread_through_normal_block, thread_across_edge): Likewise.
35594         * tree-ssa-threadedge.h (thread_across_edge): Corresponding changes.
35595         * tree-vrp.c (lhs_of_dominating_assert): Move here.  Return original
35596         object if it is not an SSA_NAME.
35597         (simplify_stmt_for_jump_threading): Call lhs_of_dominating_assert
35598         before calling into the VRP specific simplifiers.
35599         (identify_jump_threads): Remove handle_dominating_asserts
35600         argument.
35601
35602 2017-03-16  Jakub Jelinek  <jakub@redhat.com>
35603
35604         PR fortran/79886
35605         * tree-diagnostic.c (default_tree_printer): No longer static.
35606         * tree-diagnostic.h (default_tree_printer): New prototype.
35607
35608 2017-03-16  Tamar Christina  <tamar.christina@arm.com>
35609
35610         * config/aarch64/aarch64-simd.md (*aarch64_simd_mov<mode>)
35611         Change ins into fmov.
35612
35613 2017-03-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35614
35615         * config/aarch64/iterators.md (h_con): Return "x" for V4HF and V8HF.
35616         * config/aarch64/aarch64-simd.md (*aarch64_fma4_elt_from_dup<mode>):
35617         Use h_con constraint for operand 1.
35618         (*aarch64_fnma4_elt_from_dup<mode>): Likewise.
35619         (*aarch64_mulx_elt_from_dup<mode>): Likewise for operand 2.
35620
35621 2017-03-15  Jeff Law  <law@redhat.com>
35622
35623         PR tree-optimization/71437
35624         * tree-ssa-dom.c (derive_equivalences_from_bit_ior): New function.
35625         (record_temporary_equivalences): Use it.
35626
35627         PR tree-optimization/71437
35628         * tree-ssa-dom.c (struct cond_equivalence): Moved from here into
35629         tree-ssa-scopedtables.
35630         (lookup_avail_expr, build_and_record_new_cond): Likewise.
35631         (record_conditions, record_cond, vuse_eq): Likewise.
35632         (record_edge_info): Adjust to API tweak of record_conditions.
35633         (simplify_stmt_for_jump_threading): Similarly for lookup_avail_expr.
35634         (record_temporary_equivalences, optimize_stmt): Likewise.
35635         (eliminate_redundant_computations): Likewise.
35636         (record_equivalences_from_stmt): Likewise.
35637         * tree-ssa-scopedtables.c: Include options.h and params.h.
35638         (vuse_eq): New function, moved from tree-ssa-dom.c
35639         (build_and_record_new_cond): Likewise.
35640         (record_conditions): Likewise.  Accept vector of conditions rather
35641         than edge_equivalence structure for first argument.
35642         for the first argument.
35643         (avail_exprs_stack::lookup_avail_expr): New member function, moved
35644         from tree-ssa-dom.c.
35645         (avail_exprs_stack::record_cond): Likewise.
35646         * tree-ssa-scopedtables.h (struct cond_equivalence): Moved here
35647         from tree-ssa-dom.c.
35648         (avail_exprs_stack): Add new member functions lookup_avail_expr
35649         and record_cond.
35650         (record_conditions): Declare.
35651
35652 2017-03-15  Vladimir Makarov  <vmakarov@redhat.com>
35653
35654         PR target/80017
35655         * lra-constraints.c (process_alt_operands): Increase reject for
35656         reloading an input/output operand.
35657
35658 2017-03-15  Michael Meissner  <meissner@linux.vnet.ibm.com>
35659
35660         PR target/79038
35661         * config/rs6000/rs6000.md (float<QHI:mode><IEEE128:mode>2): Define
35662         insns to convert from signed/unsigned char/short to IEEE 128-bit
35663         floating point.
35664         (floatuns<QHI:mode><IEEE128:mode>2): Likewise.
35665
35666 2017-03-15  Uros Bizjak  <ubizjak@gmail.com>
35667
35668         PR target/80019
35669         * config/i386/i386.c (ix86_vector_duplicate_value): Create
35670         subreg of inner mode for values already in registers.
35671
35672 2017-03-15  Bernd Schmidt  <bschmidt@redhat.com>
35673
35674         * config/c6x/c6x.c (hwloop_optimize): Handle case where the old
35675         iteration reg is used after the loop.
35676
35677 2017-03-14  Martin Sebor  <msebor@redhat.com>
35678
35679         PR tree-optimization/79800
35680         * gimple-ssa-sprintf.c (format_floating: Add argument.  Handle
35681         precision in negative-positive range.
35682         (format_floating): Call non-const overload with adjusted precision.
35683
35684 2017-03-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
35685
35686         PR target/79947
35687         * config/rs6000/rs6000.h (TARGET_FRSQRTES): Add check for
35688         -mpowerpc-gfxopt.
35689
35690 2017-03-14  Martin Sebor  <msebor@redhat.com>
35691
35692         PR middle-end/80020
35693         * builtin-attrs.def (ATTR_ALLOC_SIZE_2_NOTHROW_LIST): New macro.
35694         * builtins.def (aligned_alloc): Use it.
35695
35696         PR c/79936
35697         * Makefile.in (GTFILES): Add calls.c.
35698         * calls.c: Include "gt-calls.h".
35699
35700 2017-03-14  Bernd Schmidt  <bschmidt@redhat.com>
35701
35702         PR rtl-optimization/79728
35703         * regs.h (struct target_regs): New field
35704         x_contains_allocatable_regs_of_mode.
35705         (contains_allocatable_regs_of_mode): New macro.
35706         * reginfo.c (init_reg_sets_1): Initialize it, and change
35707         contains_reg_of_mode so it includes global regs as well.
35708         * reload.c (push_reload): Use contains_allocatable_regs_of_mode
35709         rather than contains_regs_of_mode.
35710
35711 2017-03-14  Martin Liska  <mliska@suse.cz>
35712
35713         * doc/invoke.texi: Document options that can't be combined with
35714         -fcheck-pointer-bounds.
35715
35716 2017-03-14  Martin Liska  <mliska@suse.cz>
35717
35718         PR middle-end/79831
35719         * doc/invoke.texi (-Wchkp): Document the option.
35720
35721 2017-03-14  Martin Liska  <mliska@suse.cz>
35722
35723         * Makefile.in: Install gcov-dump.
35724
35725 2017-03-14  Martin Liska  <mliska@suse.cz>
35726
35727         * multiple_target.c (expand_target_clones): Bail out for
35728         an invalid attribute.
35729
35730 2017-03-14  Richard Biener  <rguenther@suse.de>
35731
35732         * alias.c (struct alias_set_entry): Pack properly.
35733         * cfgloop.h (struct loop): Likewise.
35734         * cse.c (struct set): Likewise.
35735         * ipa-utils.c (struct searchc_env): Likewise.
35736         * loop-invariant.c (struct invariant): Likewise.
35737         * lra-remat.c (struct cand): Likewise.
35738         * recog.c (struct change_t): Likewise.
35739         * rtl.h (struct address_info): Likewise.
35740         * symbol-summary.h (function_summary): Likewise.
35741         * tree-loop-distribution.c (struct partition): Likewise.
35742         * tree-object-size.c (struct object_size_info): Likewise.
35743         * tree-ssa-loop-ivopts.c (struct cost_pair): Likewise.
35744         * tree-ssa-threadupdate.c (struct ssa_local_info_t): Likewise.
35745         * tree-vect-data-refs.c (struct _vect_peel_info): Likewise.
35746         * tree-vect-slp.c (struct _slp_oprnd_info): Likewise.
35747         * tree-vect-stmts.c (struct simd_call_arg_info): Likewise.
35748         * tree-vectorizer.h (struct _loop_vec_info): Likewise.
35749         (struct _stmt_vec_info): Likewise.
35750
35751 2017-03-14  Martin Liska  <mliska@suse.cz>
35752
35753         PR target/79892
35754         * multiple_target.c (create_dispatcher_calls): Check that
35755         a target can create a function dispatcher.
35756
35757 2017-03-14  Martin Liska  <mliska@suse.cz>
35758
35759         PR lto/66295
35760         * multiple_target.c (expand_target_clones): Drop local.local
35761         flag for default implementation.
35762
35763 2017-03-14  Richard Biener  <rguenther@suse.de>
35764
35765         PR tree-optimization/80030
35766         * tree-vect-stmts.c (vectorizable_store): Plug memleak.
35767
35768 2017-03-13  Kito Cheng  <kito.cheng@gmail.com>
35769
35770         * config/riscv/riscv.c (riscv_emit_float_compare>: Use
35771         gcc_fallthrough() instead of __attribute__((fallthrough));
35772
35773 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
35774
35775         * doc/gcc.texi: Remove "up" link to (DIR).
35776         * doc/gccint.texi: Ditto.
35777
35778 2017-03-13  Gerald Pfeifer  <gerald@pfeifer.com>
35779
35780         * doc/install.texi (Specific) <avr>: Remove reference to
35781         binutils 2.13.
35782
35783 2017-03-13  Jeff Law  <law@redhat.com>
35784
35785         * config/riscv/riscv.c (riscv_emit_float_compare): Use fallthru
35786         attribute rather than comments.
35787
35788         * config/pdp11/pdp11.md (movmemhi): Adjust operand numbers to
35789         match_scratch operand is highest.
35790
35791 2017-03-13  Martin Liska  <mliska@suse.cz>
35792
35793         PR middle-end/78339
35794         * ipa-pure-const.c (warn_function_noreturn): If the declarations
35795         is a CHKP clone, use original declaration.
35796
35797 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35798
35799         * config/arc/arc.c (arc_init): Use multiplier whenever we have it.
35800         (arc_conditional_register_usage): Use a different allocation order
35801         when optimizing for size.
35802         * common/config/arc/arc-common.c (arc_option_optimization_table):
35803         Section anchors default on when optimizing for size.
35804
35805 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35806
35807         * config/arc/arc.md (*tst_bitfield_tst): Fix pattern.
35808
35809 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35810
35811         * config/arc/arc.c (arc_output_addsi): Emit code density adds.
35812         * config/arc/arc.md (cpu_facility): Add cd variant.
35813         (*movqi_insn): Add code density variant.
35814         (*movhi_insn): Likewise.
35815         (*movqi_insn): Likewise.
35816         (*addsi3_mixed): Likewise.
35817         (subsi3_insn): Likewise.
35818
35819 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35820
35821         * config/arc/arc.md (movsi_cond_exec): Update constraint.
35822
35823 2017-03-13  Claudiu Zissulescu  <claziss@synopsys.com>
35824
35825         * config/arc/arc.c (arc_legitimize_pic_address): Handle PIC
35826         expressions with MINUS and UNARY ops.
35827
35828 2017-03-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
35829
35830         PR target/79911
35831         * config/arm/neon.md (vec_sel_widen_ssum_lo<VQI:mode><VW:mode>3):
35832         Rename to...
35833         (vec_sel_widen_ssum_lo<mode><V_half>3): ... This. Avoid mismatch
35834         between vec_select and vector argument.
35835         (vec_sel_widen_ssum_hi<VQI:mode><VW:mode>3): Rename to...
35836         (vec_sel_widen_ssum_hi<mode><V_half>3): ... This. Likewise.
35837         (vec_sel_widen_usum_lo<VQI:mode><VW:mode>3): Rename to...
35838         (vec_sel_widen_usum_lo<mode><V_half>3): ... This.
35839         (vec_sel_widen_usum_hi<VQI:mode><VW:mode>3): Rename to...
35840         (vec_sel_widen_usum_hi<mode><V_half>3): ... This.
35841
35842 2017-03-13  Richard Biener  <rguenther@suse.de>
35843
35844         PR other/79991
35845         * params.def (vect-max-peeling-for-alignment): Fix typo.
35846
35847 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
35848
35849         * doc/install.texi (Specific) <mips-*-*>: Remove description of
35850         issue that only occurred with binutils below 2.18.
35851
35852 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
35853
35854         * doc/install.texi (Specific) <cris-axis-elf>: No longer
35855         refer to binutils 2.11/2.12 minimum.
35856
35857 2017-03-12  Gerald Pfeifer  <gerald@pfeifer.com>
35858
35859         * doc/install.texi (Specific) <powerpc-*-*>: Remove link to
35860         ftp.kernel.org and simplify binutils requirement.
35861
35862 2017-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
35863
35864         * doc/invoke.texi (Warning Options): Fix spelling of link-time
35865         optimization.
35866         (Optimize Options): Ditto.  Also remove redundancy.
35867
35868 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35869
35870         PR translation/79848
35871         * ipa-devirt.c (warn_types_mismatch): Simplify uses of "%<%s%>" to
35872         "%qs".
35873         * ipa-pure-const.c (suggest_attribute): Likewise.  Convert _
35874         to G_ to avoid double translation.
35875
35876 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35877
35878         PR translation/79923
35879         * auto-profile.c (get_combined_location): Convert leading
35880         character of diagnostics to lower case and remove trailing period.
35881         (read_profile): Likewise for various diagnostics.
35882         * config/arm/arm.c (arm_option_override): Remove trailing period
35883         from various diagnostics.
35884         * config/msp430/msp430.c (msp430_expand_delay_cycles): Likewise.
35885         (msp430_expand_delay_cycles): Likewise.
35886
35887 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35888
35889         PR target/79925
35890         * config/aarch64/aarch64.c (aarch64_validate_mcpu): Quote the
35891         full command-line argument, rather than just "str".
35892         (aarch64_validate_march): Likewise.
35893         (aarch64_validate_mtune): Likewise.
35894
35895 2017-03-10  Bernd Schmidt  <bschmidt@redhat.com>
35896
35897         PR rtl-optimization/78911
35898         * lra-assigns.c (must_not_spill_p): New function.
35899         (spill_for): Use it.
35900
35901 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
35902
35903         PR tree-optimization/79981
35904         * tree-vrp.c (extract_range_basic): Handle IMAGPART_EXPR of
35905         ATOMIC_COMPARE_EXCHANGE ifn result.
35906         (stmt_interesting_for_vrp, vrp_visit_stmt): Handle
35907         IFN_ATOMIC_COMPARE_EXCHANGE.
35908
35909 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35910
35911         PR driver/79875
35912         * opts.c (parse_sanitizer_options): Add missing question mark to
35913         "did you mean" message.
35914
35915 2017-03-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35916
35917         * config/rs6000/rs6000-builtin.def (VMULEUB_UNS): Remove orphaned
35918         built-in.
35919         (VMULEUH_UNS): Likewise.
35920         (VMULOUB_UNS): Likewise.
35921         (VMULOUH_UNS): Likewise.
35922         * config/rs6000/rs6000.c (builtin_function_type): Remove
35923         references to ALTIVEC_BUILTIN_VMUL[EO]U[BH]_UNS.
35924
35925 2017-03-10  David Malcolm  <dmalcolm@redhat.com>
35926
35927         PR bootstrap/79952
35928         * read-rtl-function.c (function_reader::read_rtx_operand): Update
35929         x with result of extra_parsing_for_operand_code_0.
35930         (function_reader::extra_parsing_for_operand_code_0): Convert
35931         return type from void to rtx, returning x.  When reading
35932         SYMBOL_REF with SYMBOL_FLAG_HAS_BLOCK_INFO, reallocate x to the
35933         larger size containing struct block_symbol.
35934
35935 2017-03-10  Segher Boessenkool  <segher@kernel.crashing.org>
35936
35937         * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow
35938         -mfloat128-hardware without -m64.
35939
35940 2017-03-10  Will Schmidt <will_schmidt@vnet.ibm.com>
35941
35942         PR target/79941
35943         * config/rs6000/rs6000.c (builtin_function_type): Add VMUL*U[HB]
35944         entries to the case statement that marks unsigned arguments to
35945         overloaded functions.
35946
35947 2017-03-10  Kelvin Nilsen  <kelvin@gcc.gnu.org>
35948
35949         * config/rs6000/rs6000.c (rs6000_option_override_internal): Fix
35950         two typographic errors in the handling of TARGET_UPPER_REGS_DI.
35951
35952 2017-03-10  Pat Haugen  <pthaugen@us.ibm.com>
35953
35954         PR target/79907
35955         * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Test
35956         TARGET_UPPER_REGS_DI when setting 'wi' constraint regclass.
35957
35958 2017-03-10  Martin Liska  <mliska@suse.cz>
35959
35960         PR target/65705
35961         PR target/69804
35962         * toplev.c (process_options): Enable MPX with LSAN and UBSAN.
35963         * tree-chkp.c (chkp_walk_pointer_assignments): Verify that
35964         FIELD != NULL.
35965
35966 2017-03-10  Olivier Hainque  <hainque@adacore.com>
35967
35968         * tree-switch-conversion (array_value_type): Start by resetting
35969         candidate type to it's main variant.
35970
35971 2017-03-10  Jakub Jelinek  <jakub@redhat.com>
35972
35973         PR rtl-optimization/79909
35974         * combine.c (try_combine): Use simplify_replace_rtx on individual
35975         CALL_INSN_FUNCTION_USAGE elements instead of replace_rtx on copy_rtx
35976         of the whole CALL_INSN_FUNCTION_USAGE.
35977
35978         PR tree-optimization/79972
35979         * gimple-ssa-warn-alloca.c (alloca_call_type): Only call
35980         get_range_info on SSA_NAMEs.  Formatting fixes.
35981
35982 2017-03-10  Richard Biener  <rguenther@suse.de>
35983             Jakub Jelinek  <jakub@redhat.com>
35984
35985         PR tree-optimization/77975
35986         * tree-ssa-loop-niter.c (get_base_for): Allow phi argument from latch
35987         edge to be constant.
35988         (get_val_for): For constant x return it.  Formatting fix.
35989         (loop_niter_by_eval): Avoid pointless looping if the next iteration
35990         would use the same bases as the current one.
35991
35992 2017-03-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
35993
35994         * config/rs6000/rs6000.c (rs6000_gen_le_vsx_permute): Use rotate
35995         instead of vec_select for V1TImode.
35996         * conifg/rs6000/vsx.md (VSX_LE): Remove mode iterator that is no
35997         longer needed.
35998         (VSX_LE_128): Add V1TI to this mode iterator.
35999         (*vsx_le_perm_load_<mode>): Change to use VSX_D mode iterator.
36000         (*vsx_le_perm_store_<mode>): Likewise.
36001         (pre-reload splitter for VSX stores): Likewise.
36002         (post-reload splitter for VSX stores): Likewise.
36003         (*vsx_xxpermdi2_le_<mode>): Likewise.
36004         (*vsx_lxvd2x2_le_<mode>): Likewise.
36005         (*vsx_stxvd2x2_le_<mode>): Likewise.
36006
36007 2017-03-09  Michael Eager  <eager@eagercon.com>
36008
36009         Correct failures with --enable-checking=yes,rtl.
36010
36011         * config/microblaze/microblaze.c (microblaze_expand_shift):
36012         Replace GET_CODE test with CONST_INT_P and INTVAL test with
36013         test for const0_rtx.
36014         * config/microblaze/microblaze.md (ashlsi3_byone, ashrsi3_byone,
36015         lshrsi3_byone): Replace INTVAL with test for const1_rtx.
36016
36017 2017-03-09  Richard Biener  <rguenther@suse.de>
36018
36019         PR tree-optimization/79977
36020         * graphite-scop-detection.c (scop_detection::merge_sese):
36021         Handle the case of extra exits to blocks dominating the entry.
36022
36023 2017-03-09  Toma Tabacu  <toma.tabacu@imgtec.com>
36024
36025         * doc/sourcebuild.texi (Effective-Target Keywords, Other attributes):
36026         Document rdynamic.
36027
36028 2017-03-09  Vladimir Makarov  <vmakarov@redhat.com>
36029
36030         PR rtl-optimization/79949
36031         * lra-constraints.c (process_alt_operands): Check memory when
36032         trying to predict a cycle.  Print about the overall increase.
36033
36034 2017-03-09  Richard Biener  <rguenther@suse.de>
36035
36036         PR middle-end/79971
36037         * gimple-expr.c (useless_type_conversion_p): Preserve
36038         TYPE_SATURATING for fixed-point types.
36039
36040 2017-03-09  Richard Biener  <rguenther@suse.de>
36041
36042         PR ipa/79970
36043         * ipa-prop.c (ipa_modify_formal_parameters): Avoid changing
36044         alignment of BLKmode params.
36045
36046 2017-03-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36047
36048         PR target/79913
36049         * config/aarch64/iterators.md (VALL_F16_NO_V2Q): New mode iterator.
36050         (VALL_NO_V2Q): Likewise.
36051         (VDQF_DF): Delete.
36052         * config/aarch64/aarch64-simd.md
36053         (aarch64_dup_lane_<vswap_width_name><mode>): Use VALL_F16_NO_V2Q
36054         iterator.
36055         (*aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Use
36056         VALL_NO_V2Q mode iterator.
36057         (*aarch64_vgetfmulx<mode>): Use VDQF iterator.
36058
36059 2017-03-09  Martin Liska  <mliska@suse.cz>
36060
36061         PR tree-optimization/79631
36062         * tree-chkp-opt.c (chkp_is_constant_addr): Call
36063         tree_int_cst_sign_bit just for INTEGER constants.
36064
36065 2017-03-09  Martin Liska  <mliska@suse.cz>
36066
36067         PR target/65705
36068         PR target/69804
36069         * toplev.c (process_options): Disable -fcheck-pointer-bounds with
36070         sanitizers.
36071
36072 2017-03-09  Marek Polacek  <polacek@redhat.com>
36073
36074         PR c++/79672
36075         * tree.c (inchash::add_expr): Handle TREE_VEC.
36076
36077 2017-03-09  Martin Liska  <mliska@suse.cz>
36078
36079         PR ipa/79764
36080         (chkp_narrow_size_and_offset): New function.
36081         (chkp_parse_array_and_component_ref): Support BIT_FIELD_REF.
36082         (void chkp_parse_bit_field_ref): New function.
36083         (chkp_make_addressed_object_bounds): Add case for BIT_FIELD_REF.
36084         (chkp_process_stmt): Use chkp_parse_bit_field_ref.
36085
36086 2017-03-09  Martin Liska  <mliska@suse.cz>
36087
36088         PR ipa/79761
36089         * tree-chkp.c (chkp_get_bound_for_parm): Get bounds for a param.
36090         (chkp_find_bounds_1): Remove gcc_unreachable.
36091
36092 2017-03-09  Jakub Jelinek  <jakub@redhat.com>
36093
36094         PR sanitizer/79944
36095         * asan.c (get_mem_refs_of_builtin_call): For BUILT_IN_ATOMIC* and
36096         BUILT_IN_SYNC*, determine the access type from the size suffix and
36097         always build a MEM_REF with that type.  Handle forgotten
36098         BUILT_IN_SYNC_FETCH_AND_NAND_16 and BUILT_IN_SYNC_NAND_AND_FETCH_16.
36099
36100         PR target/79932
36101         * config/i386/avx512vlintrin.h (_mm256_cmpge_epi32_mask,
36102         _mm256_cmpge_epi64_mask, _mm256_cmpge_epu32_mask,
36103         _mm256_cmpge_epu64_mask, _mm256_cmple_epi32_mask,
36104         _mm256_cmple_epi64_mask, _mm256_cmple_epu32_mask,
36105         _mm256_cmple_epu64_mask, _mm256_cmplt_epi32_mask,
36106         _mm256_cmplt_epi64_mask, _mm256_cmplt_epu32_mask,
36107         _mm256_cmplt_epu64_mask, _mm256_cmpneq_epi32_mask,
36108         _mm256_cmpneq_epi64_mask, _mm256_cmpneq_epu32_mask,
36109         _mm256_cmpneq_epu64_mask, _mm256_mask_cmpge_epi32_mask,
36110         _mm256_mask_cmpge_epi64_mask, _mm256_mask_cmpge_epu32_mask,
36111         _mm256_mask_cmpge_epu64_mask, _mm256_mask_cmple_epi32_mask,
36112         _mm256_mask_cmple_epi64_mask, _mm256_mask_cmple_epu32_mask,
36113         _mm256_mask_cmple_epu64_mask, _mm256_mask_cmplt_epi32_mask,
36114         _mm256_mask_cmplt_epi64_mask, _mm256_mask_cmplt_epu32_mask,
36115         _mm256_mask_cmplt_epu64_mask, _mm256_mask_cmpneq_epi32_mask,
36116         _mm256_mask_cmpneq_epi64_mask, _mm256_mask_cmpneq_epu32_mask,
36117         _mm256_mask_cmpneq_epu64_mask, _mm_cmpge_epi32_mask,
36118         _mm_cmpge_epi64_mask, _mm_cmpge_epu32_mask, _mm_cmpge_epu64_mask,
36119         _mm_cmple_epi32_mask, _mm_cmple_epi64_mask, _mm_cmple_epu32_mask,
36120         _mm_cmple_epu64_mask, _mm_cmplt_epi32_mask, _mm_cmplt_epi64_mask,
36121         _mm_cmplt_epu32_mask, _mm_cmplt_epu64_mask, _mm_cmpneq_epi32_mask,
36122         _mm_cmpneq_epi64_mask, _mm_cmpneq_epu32_mask, _mm_cmpneq_epu64_mask,
36123         _mm_mask_cmpge_epi32_mask, _mm_mask_cmpge_epi64_mask,
36124         _mm_mask_cmpge_epu32_mask, _mm_mask_cmpge_epu64_mask,
36125         _mm_mask_cmple_epi32_mask, _mm_mask_cmple_epi64_mask,
36126         _mm_mask_cmple_epu32_mask, _mm_mask_cmple_epu64_mask,
36127         _mm_mask_cmplt_epi32_mask, _mm_mask_cmplt_epi64_mask,
36128         _mm_mask_cmplt_epu32_mask, _mm_mask_cmplt_epu64_mask,
36129         _mm_mask_cmpneq_epi32_mask, _mm_mask_cmpneq_epi64_mask,
36130         _mm_mask_cmpneq_epu32_mask, _mm_mask_cmpneq_epu64_mask): Move
36131         definitions outside of __OPTIMIZE__ guarded section.
36132
36133         PR target/79932
36134         * config/i386/avx512bwintrin.h (_mm512_packs_epi32,
36135         _mm512_maskz_packs_epi32, _mm512_mask_packs_epi32,
36136         _mm512_packus_epi32, _mm512_maskz_packus_epi32,
36137         _mm512_mask_packus_epi32): Move definitions outside of __OPTIMIZE__
36138         guarded section.
36139
36140 2017-03-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
36141
36142         * config/s390/vx-builtins.md ("vfee<mode>", "vfeez<mode>")
36143         ("vfenez<mode>"): Add missing constraints.
36144
36145 2017-03-08  Martin Sebor  <msebor@redhat.com>
36146
36147         PR target/79928
36148         * config/nds32/nds32.c (nds32_option_override):
36149         Fix misspelled diagnostic.
36150
36151 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
36152
36153         PR c/79940
36154         * gimplify.c (gimplify_omp_for): Replace index var in outer
36155         taskloop statement with an artificial variable and add
36156         OMP_CLAUSE_PRIVATE clause for it.
36157
36158 2017-03-08  Richard Biener  <rguenther@suse.de>
36159
36160         PR tree-optimization/79955
36161         * tree-ssa-uninit.c (warn_uninitialized_vars): Do not warn
36162         for accesses that are completely outside of the variable.
36163
36164 2017-03-08  Andrew Haley  <aph@redhat.com>
36165
36166         PR tree-optimization/79943
36167         * tree-ssa-loop-split.c (compute_new_first_bound): When
36168         calculating the new upper bound, (END-BEG) should be added, not
36169         subtracted.
36170
36171 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
36172
36173         * config/avr/avr.md (setmemhi): Make sure match_dup
36174         operand number comes before match_scratch.
36175
36176 2017-03-08  Richard Biener  <rguenther@suse.de>
36177
36178         PR tree-optimization/79920
36179         * tree-vect-slp.c (vect_create_mask_and_perm): Remove and inline
36180         with ncopies == 1 to ...
36181         (vect_transform_slp_perm_load): ... here.  Properly compute
36182         all element loads by iterating VF times over the group.  Do
36183         not handle ncopies (computed in a broken way) in
36184         vect_create_mask_and_perm.
36185
36186 2017-03-08  Jakub Jelinek  <jakub@redhat.com>
36187
36188         PR sanitizer/79904
36189         * internal-fn.c (expand_vector_ubsan_overflow): If arg0 or arg1
36190         is a uniform vector, use uniform_vector_p return value instead of
36191         building ARRAY_REF on folded VIEW_CONVERT_EXPR to array type.
36192
36193 2017-03-07  Marek Polacek  <polacek@redhat.com>
36194
36195         PR middle-end/79809
36196         * gimple-ssa-warn-alloca.c (pass_walloca::gate): Use HOST_WIDE_INT.
36197         (alloca_call_type): Likewise.
36198
36199 2017-03-07  Martin Liska  <mliska@suse.cz>
36200
36201         * gcov.c (process_args): Put comment to correct location.
36202
36203 2017-03-07  Martin Liska  <mliska@suse.cz>
36204
36205         PR middle-end/68270
36206         * tree-chkp.c (chkp_may_narrow_to_field): Add new argument ref.
36207         Use array_at_struct_end_p instead of DECL_CHAIN (field).
36208         (chkp_narrow_bounds_for_field): Likewise.
36209         (chkp_parse_array_and_component_ref): Pass one more argument to
36210         call.
36211
36212 2017-03-07  Richard Biener  <rguenther@suse.de>
36213
36214         * tree-vect-loop-manip.c (slpeel_add_loop_guard): Preserve
36215         preheaders.
36216
36217 2017-03-07  Segher Boessenkool  <segher@kernel.crashing.org>
36218
36219         * config/i386/i386.c (ix86_local_alignment): Align most aggregates
36220         of 16 bytes and more to 16 bytes, not those of 16 bits and more.
36221
36222 2017-03-07  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36223
36224         PR c/79855
36225         * params.def (PARAM_STORE_MERGING_ALLOW_UNALIGNED): Add full stop
36226         to end of description.
36227         (PARAM_MAX_STORES_TO_MERGE): Likewise.
36228
36229 2017-03-07  Jakub Jelinek  <jakub@redhat.com>
36230
36231         PR rtl-optimization/79901
36232         * config/i386/sse.md (*avx512bw_<code><mode>3<mask_name>): Renamed to
36233         ...
36234         (*avx512f_<code><mode>3<mask_name>): ... this.
36235         (<code><mode>3 with maxmin code iterator): Use VI8_AVX2_AVX512F
36236         iterator instead of VI8_AVX2_AVX512BW.
36237
36238         PR rtl-optimization/79901
36239         * expr.c (expand_expr_real_2): For vector MIN/MAX, if there is no
36240         min/max expander, expand it using expand_vec_cond_expr.
36241
36242         PR sanitizer/79897
36243         * ubsan.c (ubsan_encode_value): Call mark_addressable on the
36244         temporary.
36245
36246 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
36247
36248         PR c++/79821
36249         * dwarf2out.h (dw_vec_const): Change array type from unsigned char *
36250         to void * for PCH reasons.
36251         * dwarf2out.c (output_loc_operands, output_die): Cast
36252         v.val_vec.array to unsigned char *.
36253
36254 2017-03-06  John David Anglin  <danglin@gcc.gnu.org>
36255
36256         PR target/77850
36257         * config/pa/pa-64.h (PAD_VARARGS_DOWN): Don't pad down complex and
36258         vector types.
36259
36260 2017-03-06  Vladimir Makarov  <vmakarov@redhat.com>
36261
36262         PR rtl-optimization/79571
36263         * lra-constraints.c (process_alt_operands): Calculate static
36264         reject and subtract it from overall when only addresses will be
36265         reloaded.
36266
36267 2017-03-06  Julia Koval  <julia.koval@intel.com>
36268
36269         PR target/79793
36270         * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): Set
36271         incoming stack boundary to 128 for 64-bit targets.
36272
36273 2017-03-06  Richard Biener  <rguenther@suse.de>
36274
36275         PR tree-optimization/79894
36276         * tree-vectorizer.c (vectorize_loops): Set loop_vectorized_call
36277         to NULL after folding it.
36278
36279 2017-03-06  Richard Biener  <rguenther@suse.de>
36280
36281         PR tree-optimization/79824
36282         * tree-vect-stmts.c (get_group_load_store_type): Fix alignment
36283         check disabling peeling for gaps.
36284
36285 2017-03-06  Toma Tabacu  <toma.tabacu@imgtec.com>
36286
36287         * doc/sourcebuild.texi (Effective-Target Keywords, Environment
36288         attributes): Document gettimeofday.
36289
36290 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
36291
36292         * config/s390/s390.c (s390_option_override_internal): Set
36293         PARAM_MIN_VECT_LOOP_BOUND
36294
36295 2017-03-06  Robin Dapp  <rdapp@linux.vnet.ibm.com>
36296
36297         * config/s390/s390.c (s390_asm_output_function_label): Use nopr %r0.
36298         * config/s390/s390.md: Likewise.
36299
36300 2017-03-06  Jakub Jelinek  <jakub@redhat.com>
36301
36302         PR target/79812
36303         * config/i386/sse.md (VI8F_256_512): Remove mode iterator.
36304         (<avx2_avx512>_perm<mode>): Rename to ...
36305         (avx2_perm<mode>): ... this.  Use VI8F_256 iterator instead
36306         of VI8F_256_512.
36307         (<avx512>_perm<mode>_mask): Rename to ...
36308         (avx512vl_perm<mode>_mask): ... this.  Use VI8F_256 iterator instead
36309         of VI8F_256_512.
36310         (<avx2_avx512>_perm<mode>_1<mask_name>): Rename to ...
36311         (avx2_perm<mode>_1<mask_name): ... this.  Use VI8F_256 iterator
36312         instead of VI8F_256_512.
36313         (avx512f_perm<mode>): New define_expand.
36314         (avx512f_perm<mode>_mask): Likewise.
36315         (avx512f_perm<mode>_1<mask_name>): New define_insn.
36316         (<avx512>_vec_dup<mode>_1): Fix up vec_select mode.
36317
36318 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
36319
36320         * config/mips/mips-msa.md (msa_fmax_a_<msafmt>, msa_fmin_a_<msafmt>,
36321         msa_max_a_<msafmt>, msa_min_a_<msafmt>): Introduce mode interator for
36322         if_then_else.
36323         (smin<mode>3, smax<mode>3): Change operand print code from 'B' to 'E'.
36324
36325 2017-03-06  Martin Liska  <mliska@suse.cz>
36326
36327         PR sanitize/79783
36328         * asan.c (asan_expand_poison_ifn): Do not expand ASAN_POISON
36329         when having a SSA NAME w/o VAR_DECL assigned to it.
36330
36331 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
36332
36333         * config/mips/mips-msa.md (msa_dotp_<su>_d, msa_dpadd_<su>_d,
36334         msa_dpsub_<su>_d): Fix MODE for vec_select.
36335
36336 2017-03-06  Prachi Godbole  <prachi.godbole@imgtec.com>
36337
36338         * config/mips/mips.c (mips_gen_const_int_vector): Change type of last
36339         argument.
36340         * config/mips/mips-protos.h (mips_gen_const_int_vector): Likewise.
36341
36342 2017-03-06  Richard Biener  <rguenther@suse.de>
36343
36344         * lto-streamer.c (lto_check_version): Use %qs in diagnostics.
36345         * plugin.c (register_plugin_info): Likewise.
36346         * tree-chkp.c (chkp_make_static_const_bounds): Likewise.
36347
36348 2017-03-05  Jakub Jelinek  <jakub@redhat.com>
36349
36350         * config/i386/sse.md (sse_storehps, sse_storelps,
36351         avx_<castmode><avxsizesuffix>_<castmode>,
36352         avx512f_<castmode><avxsizesuffix>_<castmode>,
36353         avx512f_<castmode><avxsizesuffix>_256<castmode>): Require
36354         in condition that at least one operand is not a MEM.
36355
36356 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
36357
36358         PR middle-end/79805
36359         * internal-fn.def (ATOMIC_BIT_TEST_AND_SET, ATOMIC_BIT_TEST_AND_RESET,
36360         ATOMIC_BIT_TEST_AND_COMPLEMENT, ATOMIC_COMPARE_EXCHANGE): Remove
36361         ECF_NOTHROW.
36362         * gimple-fold.c (fold_builtin_atomic_compare_exchange): Set
36363         gimple_call_nothrow_p flag based on whether original builtin can throw.
36364         If it can, emit following stmts on the fallthrough edge.
36365         * tree-ssa-ccp.c (optimize_atomic_bit_test_and): Similarly, except
36366         don't create new bb if inserting just debug stmts on the edge, try to
36367         insert them on the fallthru bb or just reset debug stmts.
36368
36369 2017-03-03  Segher Boesssenkool  <segher@kernel.crashing.org>
36370
36371         PR target/43763
36372         * config/rs6000/rs6000.c (rs6000_final_prescan_insn): Save and
36373         restore recog_data (including the operand rtxes inside it) around
36374         the call to get_insn_template.
36375
36376 2017-03-03  Martin Sebor  <msebor@redhat.com>
36377
36378         PR tree-optimization/79699
36379         * context.c (context::~context): Free MPFR caches to avoid
36380         a memory leak on program exit.
36381
36382 2017-03-03  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
36383
36384         * config/aarch64/aarch64.c (aarch64_float_const_representable_p):
36385         Use wide_int::ulow () instead of .elt (0).
36386
36387 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
36388
36389         * config/i386/i386.md (*pushtf): Change *roF constraint to *roC.
36390         (*pushxf): Limit oF constraint to 32bit targets and add oC
36391         constraint for 64bit targets.
36392         (pushxf splitter): Use PUSH_ROUNDING to calculate stack adjustment.
36393         (*pushdf): Change rmF constraint to rmC.
36394
36395 2017-03-03  Martin Liska  <mliska@suse.cz>
36396
36397         * tree-ssa-loop-prefetch.c (pass_loop_prefetch::execute):
36398         Remove unused variable.
36399
36400 2017-03-03  Jakub Jelinek  <jakub@redhat.com>
36401
36402         PR target/79807
36403         * config/i386/i386.c (ix86_expand_multi_arg_builtin): If target
36404         is a memory operand, increase num_memory.
36405         (ix86_expand_args_builtin): Likewise.
36406
36407 2017-03-03  Jan Hubicka  <jh@suse.cz>
36408
36409         PR lto/79760
36410         * ipa-devirt.c (maybe_record_node): Properly handle
36411         __cxa_pure_virtual visibility.
36412
36413 2017-03-03  Martin Liska  <mliska@suse.cz>
36414
36415         PR tree-optimization/79803
36416         * tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Remove
36417         assert.
36418         (pass_loop_prefetch::execute): Disabled optimization if an
36419         assumption about L1 cache size is not met.
36420
36421 2017-03-03  Martin Liska  <mliska@suse.cz>
36422
36423         PR rtl-optimization/79574
36424         * gcse.c (struct gcse_expr): Use HOST_WIDE_INT instead of int.
36425         (hash_scan_set): Likewise.
36426         (dump_hash_table): Likewise.
36427         (hoist_code): Likewise.
36428
36429 2017-03-03  Richard Biener  <rguenther@suse.de>
36430
36431         * fixed-value.c (fixed_from_string): Restore use of elt (1)
36432         in place of uhigh ().
36433         (fixed_convert_from_real): Likewise.
36434
36435 2017-03-03  Uros Bizjak  <ubizjak@gmail.com>
36436
36437         PR target/79514
36438         * config/i386/i386.md (*pushxf_rounded): Use Pmode instead of DImode.
36439
36440 2017-03-03  Richard Biener  <rguenther@suse.de>
36441
36442         PR middle-end/79818
36443         * match.pd ( X +- C1 CMP C2 -> X CMP C2 -+ C1): Add missing
36444         TYPE_OVERFLOW_UNDEFINED check.
36445
36446 2017-03-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
36447
36448         * config/rs6000/vector.md (vector_ne_<mode>_p): Correct operand
36449         numbers.
36450         (vector_ae_<mode>_p): Likewise.
36451         (vector_nez_<mode>_p): Likewise.
36452         (vector_ne_v2di_p): Likewise.
36453         (vector_ae_v2di_p): Likewise.
36454         (vector_ne_<mode>_p): Likewise.
36455         * config/rs6000/vsx.md (vsx_tsqrt<mode>2_fg): Correct operand
36456         numbers.
36457         (vsx_tsqrt<mode>2_fe): Likewise.
36458
36459 2017-03-02  Uros Bizjak  <ubizjak@gmail.com>
36460
36461         PR target/79514
36462         * config/i386/i386.md (*pushxf_rounded): New insn_and_split pattern.
36463
36464 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
36465
36466         PR rtl-optimization/79780
36467         * cprop.c (one_cprop_pass): When second and further conditional trap
36468         in a single basic block is turned into an unconditional trap, turn it
36469         into a deleted note to avoid RTL verification failures.
36470
36471 2017-03-02  Richard Biener  <rguenther@suse.de>
36472
36473         * fold-const.c (const_binop): Use ulow () instead of elt (0).
36474
36475 2017-03-02  Richard Biener  <rguenther@suse.de>
36476
36477         PR tree-optimization/79345
36478         PR c++/42000
36479         * tree-ssa-alias.c (walk_aliased_vdefs_1): Take a limit
36480         param and abort the walk, returning -1 if it is hit.
36481         (walk_aliased_vdefs): Take a limit param and pass it on.
36482         * tree-ssa-alias.h (walk_aliased_vdefs): Add a limit param,
36483         defaulting to 0 and return a signed int.
36484         * tree-ssa-uninit.c (struct check_defs_data): New struct.
36485         (check_defs): New helper.
36486         (warn_uninitialized_vars): Use walk_aliased_vdefs to warn
36487         about uninitialized memory.
36488         * fixed-value.c (fixed_from_string): Use ulow/uhigh to avoid
36489         bogus uninitialized warning.
36490         (fixed_convert_from_real): Likewise.
36491
36492 2017-03-02  Bin Cheng  <bin.cheng@arm.com>
36493
36494         PR tree-optimization/66768
36495         * tree-ssa-loop-ivopts.c (find_interesting_uses_address): Skip addr
36496         iv_use if base object can't be determined.
36497
36498 2017-03-02  Jakub Jelinek  <jakub@redhat.com>
36499
36500         PR tree-optimization/79345
36501         * gensupport.h (struct pattern_stats): Add min_scratch_opno field.
36502         * gensupport.c (get_pattern_stats_1) <case MATCH_SCRATCH>: Update it.
36503         (get_pattern_stats): Initialize it.
36504         * genemit.c (gen_expand): Verify match_scratch numbers come after
36505         match_operand/match_dup numbers.
36506         * config/i386/i386.md (<s>mul<mode>3_highpart): Swap match_dup and
36507         match_scratch numbers.
36508         * config/i386/sse.md (avx2_gathersi<mode>, avx2_gatherdi<mode>):
36509         Likewise.
36510         * config/s390/s390.md (trunctdsd2): Likewise.
36511
36512 2017-03-02  Richard Biener  <rguenther@suse.de>
36513
36514         * wide-int.h (wide_int_storage::operator=): Implement in terms
36515         of wi::copy.
36516
36517 2017-03-02  Richard Biener  <rguenther@suse.de>
36518
36519         PR tree-optimization/79777
36520         * tree-ssa-pre.c (eliminate_insert): Give up if we simplify
36521         the to insert expression to sth existing.
36522
36523 2017-03-01  Martin Sebor  <msebor@redhat.com>
36524
36525         PR middle-end/79692
36526         * gimple-ssa-sprintf.c
36527         (directive::known_width_and_precision): New function.
36528         (format_integer): Use it.
36529         (get_mpfr_format_length): Consider the full range of precision
36530         when computing %g output with the # flag.  Set the likely byte
36531         count to 3 rather than 1 when precision is indeterminate.
36532         (format_floating): Correct the lower bound of precision.
36533
36534 2017-03-01  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
36535
36536         * doc/invoke.texi: Document default code model for 64-bit Linux.
36537
36538 2017-03-01  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
36539
36540         PR target/79752
36541         * config/rs6000/rs6000.md (peephole2 for udiv/umod): Should emit
36542         udiv rather than div since input pattern is unsigned.
36543
36544 2017-03-01  Uros Bizjak  <ubizjak@gmail.com>
36545
36546         * config/i386/i386.c (print_reg): Warn for values of
36547         unsupported size in integer register.
36548
36549 2017-03-01  Michael Meissner  <meissner@linux.vnet.ibm.com>
36550
36551         PR target/79439
36552         * config/rs6000/predicates.md (current_file_function_operand): Do
36553         not allow self calls to be local if the function is replaceable.
36554
36555 2017-03-01  Kelvin Nilsen  <kelvin@gcc.gnu.org>
36556
36557         PR target/79395
36558         * config/rs6000/altivec.h (vec_ctz and others): Change the
36559         preprocessor macro that controls conditional compilation from
36560         _ARCH_PWR9 to __POWER9_VECTOR__.
36561         (vec_all_ne): Change parameterization of __altivec_scalar_pred
36562         macro expansion under preprocessor #ifdef __POWER9_VECTOR__
36563         control (instead of _ARCH_PWR9 control) so that template
36564         definition uses power9-specific function.
36565         (vec_any_eq): Likewise.
36566         (vec_all_ne): Change macro definition to use a power9-specific
36567         expansion under #ifdef __POWER9_VECTOR__ control (instead of
36568         _ARCH_PWR9 control).
36569         (vec_any_eq) Likewise.
36570         * config/rs6000/rs6000-builtin.def (CMPNEF): Remove BU_P9V_AV_2
36571         expansion for CMPNEF to remove support for xvcmpnesp instruction.
36572         (CMPNED): Remove BU_P9V_AV2 expansion for CMPNED to remove
36573         support for xvcmpnedp instruction.
36574         (VCMPNEB_P): Replace BU_P9V_AV_P macro expansion with BU_P9V_AV_2
36575         macro expansion so that Power9 implementation of vec_all_ne does
36576         not use the AltiVec predicate framework.
36577         (VCMPNEH_P): Likewise.
36578         (VCMPNEW_P): Likewise.
36579         (VCMPNED_P): Likewise.
36580         (VCMPNEFP_P): Likewise.
36581         (VCMPNEDP_P): Likewise.
36582         (VCMPAEB_P): Add BU_P9V_AV_2 macro expansion to change
36583         implementation of vec_any_eq to not use AltiVec predicate
36584         framework.
36585         (VCMPAEH_P): Likewise.
36586         (VCMPAEW_P): Likewise.
36587         (VCMPAED_P): Likewise.
36588         (VCMPAEFP_P): Likewise.
36589         (VCMPAEDP_P): Likewise.
36590         (VCMPNE_P): Replace BU_P9V_OVERLOAD_P macro expansion with
36591         BU_P9V_OVERLOAD_2 so that Power9 implementation of vec_all_ne does
36592         not use the AltiVec predicate framework.
36593         (VCMPAE_P): Add BU_P9V_OVERLOAD_2 macro to change implementation
36594         of vec_any_eq to not use AltiVec predicate framework.
36595         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Add
36596         support for predefined __POWER9_VECTOR__ macro to indicate that
36597         Power9 instruction selection is enabled.
36598         (altivec_overloaded_builtins): Remove extraneous
36599         ALTIVEC_BUILTIN_VEC_CMPNE entry for overloaded
36600         function argument types RS6000_BTI_bool_V16QI and
36601         RS6000_BTI_bool_V16QI.  Remove erroneous ALTIVEC_BUILTIN_VEC_CMPNE
36602         entry for overloaded function argument types RS6000_BTI_bool_V4SI
36603         andRS6000_BTI_bool_V4SI, mapping to P9V_BUILTIN_CMPNEB.  Remove
36604         two entries mapping to P9V_BUITIN_CMPNED and one entry mapping to
36605         P9V_BUILTIN_CMPNEF to force use of instructions not specific to
36606         Power9 for implementations of vec_cmpne.  Change the signature for
36607         all definitions of the overloaded P9V_BUILTIN_VEC_CMPNE_P function
36608         (representing vec_all_ne) to remove the previously described first
36609         argument of type RS6000_BTI_INTSI, as this was an artifact of
36610         reliance on the AltiVec predicate framework, which is no longer
36611         used in the implementation of these functions.  Add
36612         P9V_BUILTIN_VEC_VCMPAE_P entries (representing the vec_anyeq
36613         function) to match all of the P9V_BUILTIN_VEC_VCMNE_P entries
36614         since, unlike the AltiVec predicate framework implementation, we
36615         do not share function descriptors between vec_alle and vec_anyeq.
36616         (altivec_resolve_overloaded_builtin): Add SFmode and DFmode to the
36617         set of modes that receive special treatment even when
36618         TARGET_P9_VECTOR is true.  The special treatment emits code that
36619         does not depend on Power9 instructions.
36620         * config/rs6000/vector.md (vector_ne_<mode>_p): Change this
36621         define_expand to not rely on AltiVec predicate framework.
36622         (vector_ae_<mode>p): New define_expand to represent vec_any_eq
36623         function.
36624         (vector_ne_v2di_p): Change this define_expand to not rely on
36625         AltiVec predicate framework.
36626         (vector_ae_v2di_p): New define_expand to represent vec_any_eq
36627         function.
36628         (vector_ne_<mode>_p): Change this define_expand to not rely on
36629         AltiVec predicate framework.
36630         (vector_ae_<mode>p): New define_expand to represent vec_any_eq
36631         function.
36632         * config/rs6000/vsx.md (*vsx_ne_<mode>_p): For modes VSX_EXTRACT_I
36633         (V16QI, V8HI, V4SI), correct a typo in the code emitted for this
36634         define_insn pattern.
36635         (*vsx_ne_<mode>_p): For modes VSX_F (V4SF and V2DF), remove this
36636         define_insn pattern because the xvcmpne<VSs>. instruction is not
36637         supported.
36638         (vcmpne<VSs>): Remove this define_insn because xvcmpne<VSs>
36639         instruction is not supported.
36640
36641 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
36642
36643         * config/nvptx/nvptx.c: Include intl.h.
36644
36645 2017-03-01  Martin Jambor  <mjambor@suse.cz>
36646
36647         PR lto/78140
36648         * ipa-prop.h (ipa_bits): Removed field known.
36649         (ipa_jump_func): Removed field vr_known.  Changed fields bits and m_vr
36650         to pointers.  Adjusted their comments to warn about their sharing.
36651         (ipcp_transformation_summary): Change bits to a vector of pointers.
36652         (ipa_check_create_edge_args): Moved to ipa-prop.c, declare.
36653         (ipa_get_ipa_bits_for_value): Declare.
36654         * tree-vrp.h (value_range): Mark as GTY((for_user)).
36655         * ipa-prop.c (ipa_bit_ggc_hash_traits): New.
36656         (ipa_bits_hash_table): Likewise.
36657         (ipa_vr_ggc_hash_traits): Likewise.
36658         (ipa_vr_hash_table): Likewise.
36659         (ipa_print_node_jump_functions_for_edge): Adjust for bits and m_vr
36660         being pointers and vr_known being removed.
36661         (ipa_set_jf_unknown): Likewise.
36662         (ipa_get_ipa_bits_for_value): New function.
36663         (ipa_set_jfunc_bits): Likewise.
36664         (ipa_get_value_range): New overloaded functions.
36665         (ipa_set_jfunc_vr): Likewise.
36666         (ipa_compute_jump_functions_for_edge): Use the above functions to
36667         construct bits and vr parts of jump functions.
36668         (ipa_check_create_edge_args): Move here from ipa-prop.h, also allocate
36669         ipa_bits_hash_table and ipa_vr_hash_table if they do not already
36670         exist.
36671         (ipcp_grow_transformations_if_necessary): Also allocate
36672         ipa_bits_hash_table and ipa_vr_hash_table if they do not already
36673         exist.
36674         (ipa_node_params_t::duplicate): Do not copy bits, just pointers to
36675         them.  Fix too long lines.
36676         (ipa_write_jump_function): Adjust for bits and m_vr being pointers and
36677         vr_known being removed.
36678         (ipa_read_jump_function): Use new setter functions to construct bits
36679         and vr parts of jump functions or set them to NULL.
36680         (write_ipcp_transformation_info): Adjust for bits being pointers.
36681         (read_ipcp_transformation_info): Likewise.
36682         (ipcp_update_bits): Likewise.  Fix excessively long lines a trailing
36683         space.
36684         Include gt-ipa-prop.h.
36685         * ipa-cp.c (propagate_bits_across_jump_function): Adjust for bits
36686         being pointers.
36687         (ipcp_store_bits_results): Likewise.
36688         (propagate_vr_across_jump_function): Adjust for m_vr being a pointer.
36689         Do not write to existing jump functions but use a temporary instead.
36690
36691 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
36692
36693         PR c++/79681
36694         * fold-const.c (make_bit_field_ref): If orig_inner is COMPONENT_REF,
36695         attempt to use its first operand as BIT_FIELD_REF base.
36696
36697 2017-03-01  Richard Biener  <rguenther@suse.de>
36698
36699         PR middle-end/79721
36700         * tree-chrec.c (chrec_evaluate): Perform computation of Newtons
36701         interpolating formula in wrapping arithmetic.
36702         (chrec_apply): Convert chrec_evaluate return value to wanted type.
36703
36704 2017-03-01  Jakub Jelinek  <jakub@redhat.com>
36705
36706         PR tree-optimization/79734
36707         * tree-vect-generic.c (expand_vector_condition): Optimize
36708         AVX512 vector boolean VEC_COND_EXPRs into bitwise operations.
36709         Handle VEC_COND_EXPR where comparison has different inner width from
36710         type's inner width.
36711
36712 2017-02-28  Sandra Loosemore  <sandra@codesourcery.com>
36713
36714         * doc/invoke.texi (ARC Options): Copy-edit to fix punctuation,
36715         markup, and similar issues.  Remove @opindex entries for things
36716         that aren't options.  Add missing -mmpy-option entries.
36717
36718 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
36719
36720         PR tree-optimization/79737
36721         * gimple-ssa-store-merging.c (encode_tree_to_bitpos): If bitlen is
36722         a multiple of BITS_PER_UNIT and !BYTES_BIG_ENDIAN, clear
36723         tmpbuf[byte_size - 1].  Call natice_encode_expr with byte_size - 1
36724         instead of byte_size.  Formatting fix.
36725         (shift_bytes_in_array_right): Formatting fix.
36726
36727 2017-02-28  Eric Botcazou  <ebotcazou@adacore.com>
36728
36729         PR target/79749
36730         * config/sparc/sparc.c (sparc_frame_pointer_required): Add missing
36731         condition on optimize for the leaf function test.
36732
36733 2017-02-28  Martin Liska  <mliska@suse.cz>
36734
36735         PR lto/79625
36736         * read-rtl-function.c (function_reader::handle_unknown_directive):
36737         Bail out when one uses -flto.
36738
36739 2017-02-28  Martin Liska  <mliska@suse.cz>
36740
36741         * common.opt: Replace space with tabular for options of <number>
36742         type.
36743         * config/i386/i386.opt: Show <number> value for
36744         -mlarge-data-threshold.
36745         * opts.c (print_filtered_help): Do not display number in hexadecimal
36746         format.
36747
36748 2017-02-28  Martin Liska  <mliska@suse.cz>
36749
36750         * common.opt: Fix --help=option -Q for options which are of
36751         an enum type.
36752
36753 2017-02-28  Uros Bizjak  <ubizjak@gmail.com>
36754
36755         * config/i386/i386.c (print_reg): Error out for values
36756         of 8-bit size in invalid integer register.
36757
36758 2017-02-28  Martin Sebor  <msebor@redhat.com>
36759
36760         PR tree-optimization/79691
36761         * passes.def (pass_all_optimizations_g): Enable pass_sprintf_length.
36762
36763 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
36764
36765         PR target/79729
36766         * config/i386/i386.c (ix86_print_operand) <case 'R'>: Replace
36767         gcc_unreachable with output_operand_lossage.
36768
36769 2017-02-28  Richard Biener  <rguenther@suse.de>
36770
36771         PR tree-optimization/79740
36772         * tree-ssa-sccvn.c (vn_nary_op_insert_into): Allow redundant
36773         inserts.
36774         (visit_nary_op): Insert the nary into the hashtable if we
36775         pattern-matched sth.
36776         * tree-ssa-pre.c (eliminate_insert): Robustify.
36777
36778 2017-02-28  Richard Biener  <rguenther@suse.de>
36779
36780         PR middle-end/79731
36781         * fold-const.c (decode_field_reference): Reject out-of-bound
36782         accesses.
36783
36784 2017-02-28  Jakub Jelinek  <jakub@redhat.com>
36785
36786         * config/i386/i386.c: Include intl.h.
36787         (ix86_option_override_internal): Use cond ? G_("...") : G_("...")
36788         instead of just cond ? "..." : "...".
36789         * config/nvptx/nvptx.c (nvptx_goacc_validate_dims): Likewise.
36790         * coverage.c (read_counts_file): Likewise.
36791         * omp-offload.c: Include intl.h.
36792         (oacc_loop_fixed_partitions): Use cond ? G_("...") : G_("...") instead
36793         of just cond ? "..." : "...".
36794         * gcov.c (read_count_file): Use cond ? N_("...") : N_("...") instead
36795         of just cond ? "..." : "...".
36796
36797 2017-02-28  Richard Earnshaw  <rearnsha@arm.com>
36798
36799         PR target/79742
36800         * config/arm/parsecpu.awk (gen_data): Set tuning target to 'tune for'
36801         entry, if present.
36802         * config/arm/arm-cpus.in (cortex-m0plus.small-multiply): Correct
36803         'tune for' CPU name.
36804         * config/arm/arm-cpu-data.h: Regenerated.
36805
36806 2017-02-28  Richard Biener  <rguenther@suse.de>
36807
36808         PR tree-optimization/79732
36809         * tree-inline.c (expand_call_inline): Do not shadow var.
36810
36811 2017-02-28  Richard Biener  <rguenther@suse.de>
36812
36813         PR tree-optimization/79723
36814         * tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): Preserve
36815         address-space properly.
36816
36817 2017-02-28  Thomas Schwinge  <thomas@codesourcery.com>
36818
36819         * doc/optinfo.texi (Optimization groups): Fix option used for
36820         OPTGROUP_ALL.
36821         * doc/invoke.texi (-fopt-info): Document "omp".
36822         * dumpfile.h: Sort OPTGROUP_OMP before OPTGROUP_VEC.
36823         (OPTGROUP_ALL): Add OPTGROUP_OMP.
36824         * hsa-gen.c (pass_data_gen_hsail): Use OPTGROUP_OMP.
36825         * ipa-hsa.c (pass_data_ipa_hsa): Likewise.
36826         * omp-simd-clone.c (pass_data_omp_simd_clone): Likewise.
36827
36828         * dumpfile.h (OPTGROUP_OPENMP): Rename to OPTGROUP_OMP.  Adjust
36829         all users.
36830         * dumpfile.c (optgroup_options): Instead of "openmp", associate
36831         OPTGROUP_OMP with "omp".
36832
36833 2017-02-27  Pat Haugen  <pthaugen@us.ibm.com>
36834
36835         PR target/79544
36836         * config/rs6000/rs6000-c.c (struct altivec_builtin_types): Use VSRAD
36837         for arithmetic shift of unsigned V2DI.
36838
36839 2017-02-27  Claudiu Zissulescu  <claziss@synopsys.com>
36840
36841         * config.gcc (arc*-): Clean up, use arc/big.h, arc/elf.h, and
36842         arc/linux.h headers.
36843         * config/arc/arc.h (TARGET_OS_CPP_BUILTINS): Remove.
36844         (LINK_SPEC): Likewise.
36845         (ARC_TLS_EXTRA_START_SPEC): Likewise.
36846         (EXTRA_SPECS): Likewise.
36847         (STARTFILE_SPEC): Likewise.
36848         (ENDFILE_SPEC): Likewise.
36849         (LIB_SPEC): Likewise.
36850         (TARGET_SDATA_DEFAULT): Likewise.
36851         (TARGET_MMEDIUM_CALLS_DEFAULT): Likewise.
36852         (MULTILIB_DEFAULTS): Likewise.
36853         (DWARF2_UNWIND_INFO): Likewise.
36854         * config/arc/big.h: New file.
36855         * config/arc/elf.h: Likewise.
36856         * config/arc/linux.h: Likewise.
36857         * config/arc/t-uClibc: Remove.
36858
36859 2017-02-27  Bin Cheng  <bin.cheng@arm.com>
36860
36861         PR tree-optimization/77536
36862         * tree-ssa-loop-manip.c (niter_for_unrolled_loop): New function.
36863         (tree_transform_and_unroll_loop): Use above function to compute the
36864         estimated niter of unrolled loop and use it when scaling profile.
36865         Also use count info rather than frequency if it's non-zero.
36866         * tree-ssa-loop-manip.h niter_for_unrolled_loop(): New declaration.
36867         * tree-vect-loop.c (scale_profile_for_vect_loop): New function.
36868         (vect_transform_loop): Call above function.
36869
36870 2017-02-27  Richard Biener  <rguenther@suse.de>
36871
36872         PR tree-optimization/45397
36873         * tree-ssa-pre.c (eliminate_insert): Handle BIT_AND_EXPR.
36874         * tree-ssa-sccvn.c (valueized_wider_op): New helper.
36875         (visit_nary_op): Add pattern matching for CSEing sign-changed
36876         or truncated operations with wider ones.
36877
36878 2017-02-27  Richard Biener  <rguenther@suse.de>
36879
36880         PR tree-optimization/79690
36881         * tree-vect-stmts.c (vectorizable_store): Use vector type
36882         built from the DR with address-space.
36883
36884 2017-02-26  Gerald Pfeifer  <gerald@pfeifer.com>
36885
36886         * doc/invoke.texi (Optimize Options): Refine the description
36887         of asan-use-after-return.
36888
36889 2017-02-25  Alan Modra  <amodra@gmail.com>
36890
36891         PR rtl-optimization/79584
36892         * lra-constraints.c (base_to_reg): Reload ad->base, the entire
36893         base, not ad->base_term, the reg within base.  Remove assertion
36894         that ad->base == ad->base_term.  Replace gen_int_mode using
36895         bogus mode with const0_rtx.
36896
36897 2017-02-25  Jakub Jelinek  <jakub@redhat.com>
36898
36899         PR middle-end/79396
36900         * tree-eh.c (operation_could_trap_p, stmt_could_throw_1_p): Handle
36901         FMA_EXPR like tcc_binary or tcc_unary.
36902
36903         * tree-ssa-loop-niter.c (number_of_iterations_exit): Simplify warning.
36904
36905         PR debug/77589
36906         * dwarf2out.c (struct dw_loc_list_struct): Add noted_variable_value
36907         bitfield.
36908         (size_of_loc_descr): Handle DW_OP_GNU_variable_value.
36909         (output_loc_operands): Handle DW_OP_call_ref and
36910         DW_OP_GNU_variable_value.
36911         (struct variable_value_struct): New type.
36912         (struct variable_value_hasher): Likewise.
36913         (variable_value_hash): New variable.
36914         (string_types): Remove.
36915         (copy_loc_descr): New function.
36916         (add_loc_descr_to_each): Clarify comment.  Use copy_loc_descr.
36917         (prepend_loc_descr_to_each): New function.
36918         (add_loc_list): Fix comment typo.  Use prepend_loc_descr_to_each
36919         instead of add_loc_descr_to_each if the first argument is single
36920         location list and the second has multiple.
36921         (resolve_args_picking_1): Handle DW_OP_GNU_variable_value.
36922         (loc_list_from_tree_1): For early_dwarf, emit DW_OP_GNU_variable_value
36923         when looking for variable value which doesn't have other location info.
36924         (loc_list_from_tree): Formatting fix.
36925         (gen_array_type_die): Simplify DW_AT_string_length handling.
36926         (adjust_string_types): Remove.
36927         (gen_subprogram_die): Don't call adjust_string_types nor test/set
36928         string_types.  Call resolve_variable_values.
36929         (prune_unused_types_walk_loc_descr): Handle DW_OP_GNU_variable_value.
36930         (resolve_addr_in_expr): Likewise.  Add A argument.
36931         (copy_deref_exprloc): Remove deref argument.  Adjust for the
36932         original expression being DW_OP_GNU_variable_value with optionally
36933         DW_OP_stack_value after it instead of DW_OP_call4 with DW_OP_deref
36934         optionally after it.
36935         (optimize_string_length): Rework for DW_OP_GNU_variable_value.
36936         (resolve_addr): Adjust optimize_string_length and resolve_addr_in_expr
36937         callers.  Set remove_AT_byte_size if removing DW_AT_string_length.
36938         (variable_value_hasher::hash, variable_value_hasher::equal): New
36939         methods.
36940         (resolve_variable_value_in_expr, resolve_variable_value,
36941         resolve_variable_values, note_variable_value_in_expr,
36942         note_variable_value): New functions.
36943         (dwarf2out_early_finish): Call note_variable_value on all toplevel
36944         DIEs.
36945
36946 2017-02-24  Jakub Jelinek  <jakub@redhat.com>
36947
36948         PR c/79677
36949         * opts.h (handle_generated_option): Add GENERATED_P argument.
36950         * opts-common.c (handle_option): Adjust function comment.
36951         (handle_generated_option): Add GENERATED_P argument, pass it to
36952         handle_option.
36953         (control_warning_option): Pass false to handle_generated_option
36954         GENERATED_P.
36955         * opts.c (maybe_default_option): Pass true to handle_generated_option
36956         GENERATED_P.
36957         * optc-gen.awk: Likewise.
36958
36959 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36960
36961         * config/sh/sh.md (tstsi_t): If operands[0] is a SUBREG instead of
36962         a REG, look at the REG it is a SUBREG of.
36963         (splitter for cmpeqsi_t): Ditto.
36964
36965 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36966
36967         * config/pa/pa.c (pa_combine_instructions): Do not share RTL.  Make
36968         the special USEs with the pattern of the insn, not the insn itself.
36969
36970 2017-02-24  Matthew Fortune  <matthew.fortune@imgtec.com>
36971
36972         PR target/79473
36973         * doc/invoke.texi: Document -mload-store-pairs.
36974
36975 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36976             Sandra Loosemore  <sandra@codesourcery.com>
36977
36978         * config/nios2/nios2.c (nios2_simple_const_p): Returns false if the
36979         argument isn't a CONST_INT.
36980         (nios2_alternate_compare_const): Assert op is a CONST_INT.
36981         (nios2_valid_compare_const_p): Assert op is a CONST_INT.
36982         (nios2_validate_compare): Bypass alternate compare logic if *op2
36983         is not a CONST_INT.
36984         (ldstwm_operation_p): Return false if first_base is not a REG or
36985         if first_offset is not a CONST_INT.
36986
36987 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36988
36989         * config/cris/cris.md: Use correct operand in a define_peephole2.
36990
36991 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36992
36993         * config/c6x/c6x.c (predicate_insn): Do not incorrectly share RTL.
36994
36995 2017-02-24  Segher Boessenkool  <segher@kernel.crashing.org>
36996
36997         * config/arc/arc.c (arc_ccfsm_advance): Only take the PATTERN of
36998         this_insn if it is an INSN or JUMP_INSN.
36999         (force_offsettable): Look at base, not at addr.
37000         * config/arc/predicates.md (brcc_nolimm_operator): Don't call INTVAL
37001         on things that aren't necessarily CONST_INTs.
37002
37003 2017-02-24  Uros Bizjak  <ubizjak@gmail.com>
37004
37005         * doc/invoke.texi (x86 Options, -mfpmath=sse): Mention that
37006         -mfpmath=sse is the default also for x86-32 targets with SSE2
37007         instruction set when @option{-ffast-math} is enabled
37008
37009 2017-02-24  Jeff Law  <law@redhat.com>
37010
37011         PR rtl-optimizatoin/79286
37012         * ira.c (update_equiv_regs): Drop may_trap_p exception to
37013         dominance test.
37014
37015 2017-02-24  Richard Biener  <rguenther@suse.de>
37016
37017         PR tree-optimization/79389
37018         * gimple-ssa-split-paths.c (is_feasible_trace): Properly skip
37019         debug insns.
37020
37021 2017-02-24  Aldy Hernandez  <aldyh@redhat.com>
37022
37023         * tree-ssa-loop-niter.c (number_of_iterations_exit): Update
37024         function comment to reflect reality.
37025         (loop_exits_before_overflow): Fix typo in function description.
37026
37027 2017-02-24  Richard Biener  <rguenther@suse.de>
37028
37029         PR tree-optimization/79389
37030         * gimple-ssa-split-paths.c (is_feasible_trace): Verify more
37031         properly that a threading opportunity exists.  Detect conditional
37032         copy/constant propagation opportunities.
37033
37034 2017-02-23  Eric Botcazou  <ebotcazou@adacore.com>
37035
37036         * config/visium/visium.md (type): Add trap.
37037         (b): New mode attribute.
37038         (*btst): Rename into...
37039         (*btst<mode>): ...this and adjust.
37040         (*cbranchsi4_btst_insn): Rename into...
37041         (*cbranch<mode>4_btst_insn): ...this and adjust.
37042         (trap): New define_insn.
37043
37044 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
37045
37046         PR tree-optimization/79389
37047         * ifcvt.c (struct noce_if_info): Add rev_cond field.
37048         (noce_reversed_cond_code): New function.
37049         (noce_emit_store_flag): Use rev_cond if non-NULL instead of
37050         reversed_comparison_code.  Formatting fix.
37051         (noce_try_store_flag): Test rev_cond != NULL in addition to
37052         reversed_comparison_code.
37053         (noce_try_store_flag_constants): Likewise.
37054         (noce_try_store_flag_mask): Likewise.
37055         (noce_try_addcc): Use rev_cond if non-NULL instead of
37056         reversed_comparison_code.
37057         (noce_try_cmove_arith): Likewise.  Formatting fixes.
37058         (noce_try_minmax, noce_try_abs): Clear rev_cond.
37059         (noce_find_if_block): Initialize rev_cond.
37060         (find_cond_trap): Call noce_get_condition with then_bb == trap_bb
37061         instead of false as last argument never attempt to reverse it
37062         afterwards.
37063
37064 2017-02-23  Bin Cheng  <bin.cheng@arm.com>
37065
37066         PR tree-optimization/79663
37067         * tree-predcom.c (combine_chains): Process refs in reverse order
37068         only for ZERO length chains, and add explaining comment.
37069
37070 2017-02-23  Jeff Law  <law@redhat.com>
37071
37072         PR tree-optimization/79578
37073         * tree-ssa-dse.c (clear_bytes_written_by): Use OEP_ADDRESS_OF
37074         in call to operand_equal_p.
37075
37076 2017-01-23  Dominique d'Humieres  <dominiq@lps.ens.fr>
37077
37078         PR target/71017
37079         * config/i386/cpuid.h: Fix another undefined behavior.
37080
37081 2017-02-23  Richard Biener  <rguenther@suse.de>
37082
37083         PR tree-optimization/79683
37084         * tree-vect-stmts.c (vect_analyze_stmt): Do not overwrite
37085         vector types for data-refs.
37086
37087 2017-02-23  Martin Liska  <mliska@suse.cz>
37088
37089         * params.def (PARAM_MIN_NONDEBUG_INSN_UID): Change default to 0.
37090
37091 2017-02-23  Jakub Jelinek  <jakub@redhat.com>
37092
37093         PR middle-end/79665
37094         * internal-fn.c (get_range_pos_neg): Moved to ...
37095         * tree.c (get_range_pos_neg): ... here.  No longer static.
37096         * tree.h (get_range_pos_neg): New prototype.
37097         * expr.c (expand_expr_real_2) <case TRUNC_DIV_EXPR>: If both arguments
37098         are known to be in between 0 and signed maximum inclusive, try to
37099         expand both unsigned and signed divmod and use the cheaper one from
37100         those.
37101
37102 2017-02-22  Jeff Law  <law@redhat.com>
37103
37104         PR tree-optimization/79578
37105         * tree-ssa-dse.c (clear_bytes_written_by): Use operand_equal_p
37106         to compare base operands.
37107
37108 2017-02-22  Segher Boessenkool  <segher@kernel.crashing.org>
37109
37110         PR target/79211
37111         * config/rs6000/rs6000.md (*fsel<SFDF:mode><SFDF2:mode>4): Use
37112         gpc_reg_operand instead of fpr_reg_operand.
37113
37114 2017-02-22  Sameera Deshpande  <sameera.deshpande@imgtec.com>
37115
37116         * config/mips/mips.c (mips_return_in_memory): Force FP
37117         vector types to be returned in memory for o32 ABI.
37118
37119 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
37120
37121         * dwarf2out.c (gen_variable_die): For -gdwarf-5, use DW_TAG_variable
37122         instead of DW_TAG_member for static data member declarations and don't
37123         set no_linkage_name for static inline data members.
37124         (gen_member_die): For -gdwarf-5 don't change DW_TAG_variable
37125         to DW_TAG_member.
37126
37127 2017-02-22  Martin Liska  <mliska@suse.cz>
37128
37129         * doc/invoke.texi: Replace inequality signs with square brackets
37130         for -Wnormalized.
37131
37132 2017-02-22  Matthew Fortune  <matthew.fortune@imgtec.com>
37133
37134         PR target/78660
37135         * lra-constraints.c (simplify_operand_subreg): Handle
37136         WORD_REGISTER_OPERATIONS targets.
37137
37138 2017-02-22  Jakub Jelinek  <jakub@redhat.com>
37139
37140         PR target/70465
37141         * reg-stack.c (emit_swap_insn): Treat (float_extend:?F (mem:?F))
37142         and (const_double:?F) like (mem:?F) for the purpose of fxch %st(1)
37143         elimination by swapping fld*.
37144
37145 2017-02-22  Richard Biener  <rguenther@suse.de>
37146
37147         PR tree-optimization/79673
37148         * tree-ssa-pre.c (compute_avail): Use wide_int_to_tree to
37149         convert the [TARGET_]MEM_REF offset INTEGER_CST, scrapping off
37150         irrelevant address-space qualifiers and avoiding a
37151         ADDR_SPACE_CONVERT_EXPR from fold_convert.
37152
37153 2017-02-22  Richard Biener  <rguenther@suse.de>
37154
37155         PR tree-optimization/79666
37156         * tree-vrp.c (extract_range_from_binary_expr_1): Make sure
37157         to not symbolically negate if that may introduce undefined
37158         overflow.
37159
37160 2017-02-22  Martin Liska  <mliska@suse.cz>
37161
37162         PR lto/79587
37163         * data-streamer-in.c (streamer_read_gcov_count): Remove assert.
37164         * data-streamer-out.c (streamer_write_gcov_count_stream):
37165         Likewise.
37166         * value-prof.c (stream_out_histogram_value): Make assert more
37167         precise based on type of counter.
37168
37169 2017-02-21  Uros Bizjak  <ubizjak@gmail.com>
37170
37171         PR target/79593
37172         * config/i386/i386.md (standard_x87sse_constant_load splitter):
37173         Use nonimmediate_operand instead of memory_operand for operand 1.
37174         (float-extend standard_x87sse_constant_load splitter): Ditto.
37175
37176 2017-02-21  Jeff Law  <law@redhat.com>
37177
37178         PR tree-optimization/79621
37179         * gimple-ssa-isolate-paths.c (find_implicit_erroneous_behavior): Ignore
37180         blocks with edges to themselves.
37181
37182 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
37183
37184         PR target/79633
37185         * tree-chkp-opt.c (chkp_optimize_string_function_calls): Use
37186         is_gimple_call instead of comparing gimple_code with GIMPLE_CALL.
37187         Use gimple_call_builtin_p.
37188
37189         PR target/79570
37190         * sel-sched.c (moveup_expr_cached): Don't call sel_bb_head
37191         on temporarily removed DEBUG_INSNs.
37192
37193         PR tree-optimization/79649
37194         * tree-loop-distribution.c (classify_partition): Give up on
37195         non-generic address space loads/stores.
37196
37197 2017-02-21  Aldy Hernandez  <aldyh@redhat.com>
37198
37199         * doc/loop.texi (Loop manipulation): Remove nonexistent
37200         tree_ssa_loop_version from the documentation.
37201         * cfgloopmanip.c (loop_version): Document CONDITION_BB argument.
37202
37203 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
37204
37205         PR target/79494
37206         * config/i386/i386.c (ix86_expand_split_stack_prologue): Call
37207         make_reg_eh_region_note_nothrow_nononlocal on call_insn.
37208         * config/rs6000/rs6000.c: Include except.h.
37209         (rs6000_expand_split_stack_prologue): Call
37210         make_reg_eh_region_note_nothrow_nononlocal on the call insn.
37211
37212 2017-02-21  Martin Jambor  <mjambor@suse.cz>
37213
37214         PR lto/79579
37215         * ipa-prop.c (ipa_prop_write_jump_functions): Bail out if no edges
37216         have been analyzed.
37217
37218 2017-02-21  Martin Jambor  <mjambor@suse.cz>
37219
37220         * common.opt (-fipa-cp-alignment): Mark as ignored and preserved
37221         for backward compatibility only.
37222         * doc/invoke.texi (Option Summary): Remove all references to
37223         -fipa-cp-alignment.
37224
37225 2017-02-21  Matthew Fortune  <matthew.fortune@imgtec.com>
37226
37227         PR target/78660
37228         Revert:
37229         2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
37230
37231         * lra-constraints.c (curr_insn_transform): Handle
37232         WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
37233
37234 2017-02-21  Martin Liska  <mliska@suse.cz>
37235
37236         * config/i386/i386.opt: Replace -masm-dialect with -masm.
37237
37238 2017-02-21  Thomas Schwinge  <thomas@codesourcery.com>
37239
37240         PR translation/79638
37241         * config/nvptx/nvptx.c (ENTRY_TEMPLATE): Single out "%ntid.y".
37242
37243 2017-02-21  Eric Botcazou  <ebotcazou@adacore.com>
37244
37245         PR ada/67205
37246         * config/arm/arm.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define.
37247         (arm_function_ok_for_sibcall): Return false for an indirect call by
37248         descriptor if all the argument registers are used.
37249         (arm_relayout_function): Use FUNCTION_ALIGNMENT macro to adjust the
37250         alignment of the function.
37251
37252 2017-02-21  Jakub Jelinek  <jakub@redhat.com>
37253
37254         PR tree-optimization/61441
37255         * simplify-rtx.c (simplify_const_unary_operation): For
37256         -fsignaling-nans and sNaN operand, return NULL_RTX rather than
37257         the sNaN unmodified.
37258
37259 2017-02-20  Bernd Edlinger  <bernd.edlinger@hotmail.de>
37260
37261         * Makefile.in (BUILD_SYSTEM_HEADER_DIR): New make variabe.
37262         (LIMITS_H_TEST, if_multiarch, stmp-fixinc): Use BUILD_SYSTEM_HEADER_DIR
37263         instead of SYSTEM_HEADER_DIR.
37264
37265 2017-02-20  Gerald Pfeifer  <gerald@pfeifer.com>
37266             Martin LiÅ¡ka  <mliska@suse.cz>
37267
37268         * doc/invoke.texi (use-after-scope-direct-emission-threshold):
37269         Fix typos and grammar, use active voice, and clarify.
37270
37271 2017-02-20  Marek Polacek  <polacek@redhat.com>
37272
37273         PR middle-end/79537
37274         * gimplify.c (gimplify_expr): Handle unused *&&L;.
37275
37276         PR sanitizer/79558
37277         * ubsan.c (ubsan_type_descriptor): Check if TYPE_MAX_VALUE is null.
37278
37279 2017-02-20  Jakub Jelinek  <jakub@redhat.com>
37280
37281         PR target/79568
37282         * config/i386/i386.c (ix86_expand_builtin): Handle
37283         OPTION_MASK_ISA_AVX512VL and OPTION_MASK_ISA_64BIT in
37284         ix86_builtins_isa[fcode].isa as a requirement of those
37285         flags and any other flag in the bitmask.
37286         (ix86_init_mmx_sse_builtins): Use 0 instead of
37287         ~OPTION_MASK_ISA_64BIT as mask.
37288         * config/i386/i386-builtin.def (__builtin_ia32_rdtsc,
37289         __builtin_ia32_rdtscp, __builtin_ia32_pause, __builtin_ia32_bsrsi,
37290         __builtin_ia32_rdpmc, __builtin_ia32_rolqi, __builtin_ia32_rolhi,
37291         __builtin_ia32_rorqi, __builtin_ia32_rorhi): Likewise.
37292
37293 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
37294
37295         PR target/78012
37296         * lra-constraints.c (split_reg): Check requested split mode
37297         is supported by the register.
37298
37299 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
37300
37301         * lra-constraints.c (simplify_operand_subreg): Remove early
37302         return false.
37303
37304 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
37305
37306         PR target/78660
37307         * lra-constraints.c (curr_insn_transform): Tighten condition
37308         for converting SUBREG reloads from OP_OUT to OP_INOUT.
37309
37310 2017-02-20  Matthew Fortune  <matthew.fortune@imgtec.com>
37311
37312         PR target/78660
37313         * lra-constraints.c (curr_insn_transform): Handle
37314         WORD_REGISTER_OPERATIONS requirements when reloading SUBREGs.
37315
37316 2017-02-19  Uros Bizjak  <ubizjak@gmail.com>
37317
37318         Revert:
37319         2016-05-30  Uros Bizjak  <ubizjak@gmail.com>
37320
37321         * config/i386/sync.md (mfence_nosse): Use "lock orl $0, -4(%esp)".
37322
37323 2017-02-19  Jonathan Wakely  <jwakely@redhat.com>
37324
37325         PR c++/69523
37326         * doc/invoke.texi (C++ Dialect Options) [-Wliteral-suffix]: Update
37327         description.
37328
37329 2017-02-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
37330
37331         * gimple-pretty-print.c (dump_ternary_rhs): Adjust gimple dump format
37332         for FMA_EXPR.
37333
37334 2017-02-18  Jakub Jelinek  <jakub@redhat.com>
37335
37336         * final.c (last_columnnum, override_columnnum): New variables.
37337         (final_start_function): Set last_columnnum, pass it to begin_prologue
37338         hook and pass 0 to dwarf2out_begin_prologue.
37339         (final_scan_insn): Update override_columnnum.  Pass last_columnnum
37340         to source_line debug hook.
37341         (notice_source_line): Compute last_columnnum and for debug_column_info
37342         return true on column changes.
37343         * debug.h (struct gcc_debug_hooks): Add column argument to
37344         source_line and begin_prologue hooks.
37345         (debug_nothing_int_charstar_int_bool): Remove prototype.
37346         (debug_nothing_int_int_charstar,
37347         debug_nothing_int_int_charstar_int_bool): New prototypes.
37348         (dwarf2out_begin_prologue): Add column argument.
37349         * debug.c (do_nothing_debug_hooks): Adjust source_line and
37350         begin_prologue hooks.
37351         (debug_nothing_int_charstar_int_bool): Remove.
37352         (debug_nothing_int_int_charstar,
37353         debug_nothing_int_int_charstar_int_bool): New functions.
37354         * dwarf2out.c (dwarf2out_begin_prologue): Add column argument, pass it
37355         through to dwarf2out_source_line.
37356         (dwarf2_lineno_debug_hooks): Adjust begin_prologue hook.
37357         (dwarf2out_source_line): Add column argument, emit it if requested.
37358         * sdbout.c (sdbout_source_line, sdbout_begin_prologue): Add column
37359         arguments.
37360         * xcoffout.h (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
37361         * xcoffout.c (xcoffout_begin_prologue, xcoffout_source_line): Likewise.
37362         * vmsdbgout.c (vmsdbgout_begin_prologue): Add column argument, pass it
37363         through to dwarf2out_begin_prologue.
37364         (vmsdbgout_source_line): Add column argument, pass it through to
37365         dwarf2out_source_line.
37366         * dbxout.c (dbxout_begin_prologue): Add column argument, adjust
37367         dbxout_source_line caller.
37368         (dbxout_source_line): Add column argument.
37369
37370         * common.opt (gno-column-info, gcolumn-info): New options.
37371         * dwarf2out.c (dwarf2_lineno_debug_hooks): Formatting fix.
37372         (check_die): Also test for multiple DW_AT_decl_column attributes.
37373         (add_src_coords_attributes, dwarf2out_imported_module_or_decl_1): Add
37374         DW_AT_decl_column if requested.
37375         (gen_subprogram_die): Compare and/or add also DW_AT_decl_column
37376         if requested.
37377         (gen_variable_die): Likewise.
37378         (add_call_src_coords_attributes): Add DW_AT_call_column if requested.
37379         * doc/invoke.texi (-gcolumn-info, -gno-column-info): Document.
37380
37381         PR target/79569
37382         * config/i386/i386.opt (m3dnowa): Replace Undocumented with Report.
37383         * common/config/i386/i386-common.c (OPTION_MASK_ISA_3DNOW_A_SET): Define.
37384         (ix86_handle_option): Handle OPT_m3dnowa.
37385         * doc/invoke.texi (-m3dnowa): Document.
37386         * doc/extend.texi (__builtin_ia32_pmulhuw, __builtin_ia32_pf2iw): Use
37387         -m3dnowa instead of -m3dnow -march=athlon.
37388
37389         PR target/79559
37390         * config/i386/i386.c (ix86_print_operand): Use output_operand_lossage
37391         instead of gcc_assert for K, r and R code checks.  Formatting fixes.
37392
37393 2017-02-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
37394
37395         PR target/79261
37396         * config/rs6000/rs6000.c (rs6000_expand_ternop_builtin): Add
37397         support for CODE_FOR_vsx_xxpermdi_v2d[fi]_be.
37398         * config/rs6000/rs6000.md (reload_gpr_from_vsx<mode>): Call
37399         generator for vsx_xxpermdi_<mode>_be.
37400         * config/rs6000/vsx.md (vsx_xxpermdi_<mode>): Remove logic to
37401         force big-endian semantics.
37402         (vsx_xxpermdi_<mode>_be): New define_expand with same
37403         implementation as previous version of vsx_xxpermdi_<mode>.
37404
37405 2017-02-17  Jakub Jelinek  <jakub@redhat.com>
37406
37407         PR tree-optimization/79327
37408         * gimple-ssa-sprintf.c (format_integer): Remove likely_adjust
37409         variable, its initialization and use.
37410
37411 2017-02-17  Julia Koval  <julia.koval@intel.com>
37412
37413         * common/config/i386/i386-common.c (OPTION_MASK_ISA_RDPID_SET): New.
37414         (OPTION_MASK_ISA_PKU_UNSET): New.
37415         (ix86_handle_option): Handle -mrdpid.
37416         * config/i386/cpuid.h (bit_RDPID): New.
37417         * config/i386/driver-i386.c (host_detect_local_cpu):
37418         Detect RDPID feature.
37419         * config/i386/i386-builtin.def (__builtin_ia32_rdpid): New.
37420         * config/i386/i386-c.c (ix86_target_macros_internal):
37421         Handle RDPID flag.
37422         * config/i386/i386.c (ix86_target_string): Add -mrdpid to isa2_opts.
37423         (ix86_valid_target_attribute_inner_p): Add "rdpid".
37424         (ix86_expand_builtin): Handle IX86_BUILTIN_RDPID.
37425         * config/i386/i386.h (TARGET_RDPID, TARGET_RDPID_P): New.
37426         * config/i386/i386.md (define_insn "rdpid"): New.
37427         * config/i386/i386.opt Add -mrdpid.
37428         * config/i386/immintrin.h (_rdpid_u32): New.
37429
37430 2017-02-17  Vladimir Makarov  <vmakarov@redhat.com>
37431
37432         PR rtl-optimization/79541
37433         * lra-constraints.c (curr_insn_transform): Remove wrong asm insn
37434         instead of transforming it into USE.
37435
37436 2017-02-17  Segher Boessenkool  <segher@kernel.crashing.org>
37437
37438         * config/rs6000/rs6000.md (extendsfdf2): Remove default arguments.
37439         If HONOR_SNANS (SFmode) force the input to a register.
37440         (*extendsfdf2_fpr): Add !HONOR_SNANS (SFmode) condition.
37441         (*extendsfdf2_snan): New pattern, used when using SNaNs; it generates
37442         an frsp or similar insn.
37443
37444 2017-02-17  Martin Liska  <mliska@suse.cz>
37445
37446         PR rtl-optimization/79577
37447         * params.def (selsched-max-sched-times): Increase minimum to 1.
37448
37449 2017-02-17  Martin Liska  <mliska@suse.cz>
37450
37451         PR rtl-optimization/79574
37452         * gcse.c (want_to_gcse_p): Prevent integer overflow.
37453
37454 2017-02-17  Martin Liska  <mliska@suse.cz>
37455
37456         PR tree-optimization/79529
37457         * tree-ssa-loop-unswitch.c (is_maybe_undefined): Use
37458         ssa_defined_default_def_p to handle cases which are implicitly
37459         defined.
37460         * tree-ssa.c (ssa_defined_default_def_p): New function.
37461         (ssa_undefined_value_p): Use ssa_defined_default_def_p to handle cases
37462         which are implicitly defined.
37463         * tree-ssa.h (ssa_defined_default_def_p): Declare.
37464
37465 2017-02-17  Richard Biener  <rguenther@suse.de>
37466
37467         PR middle-end/79576
37468         * params.def (max-ssa-name-query-depth): Limit to 10.
37469
37470 2017-02-17  Richard Biener  <rguenther@suse.de>
37471
37472         PR tree-optimization/79552
37473         * tree-ssa-structalias.c (visit_loadstore): Properly verify
37474         default defs.
37475
37476 2017-02-17  Richard Biener  <rguenther@suse.de>
37477
37478         PR bootstrap/79567
37479         * genmatch.c (output_line_directive): Handle DIR_SEPARATOR_2.
37480
37481 2017-02-17  Marek Polacek  <polacek@redhat.com>
37482
37483         PR middle-end/79536
37484         * fold-const.c (fold_negate_expr_1): Renamed from fold_negate_expr.
37485         (fold_negate_expr): New wrapper.
37486
37487 2017-02-16  Sandra Loosemore  <sandra@codesourcery.com>
37488
37489         * doc/invoke.texi (C++ Dialect Options) [-Wno-non-template-friend]: 
37490         Correct terminology and de-emphasize pre-standard behavior.
37491
37492 2017-02-16  Alan Modra  <amodra@gmail.com>
37493
37494         PR rtl-optimization/79286
37495         * ira.c (def_dominates_uses): New function.
37496         (update_equiv_regs): Don't create an equivalence for insns that
37497         may trap where the register def does not dominate the use.
37498
37499 2017-02-16  Vladimir Makarov  <vmakarov@redhat.com>
37500
37501         PR rtl-optimization/78127
37502         * lra.c (lra): Call lra_eliminate before finish the loop after
37503         lra_constraint.
37504
37505 2017-02-16  Richard Biener  <rguenther@suse.de>
37506
37507         * graphite.h: Do not include isl/isl_val_gmp.h, instead include
37508         isl/isl_val.h.
37509         * graphite-isl-ast-to-gimple.c (gmp_cst_to_tree): Remove.
37510         (gcc_expression_from_isl_expr_int): Use generic isl_val interface.
37511         * graphite-sese-to-poly.c: Do not include isl/isl_val_gmp.h.
37512         (isl_val_int_from_wi): New function.
37513         (extract_affine_gmp): Rename to ...
37514         (extract_affine_wi): ... this, take a widest_int.
37515         (extract_affine_int): Just wrap extract_affine_wi.
37516         (add_param_constraints): Use isl_val_int_from_wi.
37517         (add_loop_constraints): Likewise, and extract_affine_wi.
37518
37519 2017-02-15  Jeff Law  <law@redhat.com>
37520
37521         PR middle-end/79521
37522         * ira-costs.c (scan_one_insn): Check have_regs_of_mode before calling
37523         ira_init_register_move_cost_if_necessary.
37524
37525 2017-02-15  Martin Sebor  <msebor@redhat.com>
37526
37527         PR middle-end/32003
37528         * doc/invoke.texi (-fdump-final-insns): Replace option accidentally
37529         removed in a prior commit.
37530
37531 2017-02-15  Bin Cheng  <bin.cheng@arm.com>
37532
37533         PR tree-optimization/79347
37534         * tree-vect-loop-manip.c (vect_do_peeling): Maintain profile
37535         counters during peeling.
37536
37537 2017-02-15  Thomas Schwinge  <thomas@codesourcery.com>
37538
37539         * Makefile.in (site.exp): Remove "set ISLVER".
37540
37541 2017-02-15  Jakub Jelinek  <jakub@redhat.com>
37542
37543         PR target/79487
37544         * real.c (real_from_integer): Call real_convert even for decimal.
37545
37546 2017-02-15  Dominik Vogt  <vogt@linux.vnet.ibm.com>
37547
37548         PR target/79421
37549         * config/s390/s390.c: define TARGET_CUSTOM_FUNCTION_DESCRIPTORS.
37550
37551 2017-02-14  Andrew Pinski  <apinski@cavium.com>
37552
37553         * config/aarch64/aarch64-cores.def (thunderx2t99): Move to under 'C"
37554         cores and change the partno/implementer to be correct.
37555         (thunderx2t99p1): New core which replaces thunderx2t99 and still has
37556         the 'B" as the implementer.
37557         * config/aarch64/aarch64-tune.md: Regenerate.
37558
37559 2017-02-14  Carl Love  <cel@us.ibm.com>
37560
37561         * config/rs6000/rs6000.c: Add case statement entry to make the
37562         xvcvuxdsp built-in argument unsigned.
37563         * config/rs6000/vsx.md: Fix the source and return operand types so they
37564         match the instruction definitions from the ISA document.  Fix typo
37565         in the instruction generation for the (define_insn "vsx_xvcvuxdsp"
37566         statement.
37567
37568 2017-02-14  Vladimir Makarov  <vmakarov@redhat.com>
37569
37570         PR target/79282
37571         * lra-int.h (struct lra_operand_data, struct lra_insn_reg): Add
37572         member early_clobber_alts.
37573         * lra-lives.c (reg_early_clobber_p): New.
37574         (process_bb_lives): Use it.
37575         * lra.c (new_insn_reg): New arg early_clobber_alts.  Use it.
37576         (debug_operand_data): Initialize early_clobber_alts.
37577         (setup_operand_alternative): Set up early_clobber_alts.
37578         (collect_non_operand_hard_regs): Ditto.  Pass early clobber
37579         alternatives to new_insn_reg.
37580         (add_regs_to_insn_regno_info): Add arg early_clobber_alts.  Use
37581         it.
37582         (lra_update_insn_regno_info): Pass the new arg.
37583
37584 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
37585
37586         PR middle-end/79505
37587         * omp-offload.c (free_oacc_loop): Release loop->ifns vector.
37588         (new_oacc_loop_raw): Don't clear already cleared fields.
37589
37590         PR target/79481
37591         * config/i386/avx512pfintrin.h (_mm512_prefetch_i32gather_pd,
37592         _mm512_prefetch_i32gather_ps, _mm512_prefetch_i64gather_pd,
37593         _mm512_prefetch_i64gather_ps): New inline functions and macros.
37594
37595 2017-02-14  Uros Bizjak  <ubizjak@gmail.com>
37596
37597         PR target/79495
37598         * config/i386/i386.md (*movxf_internal): Add (o,rC) alternative.
37599
37600 2017-02-14  H.J. Lu  <hongjiu.lu@intel.com>
37601
37602         PR target/79498
37603         * config/i386/i386.c (timode_scalar_chain::convert_insn): Insert
37604         the extra instruction to the right place to store 128-bit constant
37605         when needed.
37606
37607 2017-02-14  Martin Sebor  <msebor@redhat.com>
37608
37609         PR middle-end/79448
37610         * gimple-ssa-sprintf.c (format_directive): Avoid issuing INT_MAX
37611           warning for strings of unknown length.
37612
37613 2017-02-13  Segher Boessenkool  <segher@kernel.crashing.org>
37614
37615         * config.gcc (supported_defaults) [powerpc*-*-*]: Update.
37616
37617 2017-02-14  Jeff Law  <law@redhat.com>
37618
37619         PR target/79404
37620         * ira-costs.c (scan_one_insn): Initialize register move costs
37621         for pseudos seen in USE/CLOBBER insns.
37622
37623         PR tree-optimization/79095
37624         * tree-vrp.c (extract_range_from_binary_expr_1): For EXACT_DIV_EXPR,
37625         if the numerator has the range ~[0,0] make the resultant range ~[0,0].
37626         (extract_range_from_binary_expr): For MINUS_EXPR with no derived range,
37627         if the operands are known to be not equal, then the resulting range
37628         is ~[0,0].
37629         (intersect_ranges): If the new range is ~[0,0] and the old range is
37630         wide, then prefer ~[0,0].
37631         * tree-vrp.c (overflow_comparison_p_1): New function.
37632         (overflow_comparison_p): New function.
37633         * tree-vrp.c (register_edge_assert_for_2): Register additional asserts
37634         if NAME is used in an overflow test.
37635         (vrp_evaluate_conditional_warnv_with_ops): If the ops represent an
37636         overflow check that can be expressed as an equality test, then adjust
37637         ops to be that equality test.
37638
37639 2017-02-14  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
37640
37641         * config/s390/s390-builtin-types.def: Remove flags argument.
37642         * config/s390/s390.c (s390_init_builtins): Likewise.
37643
37644 2017-02-14  Martin Liska  <mliska@suse.cz>
37645
37646         * tree-ssa-loop-unswitch.c (hoist_guard): Release get_loop_body
37647         vector.  Fix trailing white spaces.
37648
37649 2017-02-14  James Greenhalgh  <james.greenhalgh@arm.com>
37650
37651         * config/aarch64/aarch64.c (aarch64_simd_container_mode): Handle
37652         HFmode.
37653
37654 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37655
37656         PR rtl-optimization/68664
37657         * config/arm/arm.c (arm_sched_can_speculate_insn):
37658         New function.  Declare prototype.
37659         (TARGET_SCHED_CAN_SPECULATE_INSN): Define.
37660
37661 2017-02-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37662
37663         PR rtl-optimization/68664
37664         * config/aarch64/aarch64.c (aarch64_sched_can_speculate_insn):
37665         New function.
37666         (TARGET_SCHED_CAN_SPECULATE_INSN): Define.
37667
37668 2017-02-14  Amit Pawar  <amit.pawar@amd.com>
37669
37670         * config/i386/i386.c (znver1_cost): Fix the alignment for function and
37671         max skip bytes for function, loop and jump.
37672
37673 2017-02-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
37674
37675         * gimple-pretty-print.c (dump_unary_rhs): Adjust dump format for
37676         ABS_EXPR for gimple dump.
37677
37678 2017-02-14  Jakub Jelinek  <jakub@redhat.com>
37679
37680         PR target/79462
37681         * config/sh/sh.c (expand_cbranchdi4): Don't clear operands[4].
37682
37683         PR tree-optimization/79408
37684         * tree-vrp.c (simplify_div_or_mod_using_ranges): Handle also the
37685         case when on TRUNC_MOD_EXPR op0 is INTEGER_CST.
37686         (simplify_stmt_using_ranges): Call simplify_div_or_mod_using_ranges
37687         also if rhs1 is INTEGER_CST.
37688
37689 2017-02-14  Richard Biener  <rguenther@suse.de>
37690
37691         PR middle-end/79432
37692         * tree-into-ssa.c (insert_phi_nodes): When the function can
37693         have abnormal edges rewrite SSA names with broken use-def
37694         dominance out of SSA and register them for PHI insertion.
37695
37696 2017-02-13  Martin Sebor  <msebor@redhat.com>
37697
37698         PR middle-end/79496
37699         * gimple-ssa-sprintf.c (pass_sprintf_length::handle_gimple_call): Avoid
37700         clearing info.nowrite flag when snprintf size argument is a range.
37701
37702 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
37703
37704         * cprop.c (cprop_jump): Add missing space in string literal.
37705         * tree-ssa-structalias.c (rewrite_constraints): Likewise.
37706         (get_constraint_for_component_ref): Likewise.
37707         * df-core.c (df_worklist_dataflow_doublequeue): Likewise.
37708         * tree-outof-ssa.c (insert_partition_copy_on_edge): Likewise.
37709         * lra-constraints.c (process_alt_operands): Likewise.
37710         * ipa-inline.c (inline_small_functions): Likewise.
37711         * tree-ssa-sccvn.c (visit_reference_op_store): Likewise.
37712         * cgraph.c (cgraph_edge::redirect_call_stmt_to_callee): Likewise.
37713         * trans-mem.c (diagnose_tm_1_op): Likewise.
37714         * omp-grid.c (grid_find_single_omp_among_assignments): Likewise.
37715         (grid_parallel_clauses_gridifiable): Likewise.
37716
37717         * config/nvptx/mkoffload.c (process): Add space in between
37718         , and %d.
37719
37720         * config/i386/i386.h (REG_CLASS_NAMES): Add , in between
37721         "MOD4_SSE_REGS" and "ALL_REGS".
37722
37723         * spellcheck.c (test_data): Add , in between "foo" and "food".
37724
37725 2017-02-13  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
37726
37727         PR target/79449
37728         * config/rs6000/rs6000.c (expand_block_compare): Make sure runtime
37729         boundary crossing check and subsequent code generation agree.
37730
37731 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37732
37733         * config/aarch64/aarch64.c (has_memory_op): Delete.
37734         (aarch64_madd_needs_nop): Use contains_mem_rtx_p instead of
37735         has_memory_op.
37736
37737 2017-02-13  Jakub Jelinek  <jakub@redhat.com>
37738
37739         PR rtl-optimization/79388
37740         PR rtl-optimization/79450
37741         * combine.c (distribute_notes): When removing TEM_INSN for which
37742         corresponding dest has last value recorded, invalidate that last
37743         value.
37744
37745 2017-02-13  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
37746
37747         * config/arm/arm.c (arm_print_tune_info): Use ASM_COMMENT_START instead
37748         of explicit '@'.  Add missing assembly comment marker on branch costs
37749         printout.
37750
37751 2017-02-13  Nathan Sidwell  <nathan@acm.org>
37752
37753         * gengtype-lex.l (<in_struct>): Add '/'.
37754
37755 2017-02-13  Martin Liska  <mliska@suse.cz>
37756
37757         PR c/79471
37758         * calls.c (expand_call): Replace XALLOCAVEC with XCNEWVEC.
37759
37760 2017-02-13  Richard Biener  <rguenther@suse.de>
37761
37762         * configure.ac (HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS):
37763         Remove.
37764         * configure: Re-generate.
37765         * config.in: Likewise.
37766         * graphite-dependences.c: Simplify as if
37767         HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS was defined.
37768         * graphite-isl-ast-to-gimple.c: Likewise.
37769         * graphite-optimize-isl.c: Likewise.
37770         * graphite-poly.c: Likewise.
37771         * graphite-sese-to-poly.c: Likewise.
37772         * graphite.h: Likewise.
37773         * toplev.c: Include isl/version.h and use isl_version () for
37774         printing the ISL version.
37775         * doc/install.texi: Update ISL requirement.
37776
37777 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
37778
37779         * doc/standards.texi (Standards): Update reference to
37780         Objective-C 2.0.
37781
37782 2017-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
37783
37784         * doc/extend.texi (Named Address Spaces): sourceware.org now
37785         defaults to https.
37786         * doc/install.texi (Binaries): Ditto.
37787         (Specific): Ditto.
37788
37789 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
37790
37791         * doc/cpp.texi: Replace "stringify"/"stringification" with C
37792         standard terminology "stringize"/"stringizing" throughout.
37793         * doc/cppinternals.texi: Likewise.
37794
37795 2017-02-11  Sandra Loosemore  <sandra@codesourcery.com>
37796
37797         * doc/extend.texi: Fix some spelling mistakes and typos.
37798         * doc/invoke.texi: Likewise.
37799
37800 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
37801
37802         PR ipa/79224
37803         * params.def (inline-min-speedup) Change from 10 to 8.
37804
37805 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
37806
37807         * doc/invoke.texi (fopenmp): Bump OpenMP version from 4.0 to
37808         4.5.
37809
37810 2017-02-11  Jan Hubicka  <hubicka@ucw.cz>
37811
37812         PR ipa/79224
37813         * ipa-inline-analysis.c (get_minimal_bb): New function.
37814         (record_modified): Use it.
37815         (remap_edge_change_prob): Handle also ancestor functions.
37816
37817 2017-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
37818
37819         * doc/contrib.texi (Contributors): Remove broken link into
37820         the Mauve CVS repository.
37821
37822 2017-02-11  Jakub Jelinek  <jakub@redhat.com>
37823
37824         PR middle-end/79454
37825         * internal-fn.c (expand_vector_ubsan_overflow): Use piece-wise
37826         result computation whenever lhs doesn't have vector mode, not
37827         just when it has BLKmode.
37828
37829 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
37830
37831         * doc/makefile.texi (profiledbootstrap): Refer to the
37832         installation instructions only in textual form.
37833
37834 2017-02-10  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
37835
37836         PR target/79295
37837         * config/rs6000/altivec.md (bcd<bcd_add_sub>): Fix constraints.
37838
37839 2017-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
37840
37841         * doc/install.texi (Specific): Use https for blackfin.uclinux.org.
37842         (Specific): Update mingw-w64 reference.
37843         (Binaries): Ditto.
37844         (Specific): Remove broken link to Renesas RX processor.
37845
37846 2017-02-10  Richard Biener  <rguenther@suse.de>
37847
37848         * toplev.c (process_options): Do not mention obsolete graphite
37849         options when printing sorry message about missing graphite support.
37850         Mention -floop-nest-optimize.
37851
37852 2017-02-10  Christophe Lyon  <christophe.lyon@linaro.org>
37853
37854         * config/aarch64/arm_neon.h (vtst_p8): Rewrite without asm.
37855         (vtst_p16): Likewise.
37856         (vtstq_p8): Likewise.
37857         (vtstq_p16): Likewise.
37858         (vtst_p64): New.
37859         (vtstq_p64): Likewise.
37860         * config/arm/arm_neon.h (vgetq_lane_p64): New.
37861         (vset_lane_p64): New.
37862         (vsetq_lane_p64): New.
37863
37864 2017-02-10  Jakub Jelinek  <jakub@redhat.com>
37865
37866         PR tree-optimization/79411
37867         * tree-ssa-reassoc.c (is_reassociable_op): Return false if
37868         stmt operands are SSA_NAMEs used in abnormal phis.
37869         (can_reassociate_p): Return false if op is SSA_NAME used in abnormal
37870         phis.
37871
37872 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
37873
37874         PR ipa/70795
37875         * cgraphunit.c (cgraph_node::add_new_function): Set externally_visible
37876         flag if needed.
37877
37878 2017-02-09  Jan Hubicka  <hubicka@ucw.cz>
37879
37880         * tree-ssa-loop-unswitch.c (hoist_guard): Update profile.
37881
37882 2017-02-09  Jakub Jelinek  <jakub@redhat.com>
37883
37884         * omp-offload.c (oacc_loop_auto_partitions): Use || instead of |
37885         to avoid warning.
37886
37887         PR c/79413
37888         * gimplify.h (is_gimple_sizepos): Only test for INTEGER_CST constants,
37889         not arbitrary TREE_CONSTANT.
37890
37891         PR c/79431
37892         * gimplify.c (gimplify_adjust_omp_clauses): Ignore
37893         "omp declare target link" attribute unless is_global_var.
37894         * omp-offload.c (find_link_var_op): Likewise.
37895
37896 2017-02-09  Nathan Sidwell  <nathan@codesourcery.com>
37897             Chung-Lin Tang  <cltang@codesourcery.com>
37898
37899         * gimplify.c (gimplify_scan_omp_clauses): No special handling for
37900         OMP_CLAUSE_TILE.
37901         (gimplify_adjust_omp_clauses): Don't delete TILE.
37902         (gimplify_omp_for): Deal with TILE.
37903         * internal-fn.c (expand_GOACC_TILE): New function.
37904         * internal-fn.def (GOACC_DIM_POS): Comment may be overly conservative.
37905         (GOACC_TILE): New.
37906         * omp-expand.c (struct oacc_collapse): Add tile and outer fields.
37907         (expand_oacc_collapse_init): Add LOC paramter.  Initialize tile
37908         element fields.
37909         (expand_oacc_collapse_vars): Add INNER parm, adjust for tiling,
37910         avoid DIV for outermost collapse var.
37911         (expand_oacc_for): Insert tile element loop as needed.  Adjust.
37912         Remove out of date comments, fix whitespace.
37913         * omp-general.c (omp_extract_for_data): Deal with tiling.
37914         * omp-general.h (enum oacc_loop_flags): Add OLF_TILE flag,
37915         adjust OLF_DIM_BASE value.
37916         (struct omp_for_data): Add tiling field.
37917         * omp-low.c (scan_sharing_clauses): Allow OMP_CLAUSE_TILE.
37918         (lower_oacc_head_mark): Add OLF_TILE as appropriate.  Ensure 2 levels
37919         for auto loops.  Remove default auto determining, moved to
37920         oacc_loop_fixed_partitions.
37921         * omp-offload.c (struct oacc_loop): Change 'ifns' to vector of call
37922         stmts, add e_mask field.
37923         (oacc_dim_call): New function, abstracted out from oacc_thread_numbers.
37924         (oacc_thread_numbers): Use oacc_dim_call.
37925         (oacc_xform_tile): New.
37926         (new_oacc_loop_raw): Initialize e_mask, adjust for ifns vector.
37927         (finish_oacc_loop): Adjust for ifns vector.
37928         (oacc_loop_discover_walk): Append loop abstraction sites to list,
37929         add case for GOACC_TILE fns.
37930         (oacc_loop_xform_loop): Delete.
37931         (oacc_loop_process): Iterate over call list directly, and add
37932         handling for GOACC_TILE fns.
37933         (oacc_loop_fixed_partitions): Determine default auto, deal with TILE,
37934         dump partitioning.
37935         (oacc_loop_auto_partitions): Add outer_assign parm. Assign all but
37936         vector partitioning to outer loops.  Assign 2 partitions to loops
37937         when available. Add TILE handling.
37938         (oacc_loop_partition): Adjust oacc_loop_auto_partitions call.
37939         (execite_oacc_device_lower): Process GOACC_TILE fns,
37940         ignore unknown specs.
37941         * tree-nested.c (convert_nonlocal_omp_clauses): Allow OMP_CLAUSE_TILE.
37942         * tree.c (omp_clause_num_ops): Adjust TILE ops.
37943         * tree.h (OMP_CLAUSE_TILE_ITERVAR, OMP_CLAUSE_TILE_COUNT): New.
37944
37945 2017-02-09  Gerald Pfeifer  <gerald@pfeifer.com>
37946
37947         * configure.ac (ACX_BUGURL): Update.
37948         * configure: Regenerate.
37949
37950 2017-02-09  Richard Biener  <rguenther@suse.de>
37951
37952         PR tree-optimization/69823
37953         * graphite-scop-detection.c (scop_detection::harmful_loop_in_region):
37954         Properly enumerate all BBs in the region.  Use auto_vec/auto_bitmap.
37955
37956 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
37957
37958         * config/arc/arc-c.def: Add __NPS400__ definition.
37959         * config/arc/arc.h (CPP_SPEC): Don't define __NPS400__ here.
37960         (TARGET_NPS400): Define.
37961
37962 2017-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
37963
37964         * config/arc/arc-arch.h (arc_arch_t): Move unchanged to earlier in
37965         file.
37966         (arc_cpu_t): Change base_architecture field, arch, to a arc_arc_t
37967         pointer, arch_info.
37968         (arc_cpu_types): Fill the arch_info field with a pointer into the
37969         arc_arch_types table.
37970         (arc_selected_cpu): Declare.
37971         * config/arc/arc.c (arc_selected_cpu): Make global.
37972         (arc_selected_arch): Delete.
37973         (arc_base_cpu): Delete.
37974         (arc_override_options): Remove references to deleted variables,
37975         update access to arch information.
37976         (ARC_OPT): Update access to arch information.
37977         (ARC_OPTX): Likewise.
37978         * config/arc/arc.h (arc_base_cpu): Remove declaration.
37979         (TARGET_ARC600): Update access to arch information.
37980         (TARGET_ARC601): Likewise.
37981         (TARGET_ARC700): Likewise.
37982         (TARGET_EM): Likewise.
37983         (TARGET_HS): Likewise.
37984         * config/arc/driver-arc.c (arc_cpu_to_as): Update access to arch
37985         information.
37986
37987 2017-02-08  Pat Haugen  <pthaugen@us.ibm.com>
37988
37989         PR target/78604
37990         * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Invert
37991         condition/operands for integer GE/LE/GEU/LEU operations.
37992
37993 2017-02-08  Segher Boessenkool  <segher@kernel.crashing.org>
37994
37995         PR translation/79397
37996         * config/rs6000/rs6000.opt (maltivec=le, maltivec=be): Fix spelling
37997         of AltiVec.
37998
37999 2017-02-08  Martin Jambor  <mjambor@suse.cz>
38000
38001         PR ipa/79375
38002         * ipa-prop.c (ipa_alloc_node_params): Make static, return bool
38003         whether allocation happened.
38004         (ipa_initialize_node_params): Do not call ipa_alloc_node_params if
38005         nothing was allocated.
38006
38007 2017-02-08  Jakub Jelinek  <jakub@redhat.com>
38008
38009         PR tree-optimization/79408
38010         * tree-vrp.c (simplify_div_or_mod_using_ranges): If op1 is not
38011         constant, but SSA_NAME with a known integer range, use the minimum
38012         of that range instead of op1 to determine if modulo can be replaced
38013         with its first operand.
38014
38015 2016-02-08  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38016
38017         * config/riscv/riscv.c (riscv_build_integer_1): Avoid use of INT16_MAX.
38018
38019 2017-02-08  Richard Biener  <rguenther@suse.de>
38020
38021         PR tree-optimization/71824
38022         * graphite-scop-detection.c (scop_detection::build_scop_breadth):
38023         Check all loops contained in the merged region.
38024
38025 2017-02-07  Andrew Pinski  <apinski@cavium.com>
38026
38027         * config/aarch64/aarch64.md (popcount<mode>2): New pattern.
38028
38029 2017-02-07  Andrew Pinski  <apinski@cavium.com>
38030
38031         * config/aarch64/aarch64-cores.def (thunderx): Disable LSE.
38032         (thunderxt88): Likewise.
38033         (thunderxt81): Disable LSE and change v8.1 to v8.
38034         (thunderxt83): Likewise.
38035
38036 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
38037             Richard Biener  <rguenther@suse.de>
38038
38039         PR middle-end/79399
38040         * ira-int.h (struct target_ira_int): Change x_max_struct_costs_size
38041         type from int to size_t.
38042         * ira-costs.c (struct_costs_size): Change type from int to size_t.
38043
38044 2017-02-07  Jakub Jelinek  <jakub@redhat.com>
38045
38046         PR rtl-optimization/79386
38047         * cprop.c (bypass_conditional_jumps): Initialize
38048         bypass_last_basic_block already before splitting bbs after
38049         unconditional traps...
38050         (bypass_conditional_jumps): ... rather than here.
38051
38052         PR target/79299
38053         * config/i386/sse.md (xtg_mode, gatherq_mode): New mode attrs.
38054         (*avx512f_gathersi<mode>, *avx512f_gathersi<mode>_2,
38055         *avx512f_gatherdi<mode>, *avx512f_gatherdi<mode>_2): Use them,
38056         fix -masm=intel patterns.
38057
38058 2017-02-07  Richard Biener  <rguenther@suse.de>
38059
38060         PR tree-optimization/79256
38061         PR middle-end/79278
38062         * builtins.c (get_object_alignment_2): Use min_align_of_type
38063         to extract alignment for MEM_REFs to honor BIGGEST_FIELD_ALIGNMENT
38064         and ADJUST_FIELD_ALIGN.
38065
38066         * doc/tm.texi.in (ADJUST_FIELD_ALIGN): Adjust to take additional
38067         type parameter.
38068         * doc/tm.texi: Regenerate.
38069         * stor-layout.c (layout_decl): Adjust.
38070         (update_alignment_for_field): Likewise.
38071         (place_field): Likewise.
38072         (min_align_of_type): Likewise.
38073         * config/arc/arc.h (ADJUST_FIELD_ALIGN): Adjust.
38074         * config/epiphany/epiphany.h (ADJUST_FIELD_ALIGN): Likewise.
38075         * config/epiphany/epiphany.c (epiphany_adjust_field_align): Likewise.
38076         * config/frv/frv.h (ADJUST_FIELD_ALIGN): Likewise.
38077         * config/frv/frv.c (frv_adjust_field_align): Likewise.
38078         * config/i386/i386.h (ADJUST_FIELD_ALIGN): Likewise.
38079         * config/i386/i386.c (x86_field_alignment): Likewise.
38080         * config/rs6000/aix.h (ADJUST_FIELD_ALIGN): Likewise.
38081         * config/rs6000/darwin.h (ADJUST_FIELD_ALIGN): Likewise.
38082         * config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise.
38083         * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
38084         * config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Likewise.
38085         * config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p):
38086          Likewise.
38087
38088         Revert
38089         2017-01-30  Richard Biener  <rguenther@suse.de>
38090
38091         PR tree-optimization/79256
38092         * targhooks.c (default_builtin_vector_alignment_reachable): Honor
38093         BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
38094         alignment on TYPE.
38095
38096 2017-02-07  Toma Tabacu  <toma.tabacu@imgtec.com>
38097
38098         * config/mips/mips.c (mips_expand_builtin_insn): Convert the QImode
38099         argument of the pshufh, psllh, psllw, psrah, psraw, psrlh, psrlw
38100         builtins to SImode and emit a zero-extend, if necessary.
38101
38102 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
38103
38104         * docs/invoke.texi (RISC-V Options): Alphabetize.
38105
38106 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
38107
38108         * doc/invoke.texi (RISC-V Options): Use two spaces to separate
38109         options.
38110
38111 2017-02-06  Palmer Dabbelt  <palmer@dabbelt.com>
38112
38113         * config/riscv/riscv.c: New file.
38114         * common/config/riscv/riscv-common.c: Likewise.
38115         * config.gcc: Likewise.
38116         * config/riscv/constraints.md: Likewise.
38117         * config/riscv/elf.h: Likewise.
38118         * config/riscv/generic.md: Likewise.
38119         * config/riscv/linux.h: Likewise.
38120         * config/riscv/multilib-generator: Likewise.
38121         * config/riscv/peephole.md: Likewise.
38122         * config/riscv/pic.md: Likewise.
38123         * config/riscv/predicates.md: Likewise.
38124         * config/riscv/riscv-builtins.c: Likewise.
38125         * config/riscv/riscv-c.c: Likewise.
38126         * config/riscv/riscv-ftypes.def: Likewise.
38127         * config/riscv/riscv-modes.def: Likewise.
38128         * config/riscv/riscv-opts.h: Likewise.
38129         * config/riscv/riscv-protos.h: Likewise.
38130         * config/riscv/riscv.h: Likewise.
38131         * config/riscv/riscv.md: Likewise.
38132         * config/riscv/riscv.opt: Likewise.
38133         * config/riscv/sync.md: Likewise.
38134         * config/riscv/t-elf-multilib: Likewise.
38135         * config/riscv/t-linux: Likewise.
38136         * config/riscv/t-linux-multilib: Likewise.
38137         * config/riscv/t-riscv: Likewise.
38138         * configure.ac: Likewise.
38139         * doc/contrib.texi: Add Kito Cheng, Palmer Dabbelt, and Andrew
38140         Waterman as RISC-V maintainers.
38141         * doc/install.texi: Add RISC-V entries.
38142         * doc/invoke.texi: Add RISC-V options section.
38143         * doc/md.texi: Add RISC-V constraints section.
38144         * configure: Regenerated.
38145
38146 2017-02-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
38147
38148         PR target/66144
38149         * config/rs6000/vector.md (vcond<mode><mode>): Allow the true and
38150         false values to be constant vectors with all 0 or all 1 bits set.
38151         (vcondu<mode><mode>): Likewise.
38152         * config/rs6000/predicates.md (vector_int_reg_or_same_bit): New
38153         predicate.
38154         (fpmask_comparison_operator): Update comment.
38155         (vecint_comparison_operator): New predicate.
38156         * config/rs6000/rs6000.c (rs6000_emit_vector_cond_expr): Optimize
38157         vector conditionals when the true and false values are constant
38158         vectors with all 0 bits or all 1 bits set.
38159
38160 2017-02-06  Martin Sebor  <msebor@redhat.com>
38161
38162         PR  tree-optimization/79376
38163         * gimple-fold.c (get_range_strlen): Set the minimum length to zero.
38164
38165 2017-02-06  Uros Bizjak  <ubizjak@gmail.com>
38166
38167         * config/i386/sse.md (vector modes -> vec_extract* splitter): Use
38168         explicit subreg RTX with operand 1.  Use VECTOR_MODE_P predicate
38169         to simplify split condition.
38170
38171 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
38172
38173         * omp-expand.c (oxpand_omp_atomic_fetch_op,
38174         expand_omp_atomic_pipeline): Return false if can_atomic_load_p is
38175         false.
38176
38177 2017-02-06  Segher Boessenkool  <segher@kernel.crashing.org>
38178
38179         PR rtl-optimization/68664
38180         * target.def (can_speculate_insn): New hook.
38181         * doc/tm.texi.in (TARGET_SCHED_CAN_SPECULATE_INSN): New hook.
38182         * doc/tm.texi: Regenerate.
38183         * sched-rgn.c (can_schedule_ready_p): Use the new hook.
38184         * config/rs6000/rs6000.c (TARGET_SCHED_CAN_SPECULATE_INSN): New macro.
38185         (rs6000_sched_can_speculate_insn): New function.
38186
38187 2017-02-06  Jakub Jelinek  <jakub@redhat.com>
38188
38189         PR tree-optimization/79284
38190         * tree-vectorizer.h (VECT_SCALAR_BOOLEAN_TYPE_P): Define.
38191         * tree-vect-stmts.c (vect_get_vec_def_for_operand,
38192         vectorizable_mask_load_store, vectorizable_operation,
38193         vect_is_simple_cond, get_same_sized_vectype): Use it instead
38194         of comparing TREE_CODE of a type against BOOLEAN_TYPE.
38195         * tree-vect-patterns.c (check_bool_pattern, search_type_for_mask_1,
38196         vect_recog_bool_pattern, vect_recog_mask_conversion_pattern): Likewise.
38197         * tree-vect-slp.c (vect_get_constant_vectors): Likewise.
38198         * tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
38199         Remove redundant gimple_code (stmt) == GIMPLE_ASSIGN test after
38200         is_gimple_assign (stmt).  Replace another such test with
38201         is_gimple_assign (stmt).
38202
38203 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
38204
38205         PR target/78883
38206         * config/avr/avr.c (rtl-iter.h): Include it.
38207         (TARGET_LEGITIMATE_COMBINED_INSN): New hook define...
38208         (avr_legitimate_combined_insn): ...and implementation.
38209
38210 2017-02-06  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38211
38212         * config/s390/predicates.md ("larl_operand"): Use macros from hwint.h.
38213         * config/s390/s390.c (s390_const_operand_ok)
38214         (s390_canonicalize_comparison, s390_extract_part)
38215         (s390_single_part, s390_contiguous_bitmask_nowrap_p)
38216         (s390_contiguous_bitmask_p, s390_rtx_costs)
38217         (legitimize_pic_address): Likewise.
38218         * config/s390/s390.md ("clzdi2", "clztidi2"): Likewise.
38219         * config/s390/vx-builtins.md ("vec_genbytemaskv16qi")
38220         ("vec_permi<mode>", "vfae<mode>", "*vfaes<mode>", "vstrc<mode>")
38221         ("*vstrcs<mode>"): Use UINTVAL() to set unsigned HOST_WIDE_INT.
38222         * config/s390/vector.md ("vec_vfenes<mode>"): Likewise.
38223
38224 2017-02-06  Georg-Johann Lay  <avr@gjlay.de>
38225
38226         * config/avr/avr.md (*addhi3_zero_extend): Add alternative where
38227         REGNO($0) == REGNO($1).
38228
38229 2017-02-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38230
38231         * config/s390/linux.h(SIZE_TYPE): Add comment.
38232
38233 2017-02-06  Julian Brown  <julian@codesourcery.com>
38234             Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
38235             Virendra Pathak  <virendra.pathak@broadcom.com>
38236
38237         * config/aarch64/aarch64-cores.def: Change the scheduler
38238         to Thunderx2t99.
38239         * config/aarch64/aarch64.md: Include thunderx2t99.md.
38240         * config/aarch64/thunderx2t99.md: New file.
38241
38242 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
38243
38244         * doc/standards.texi (Go Language): Update link to language
38245         standard.
38246
38247 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
38248
38249         * tree-eh.c (lower_resx): Sanitize profile.
38250         (cleanup_empty_eh_move_lp): Likewise.
38251
38252 2017-02-05  Jan Hubicka  <hubicka@ucw.cz>
38253
38254         PR tree-ssa/79347
38255         * cfgloopmanip.c (lv_adjust_loop_entry_edge, loop_version): Add
38256         ELSE_PROB.
38257         * cfgloopmanip.h (loop_version): Update prototype.
38258         * modulo-sched.c (sms_schedule): Update call of loop_version.
38259         * tree-if-conv.c(version_loop_for_if_conversion): Likewise.
38260         * tree-parloops.c (gen_parallel_loop): Likewise.
38261         * tree-ssa-loop-manip.c (tree_transform_and_unroll_loop): Likewise.
38262         * tree-ssa-loop-split.c (split_loop): Likewise.
38263         * tree-ssa-loop-unswitch.c (tree_unswitch_loop): Likewise.
38264         * tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
38265
38266 2017-02-05  Martin Liska  <mliska@suse.cz>
38267
38268         PR bootstrap/78985
38269         * config/s390/s390.c (s390_gimplify_va_arg): Initialize local
38270         variable to NULL.
38271         (print_operand_address): Initialize a struct to zero.
38272
38273 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
38274
38275         * doc/contrib.texi (Contributors): Refer to Hans Boehm's
38276         garbage collector only in textual form.
38277
38278 2017-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
38279
38280         * doc/extend.texi (x86 specific memory model extensions for
38281         transactional memory): Simplify a phrase.
38282
38283 2017-02-05  Eric Botcazou  <ebotcazou@adacore.com>
38284
38285         PR target/79353
38286         * config/sparc/sync.md (atomic_loaddi_1): Replace 'U' constraint with
38287         'r', 'm' constraint with 'T' and !TARGET_ARCH64 with TARGET_ARCH32.
38288         (atomic_storedi_1): Likewise.
38289
38290 2017-02-04  Jakub Jelinek  <jakub@redhat.com>
38291
38292         PR tree-optimization/79338
38293         * tree-parloops.c (gather_scalar_reductions): Don't call
38294         vect_analyze_loop_form for loop->inner before destroying loop's
38295         loop_vinfo.
38296
38297 2017-02-03  Martin Sebor  <msebor@redhat.com>
38298
38299         PR tree-optimization/79327
38300         * gimple-ssa-sprintf.c (tree_digits): Avoid adding the base prefix
38301         when precision has resulted in leading zeros.
38302         (format_integer): Adjust the likely counter to assume an unknown
38303         argument that may be zero is non-zero.
38304
38305 2017-02-03  Jason Merrill  <jason@redhat.com>
38306
38307         PR c++/78689
38308         * tree-inline.c (copy_tree_body_r) [COND_EXPR]: Revert change to
38309         avoid copying non-taken branch.
38310
38311 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
38312
38313         PR tree-optimization/79340
38314         * tree-vect-loop.c (vectorizable_reduction): Release
38315         vec_defs elements after safe_splicing them into other vectors.
38316         Formatting fixes.
38317
38318         PR tree-optimization/79327
38319         * gimple-ssa-sprintf.c (adjust_range_for_overflow): If returning
38320         true, always set *argmin and *argmax to TYPE_{MIN,MAX}_VALUE of
38321         dirtype.
38322         (format_integer): Use wide_int_to_tree instead of build_int_cst
38323         + to_?hwi.  If argmin is NULL, just set argmin and argmax to
38324         TYPE_{MIN,MAX}_VALUE of argtype.  Simplify and fix computation
38325         of shortest and longest sequence.
38326
38327 2017-02-03  Uros Bizjak  <ubizjak@gmail.com>
38328
38329         * config/i386/i386.c (dimode_scalar_chain::convert_reg):
38330         Use pextrd for TARGET_SSE4_1 when creating scalar copy.
38331
38332 2017-02-03  Walter Lee  <walt@tilera.com>
38333
38334         PR target/78862
38335         * config/tilegx/tilegx.md (tilegx_expand_prologue): Add blockage
38336         after initial stackframe link reg save.
38337         * config/tilepro/tilepro.md (tilepro_expand_prologue): Likewise.
38338
38339 2017-02-03  Jakub Jelinek  <jakub@redhat.com>
38340
38341         PR target/79354
38342         * config/rs6000/rs6000.md (movsi_from_sf): Use wb constraint instead of
38343         wu for stxssp alternative.
38344
38345 2017-02-03  Martin Sebor  <msebor@redhat.com>
38346
38347         PR tree-optimization/79352
38348         * gimple-fold.c (get_range_strlen): Add argument.
38349         (get_range_strlen): Change return type to bool.
38350         (get_maxval_strlen): Pass in a dummy argument.
38351         * gimple-fold.h (get_range_strlen): Change return type to bool.
38352         * gimple-ssa-sprintf.c (get_string_length): Set unlikely counter.
38353         * tree.h (array_at_struct_end_p): Add argument.
38354         * tree.c (array_at_struct_end_p): Handle it.
38355
38356 2017-02-03  Martin Liska  <mliska@suse.cz>
38357
38358         PR lto/66295
38359         * multiple_target.c (create_dispatcher_calls): Redirect edge
38360         from a caller of a dispatcher.
38361         (expand_target_clones): Make the clones local.
38362         (ipa_target_clone): Do both target clones and resolvers.
38363         (ipa_dispatcher_calls): Remove the pass.
38364         (pass_dispatcher_calls::gate): Likewise.
38365         (make_pass_dispatcher_calls): Likewise.
38366         * passes.def (pass_target_clone): Put as very first IPA early
38367         pass.
38368
38369 2017-02-03  Martin Liska  <mliska@suse.cz>
38370
38371         * symtab.c (symtab_node::binds_to_current_def_p): Bail out
38372         in case of a function with ifunc attribute.
38373
38374 2017-02-03  Martin Liska  <mliska@suse.cz>
38375
38376         * cgraph.c (cgraph_node::dump): Dump function version info.
38377         * symtab.c (symtab_node::dump_base): Add missing new line.
38378
38379 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
38380
38381         * tree-ssa-ifcombine.c (update_profile_after_ifcombine): New function.
38382         (ifcombine_ifandif): Use it.
38383
38384 2017-02-03  Martin Liska  <mliska@suse.cz>
38385
38386         * doc/invoke.texi: Document default value for
38387         use-after-scope-direct-emission-threshold.
38388
38389 2017-02-03  Martin Liska  <mliska@suse.cz>
38390
38391         PR tree-optimization/79339
38392         * gimple-ssa-sprintf.c (format_floating_max): Call mpfr_clear.
38393         (format_floating): Likewise.
38394
38395 2017-02-03  Martin Liska  <mliska@suse.cz>
38396
38397         PR ipa/79337
38398         * ipa-prop.c (ipa_node_params_t::insert): Remove current
38399         implementation.
38400         (ipa_node_params_t::remove): Likewise.
38401         * ipa-prop.h (ipa_node_params::ipa_node_params): Make default
38402         initialization from removed ipa_node_params_t::insert.
38403         (ipa_node_params::~ipa_node_params): Move from removed
38404         ipa_node_params_t::release.
38405         * symbol-summary.h (symbol_summary::m_released): New member.
38406         Do not release a summary twice.  Do not allow to call finalizer
38407         for types of a summary that live in GGC memory.
38408
38409 2017-02-02  Naveen H.S  <Naveen.Hurugalawadi@cavium.com>
38410
38411         * config/aarch64/aarch64.c (thunderx2t99_tunings): Enable AES and
38412         cmp_branch fusion.
38413
38414 2017-02-02  Martin Sebor  <msebor@redhat.com>
38415
38416         PR middle-end/79275
38417         * gimple-ssa-sprintf.c (get_string_length): Set lower bound to zero.
38418         (format_string): Tighten up the range of output for non-constant
38419         strings and correct the expected range for wide non-constant strings.
38420
38421 2017-02-02  Martin Sebor  <msebor@redhat.com>
38422
38423         * doc/invoke.texi (-maccumulate-args): Fix bad grammar.
38424
38425         PR middle-end/32003
38426         * doc/invoke.texi (-fdump-tree-): Remove pass-specific options from
38427         index.
38428         (-fdump-tree-@var): Add to index and document how to come up
38429         with pass-specific option and dump file names.
38430         (-fdump-passes): Clarify where to look for output.
38431
38432 2017-02-02  Jan Hubicka  <hubicka@ucw.cz>
38433
38434         PR middle-end/77445
38435         * tree-ssa-threadbackward.c (profitable_jump_thread_path): Dump
38436         statistics of the analyzed path; allow threading for speed when
38437         any of BBs along the path are optimized for speed.
38438
38439 2017-02-02  Eric Botcazou  <ebotcazou@adacore.com>
38440
38441         PR middle-end/78468
38442         * emit-rtl.c (init_emit): Add ??? comment for problematic alignment
38443         settings of the virtual registers.
38444
38445         Revert again
38446         2016-08-23  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38447
38448         * explow.c (get_dynamic_stack_size): Take known alignment of stack
38449         pointer + STACK_DYNAMIC_OFFSET into account when calculating the size
38450         needed.
38451
38452 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38453
38454         * config/s390/vx-builtins.md ("vec_ceil", "vec_floor")
38455         ("vec_trunc", "vec_roundc", "vec_round"): Remove expanders.
38456
38457 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38458
38459         * config/s390/s390.md: Add missing comments with the expanded
38460         mnemonics.
38461         * config/s390/vector.md: Likewise.
38462         * config/s390/vx-builtins.md: Likewise.
38463
38464 2017-02-02  Jakub Jelinek  <jakub@redhat.com>
38465
38466         PR target/79197
38467         * config/rs6000/rs6000.md (*fixuns_trunc<mode>di2_fctiduz): Rename to ...
38468         (fixuns_trunc<mode>di2): ... this, remove previous expander.  Put all
38469         conditions on a single line.
38470
38471 2017-02-02  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38472
38473         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
38474         __S390_VX__ to __VX__.
38475
38476 2017-02-01  Andrew Pinski  <apinski@cavium.com>
38477
38478         * tree-vect-loop.c (vect_compute_single_scalar_iteration_cost): Pass
38479         stmt_info to record_stmt_cost.
38480         (vect_get_known_peeling_cost): Pass stmt_info if known to
38481         record_stmt_cost.
38482         * config/aarch64/aarch64-protos.h (cpu_vector_cost): Split
38483         cpu_vector_cost field into
38484         scalar_int_stmt_cost and scalar_fp_stmt_cost.  Split vec_stmt_cost
38485         field into vec_int_stmt_cost and vec_fp_stmt_cost.
38486         * config/aarch64/aarch64.c (generic_vector_cost): Update for the
38487         splitting of scalar_stmt_cost and vec_stmt_cost.
38488         (thunderx_vector_cost): Likewise.
38489         (cortexa57_vector_cost): LIkewise.
38490         (exynosm1_vector_cost): Likewise.
38491         (xgene1_vector_cost): Likewise.
38492         (thunderx2t99_vector_cost): Improve after the splitting of the two
38493         fields.
38494         (aarch64_builtin_vectorization_cost): Update for the splitting of
38495         scalar_stmt_cost and vec_stmt_cost.
38496
38497 2017-02-01  Torvald Riegel  <triegel@redhat.com>
38498             Richard Henderson  <rth@redhat.com>
38499
38500         * builtins.c (fold_builtin_atomic_always_lock_free): Make "lock-free"
38501         conditional on existance of a fast atomic load.
38502         * optabs-query.c (can_atomic_load_p): New function.
38503         * optabs-query.h (can_atomic_load_p): Declare it.
38504         * optabs.c (expand_atomic_exchange): Always delegate to libatomic if
38505         no fast atomic load is available for the particular size of access.
38506         (expand_atomic_compare_and_swap): Likewise.
38507         (expand_atomic_load): Likewise.
38508         (expand_atomic_store): Likewise.
38509         (expand_atomic_fetch_op): Likewise.
38510         * testsuite/lib/target-supports.exp
38511         (check_effective_target_sync_int_128): Remove x86 because it provides
38512         no fast atomic load.
38513         (check_effective_target_sync_int_128_runtime): Likewise.
38514
38515 2017-02-01  Richard Biener  <rguenther@suse.de>
38516
38517         * graphite.c: Include tree-vectorizer.h for find_loop_location.
38518         (graphite_transform_loops): Provide opt-info for optimized nests.
38519         * tree-parloop.c (parallelize_loops): Provide opt-info for
38520         parallelized loops.
38521
38522 2017-02-01  Richard Biener  <rguenther@suse.de>
38523
38524         PR middle-end/79315
38525         * tree-cfg.c (move_stmt_op): Never set TREE_BLOCK when it
38526         was not set before.
38527
38528 2017-02-01  Richard Biener  <rguenther@suse.de>
38529
38530         PR tree-optimization/71824
38531         * graphite-scop-detection.c (scop_detection::build_scop_breadth):
38532         Verify the loops are valid in the merged SESE region.
38533         (scop_detection::can_represent_loop_1): Check analyzing the
38534         evolution of the number of iterations in the region succeeds.
38535
38536 2017-01-31  Ian Lance Taylor  <iant@golang.org>
38537
38538         * config/i386/i386.c (ix86_expand_split_stack_prologue): Add
38539         REG_ARGS_SIZE note to 32-bit push insns and call insn.
38540
38541 2017-01-31  David Malcolm  <dmalcolm@redhat.com>
38542
38543         PR preprocessor/79210
38544         * input.c (get_substring_ranges_for_loc): Replace line_width
38545         assertion with error-handling.
38546
38547 2017-01-31  Richard Biener  <rguenther@suse.de>
38548
38549         PR tree-optimization/77318
38550         * graphite-sese-to-poly.c (extract_affine): Fix assert.
38551         (create_pw_aff_from_tree): Take loop parameter.
38552         (add_condition_to_pbb): Pass loop of the condition to
38553         create_pw_aff_from_tree.
38554
38555 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
38556
38557         * config/s390/s390.c (s390_asan_shadow_offset): New function.
38558         (TARGET_ASAN_SHADOW_OFFSET): Redefine.
38559
38560 2017-01-31  Michael Meissner  <meissner@linux.vnet.ibm.com>
38561
38562         PR target/78597
38563         PR target/79038
38564         * config/rs6000/rs6000-protos.h (convert_float128_to_int): Delete,
38565         no longer used.
38566         (convert_int_to_float128): Likewise.
38567         * config/rs6000/rs6000.c (convert_float128_to_int): Likewise.
38568         (convert_int_to_float128): Likewise.
38569         * config/rs6000/rs6000.md (UNSPEC_IEEE128_MOVE): Likewise.
38570         (UNSPEC_IEEE128_CONVERT): Likewise.
38571         (floatsi<mode>2, FLOAT128 iterator): Bypass calling
38572         rs6000_expand_float128_convert if we have IEEE 128-bit hardware.
38573         Use local variables for IBM extended format.
38574         (fix_trunc<mode>si2, FLOAT128 iterator): Likewise.
38575         (fix_trunc<mode>si2_fprs): Likewise.
38576         (fixuns_trunc<IEEE128:mode><SDI:mode>2): Likewise.
38577         (floatuns<IEEE128:mode>2, IEEE128 iterator): Likewise.
38578         (fix<uns>_<mode>si2_hw): Rework the IEEE 128-bt hardware support
38579         to know that we can now have integers of all sizes in vector
38580         registers.
38581         (fix<uns>_<mode>di2_hw): Likewise.
38582         (float<uns>_<mode>si2_hw): Likewise.
38583         (fix_<mode>si2_hw): Likewise.
38584         (fixuns_<mode>si2_hw): Likewise.
38585         (float<uns>_<mode>di2_hw): Likewise.
38586         (float_<mode>di2_hw): Likewise.
38587         (float_<mode>si2_hw): Likewise.
38588         (floatuns_<mode>di2_hw): Likewise.
38589         (floatuns_<mode>si2_hw): Likewise.
38590         (xscvqp<su>wz_<mode>): Delete, no longer used.
38591         (xscvqp<su>dz_<mode>): Likewise.
38592         (xscv<su>dqp_<mode>): Likewise.
38593         (ieee128_mfvsrd_64bit): Likewise.
38594         (ieee128_mfvsrd_32bit): Likewise.
38595         (ieee128_mfvsrwz): Likewise.
38596         (ieee128_mtvsrw): Likewise.
38597         (ieee128_mtvsrd_64bit): Likewise.
38598         (ieee128_mtvsrd_32bit): Likewise.
38599
38600 2017-01-31  Martin Liska  <mliska@suse.cz>
38601
38602         PR ipa/79285
38603         * ipa-prop.c (ipa_free_all_node_params): Call release method
38604         instead of ~sumbol_summary to not to trigger double times
38605         dtor of hash_map.
38606
38607 2017-01-31  Aldy Hernandez  <aldyh@redhat.com>
38608
38609         PR tree-optimization/71691
38610         * bitmap.h (class auto_bitmap): New.
38611         * tree-ssa-loop-unswitch.c (tree_may_unswitch_on): Call
38612         is_maybe_undefined instead of ssa_undefined_value_p.
38613
38614 2017-01-31  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
38615
38616         * config/s390/s390-c.c (s390_cpu_cpp_builtins_internal): Rename
38617         __S390_ARCH_LEVEL__ to __ARCH__.
38618
38619 2017-01-31  Jakub Jelinek  <jakub@redhat.com>
38620
38621         PR tree-optimization/79267
38622         * value-prof.c (gimple_ic): Only drop lhs for noreturn calls
38623         if should_remove_lhs_p is true.
38624
38625 2017-01-30  Alexandre Oliva  <aoliva@redhat.com>
38626
38627         PR debug/63238
38628         * dwarf2out.c (clone_as_declaration): Drop DW_AT_alignment.
38629         (add_alignment_attribute): New.
38630         (base_type_die): Add alignment attribute.
38631         (subrange_type_die): Likewise.
38632         (modified_type_die): Likewise.
38633         (gen_array_type_die): Likewise.
38634         (gen_descr_array_type_die: Likewise.
38635         (gen_enumeration_type_die): Likewise.
38636         (gen_subprogram_die): Likewise.
38637         (gen_variable_die): Likewise.
38638         (gen_field_die): Likewise.
38639         (gen_ptr_to_mbr_type_die): Likewise.
38640         (gen_struct_or_union_type_die): Likewise.
38641         (gen_subroutine_type_die): Likewise.
38642         (gen_typedef_die): Likewise.
38643         (base_type_cmp): Compare alignment attribute.
38644
38645 2017-01-30  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
38646
38647         PR target/79170
38648         * config/rs6000/altivec.md (*setb_internal): Rename to setb_signed.
38649         (setb_unsigned) New pattern for setb with CCUNS.
38650         * config/rs6000/rs6000.c (expand_block_compare): Use a different
38651         subfc./subfe sequence to avoid overflow problems.  Generate a
38652         shorter sequence with cmpld/setb for power9.
38653         * config/rs6000/rs6000.md (subf<mode>3_carry_dot2): Add a new pattern
38654         for generating subfc. instruction.
38655         (cmpstrsi): Add TARGET_POPCNTD predicate as the generate sequence
38656         now uses this instruction.
38657
38658 2017-01-30  Ian Lance Taylor  <iant@google.com>
38659
38660         PR debug/79289
38661         * dwarf2out.c (gen_type_die_with_usage): When picking a variant
38662         for FUNCTION_TYPE/METHOD_TYPE, use the first matching one.
38663
38664 2017-01-30  Martin Sebor  <msebor@redhat.com>
38665
38666         * gimple-ssa-sprintf.c (fmtresult::adjust_for_width_or_precision):
38667         Move constant to the right of a relational operator.
38668         (get_mpfr_format_length, format_character, format_string): Ditto.
38669         (should_warn_p, maybe_warn): Same.
38670
38671         * doc/invoke.texi (-Wformat-truncation=1): Fix typo.
38672
38673 2017-01-30  Maxim Ostapenko  <m.ostapenko@samsung.com>
38674
38675         PR lto/79061
38676         * asan.c (get_translation_unit_decl): Remove function.
38677         (asan_add_global): Force has_dynamic_init to zero in LTO mode.
38678
38679 2017-01-30  Martin Liska  <mliska@suse.cz>
38680
38681         PR gcov-profile/79259
38682         * opts.c (common_handle_option): Enable flag_ipa_bit_cp w/
38683         -fprofile-generate.
38684
38685 2017-01-30  Martin Liska  <mliska@suse.cz>
38686
38687         PR bootstrap/78985
38688         * config/aarch64/cortex-a57-fma-steering.c (func_fma_steering::analyze):
38689         Initialize variables with NULL value.
38690
38691 2017-01-30  Richard Earnshaw  <rearnsh@arm.com>
38692
38693         PR target/79260
38694         * config.gcc (arm*-*-*): Add arm/arm-flags.h and arm/arm-isa.h to
38695         tm_p_file.
38696         * arm/arm-protos.h: Don't directly include arm-flags.h and arm-isa.h.
38697
38698 2017-01-30  Richard Biener  <rguenther@suse.de>
38699
38700         PR tree-optimization/79276
38701         * tree-vrp.c (process_assert_insertions): Properly adjust common
38702         when removing a duplicate.
38703
38704 2017-01-30  Richard Biener  <rguenther@suse.de>
38705
38706         PR tree-optimization/79256
38707         * targhooks.c (default_builtin_vector_alignment_reachable): Honor
38708         BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
38709         alignment on TYPE.
38710         * tree.c (build_aligned_type): Set TYPE_USER_ALIGN.
38711
38712 2017-01-30  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38713
38714         PR target/79240
38715         * config/s390/s390.md ("*r<noxa>sbg_<mode>_srl_bitmask")
38716         ("*r<noxa>sbg_<mode>_sll_bitmask")
38717         ("*extzv_<mode>_srl<clobbercc_or_nocc>")
38718         ("*extzv_<mode>_sll<clobbercc_or_nocc>"):
38719         Use contiguous_bitmask_nowrap_operand.
38720
38721 2017-01-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
38722
38723         PR target/79268
38724         * config/rs6000/altivec.h (vec_xl): Revise #define.
38725         (vec_xst): Likewise.
38726
38727 2017-01-27  Uros Bizjak  <ubizjak@gmail.com>
38728
38729         * config/i386/i386.c (print_reg): Use REGNO instead of true_regnum.
38730
38731 2017-01-27  Bernd Schmidt  <bschmidt@redhat.com>
38732
38733         PR rtl-optimization/79194
38734         * cprop.c (one_cprop_pass): Move deletion of code after unconditional
38735         traps before call to bypass_conditional_jumps.
38736
38737 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
38738
38739         PR tree-optimization/71374
38740         * lra-constraints.c (check_conflict_input_operands): New.
38741         (match_reload): Use it.
38742
38743 2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>
38744
38745         PR target/79131
38746         * lra-assigns.c (find_hard_regno_for_1): Take endianess for into
38747         account to calculate conflict_set.
38748
38749 2017-01-27  Bin Cheng  <bin.cheng@arm.com>
38750
38751         PR rtl-optimization/78559
38752         * combine.c (try_combine): Discard REG_EQUAL and REG_EQUIV for
38753         other_insn in combine.
38754
38755 2017-01-27  Pekka Jääskeläinen  <pekka.jaaskelainen@parmance.com>
38756
38757         * builtin-types.def: Use unsigned_char_type_node for BT_UINT8.  Use
38758         uint16_type_node for BT_UINT16.
38759
38760 2017-01-27  David Malcolm  <dmalcolm@redhat.com>
38761
38762         * doc/sourcebuild.texi (Testsuites): Add "GIMPLE Tests" and
38763         "RTL Tests" to menu.
38764         (GIMPLE Tests): New node.
38765         (RTL Tests): New node.
38766
38767 2017-01-27  Richard Biener  <rguenther@suse.de>
38768
38769         PR tree-optimization/79245
38770         * tree-loop-distribution.c (distribute_loop): Apply cost
38771         modeling also to detected patterns.
38772
38773 2017-01-27  Richard Biener  <rguenther@suse.de>
38774
38775         PR tree-optimization/71433
38776         * tree-vrp.c (register_new_assert_for): Revert earlier changes.
38777         (compare_assert_loc): New function.
38778         (process_assert_insertions): Sort and optimize assert locations
38779         to remove duplicates and push down identical assertions on
38780         edges to their destination block.
38781
38782 2017-01-27  Richard Biener  <rguenther@suse.de>
38783
38784         PR tree-optimization/79244
38785         * tree-vrp.c (remove_range_assertions): Forcefully propagate
38786         out SSA names even if abnormal.
38787
38788 2017-01-27  Jakub Jelinek  <jakub@redhat.com>
38789
38790         * realmpfr.h: Poison MPFR_RND{N,Z,U,D}.
38791         * gimple-ssa-sprintf.c (format_floating_max): Use GMP_RNDN
38792         instead of MPFR_RNDN.
38793
38794 2017-01-27  Richard Earnshaw  <rearnsha@arm.com>
38795
38796         PR target/79239
38797         * arm.c (arm_option_override): Don't call build_target_option_node
38798         until after doing all option overrides.
38799         (arm_valid_target_attribute_tree): Likewise.
38800
38801 2017-01-27  Martin Liska  <mliska@suse.cz>
38802
38803         * doc/invoke.texi (-fprofile-arcs): Document profiling support
38804         for {cd}tors and C++ {cd}tors.
38805
38806 2017-01-27  Dominik Vogt  <vogt@linux.vnet.ibm.com>
38807
38808         * config/s390/s390.md ("*setmem_long_and")
38809         ("*setmem_long_and_31z"): Use zero_extend instead of and.
38810
38811 2017-01-26  Martin Sebor  <msebor@redhat.com>
38812
38813         * gimple-ssa-sprintf.c (format_floating): Simplify the computation
38814         of precision.
38815
38816 2017-01-26  Martin Sebor  <msebor@redhat.com>
38817
38818         * gimple-ssa-sprintf.c (format_floating): Test HAVE_XFmode and
38819         HAVE_DFmode before using XFmode or DFmode.
38820         (parse_directive): Avoid using the z length modifier to avoid
38821         the ISO C++98 does not support the â€˜z’ gnu_printf length modifier.
38822
38823         PR middle-end/78703
38824         * gimple-ssa-sprintf.c (adjust_for_width_or_precision): Change
38825         to accept adjustment as an array.
38826         (get_int_range): New function.
38827         (struct directive): Make width and prec arrays.
38828         (directive::set_width, directive::set_precision): Call get_int_range.
38829         (format_integer, format_floating): Handle width and precision ranges.
38830         (format_string, parse_directive): Same.
38831
38832 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38833
38834         PR debug/79129
38835         * dwarf2out.c (generate_skeleton_bottom_up): For children with
38836         comdat_type_p set, just clone them, but keep the children in the
38837         original DIE.
38838
38839         PR debug/78835
38840         * dwarf2out.c (prune_unused_types): Mark all functions with DIEs
38841         which have direct callers with -fvar-tracking-assignments enabled
38842         in the current TU.
38843         (resolve_addr): Avoid adding skeleton DIEs for DW_AT_call_origin
38844         inside of type units.
38845
38846 2017-01-26  Martin Sebor  <msebor@redhat.com>
38847
38848         PR middle-end/78703
38849         * gimple-ssa-sprintf.c (struct result_range): Add likely and
38850         unlikely counters.
38851         (struct format_result): Replace number_chars, number_chars_min,
38852         and number_chars_max with a single member of struct result_range.
38853         Remove bounded.
38854         (format_result::operator+=): Adjust.
38855         (struct fmtresult): Remove bounded.  Handle likely and unlikely
38856         counters.
38857         (fmtresult::adjust_for_width_or_precision): New function.
38858         (fmtresult:type_max_digits): New function.
38859         (bytes_remaining): Handle likely and unlikely counters.
38860         (min_bytes_remaining): Remove.
38861         (format_percent): Simplify.
38862         (format_integer, format_floating): Set likely and unlikely counters.
38863         (get_string_length, format_character, format_string): Same.
38864         (format_plain, should_warn_p): New function.
38865         (maybe_warn): Call should_warn_p.  Update diagnostic messages
38866         and handle those for all directives, including plain strings.
38867         (format_directive): Handle likely and unlikely counters.
38868         Remove unnecessary quoting from diagnostics.  Add an informational
38869         note.
38870         (add_bytes): Remove.
38871         (pass_sprintf_length::compute_format_length): Simplify.
38872         (try_substitute_return_value): Handle likely and unlikely counters.
38873
38874 2017-01-26  Carl Love  <cel@us.ibm.com>
38875
38876         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Remove
38877         bogus entries for the P8V_BUILTIN_VEC_VGBBD built-ins
38878
38879 2017-01-26  Vladimir Makarov  <vmakarov@redhat.com>
38880
38881         PR target/79131
38882         * lra-assigns.c (setup_live_pseudos_and_spill_after_risky): Take
38883         endianess for subregs into account.
38884         * lra-constraints.c (lra_constraints): Do risky transformations
38885         always on the first iteration.
38886         * lra-lives.c (check_pseudos_live_through_calls): Add arg
38887         last_call_used_reg_set.
38888         (process_bb_lives): Define and use last_call_used_reg_set.
38889         * lra.c (lra): Always continue after lra_constraints on the first
38890         iteration.
38891
38892 2017-01-26  Kirill Yukhin  <kirill.yukhin@gmail.com>
38893
38894         * gcc.target/i386/avx512bw-kshiftlq-2.c: Use unsigned long long
38895         constant.
38896         * gcc.target/i386/avx512bw-kshiftrq-2.c: Ditto.
38897
38898 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38899
38900         * config/i386/avx512fintrin.h (_ktest_mask16_u8,
38901         _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): Move to ...
38902         * config/i386/avx512dqintrin.h (_ktest_mask16_u8,
38903         _ktestz_mask16_u8, _ktestc_mask16_u8, _kadd_mask16): ... here.
38904         * config/i386/i386-builtin.def (__builtin_ia32_ktestchi,
38905         __builtin_ia32_ktestzhi, __builtin_ia32_kaddhi): Use
38906         OPTION_MASK_ISA_AVX512DQ instead of OPTION_MASK_ISA_AVX512F.
38907         * config/i386/sse.md (SWI1248_AVX512BWDQ2): New mode iterator.
38908         (kadd<mode>, ktest<mode>): Use it instead of SWI1248_AVX512BWDQ.
38909
38910 2017-01-26  Marek Polacek  <polacek@redhat.com>
38911
38912         PR c/79199
38913         * fold-const.c (operand_equal_p) [COND_EXPR]: Use OP_SAME_WITH_NULL
38914         for the third operand.
38915
38916 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38917
38918         PR middle-end/79236
38919         * omp-low.c (struct omp_context): Add simt_stmt field.
38920         (scan_omp_for): Return omp_context *.
38921         (scan_omp_simd): Set simt_stmt on the non-_simt_ SIMD
38922         context to the _simt_ SIMD stmt.
38923         (lower_omp_for): For combined SIMD with sibling _simt_
38924         SIMD, make sure to use the same decls in _looptemp_
38925         clauses as in the sibling.
38926
38927 2017-01-26  David Sherwood  <david.sherwood@arm.com>
38928
38929         PR middle-end/79212
38930         * gimplify.c (omp_notice_variable): Add GOVD_SEEN flag to variables in
38931         all contexts.
38932
38933 2017-01-26  Jakub Jelinek  <jakub@redhat.com>
38934
38935         PR target/70465
38936         * reg-stack.c (emit_swap_insn): Instead of fld a; fld b; fxchg %st(1);
38937         emit fld b; fld a; if possible.
38938
38939         * brig-builtins.def: Update copyright years.
38940         * config/arm/arm_acle_builtins.def: Update copyright years.
38941
38942 2017-01-25  Michael Meissner  <meissner@linux.vnet.ibm.com>
38943
38944         PR target/79179
38945         * config/rs6000/vsx.md (vsx_extract_<mode>_store): Use wY
38946         constraint instead of o for the stxsd instruction.
38947
38948 2017-01-25  Carl Love  <cel@us.ibm.com>
38949
38950         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Fix order
38951         of entries for ALTIVEC_BUILTIN_VEC_PACKS and P8V_BUILTIN_VEC_VGBBD.
38952
38953 2017-01-25  Jonathan Wakely  <jwakely@redhat.com>
38954
38955         * doc/invoke.texi (C++ Dialect Options): Fix typo.
38956
38957 2017-01-25  Richard Biener  <rguenther@suse.de>
38958
38959         PR tree-optimization/69264
38960         * target.def (vector_alignment_reachable): Improve documentation.
38961         * doc/tm.texi: Regenerate.
38962         * targhooks.c (default_builtin_vector_alignment_reachable): Simplify
38963         and add a comment.
38964         * tree-vect-data-refs.c (vect_supportable_dr_alignment): Revert
38965         earlier changes with respect to TYPE_USER_ALIGN.
38966         (vector_alignment_reachable_p): Likewise.  Improve dumping.
38967
38968 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38969
38970         PR target/79145
38971         * config/arm/arm.md (xordi3): Force constant operand into a register
38972         for TARGET_IWMMXT.
38973
38974 2016-01-25  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
38975
38976         * doc/invoke.texi (-fstore-merging): Correct default optimization
38977         levels at which it is enabled.
38978         (-O): Move -fstore-merging from list to...
38979         (-O2): ... Here.
38980
38981 2017-01-25  Richard Biener  <rguenther@suse.de>
38982
38983         PR debug/78363
38984         * omp-expand.c: Include debug.h.
38985         (expand_omp_taskreg): Make sure to generate early debug before
38986         outlining anything from a function.
38987         (expand_omp_target): Likewise.
38988         (grid_expand_target_grid_body): Likewise.
38989
38990 2017-01-25  Maxim Ostapenko  <m.ostapenko@samsung.com>
38991
38992         PR lto/79061
38993         * asan.c (get_translation_unit_decl): New function.
38994         (asan_add_global): Extract modules file name from globals
38995         TRANSLATION_UNIT_DECL name.
38996
38997 2017-01-24  Eric Botcazou  <ebotcazou@adacore.com>
38998
38999         PR target/77439
39000         * config/arm/arm.c (arm_function_ok_for_sibcall): Add back restriction
39001         for long calls with APCS frame and VFP.
39002
39003 2017-01-24  David Malcolm  <dmalcolm@redhat.com>
39004
39005         * cfg.c (original_copy_tables_initialized_p): New function.
39006         * cfg.h (original_copy_tables_initialized_p): New decl.
39007         * cfgrtl.c (relink_block_chain): Guard the call to
39008         free_original_copy_tables with a call to
39009         original_copy_tables_initialized_p.
39010         * cgraph.h (symtab_node::native_rtl_p): New decl.
39011         * cgraphunit.c (symtab_node::native_rtl_p): New function.
39012         (symtab_node::needed_p): Don't assert for early assembly output
39013         for __RTL functions.
39014         (cgraph_node::finalize_function): Set "force_output" for __RTL
39015         functions.
39016         (cgraph_node::analyze): Bail out early for __RTL functions.
39017         (analyze_functions): Update assertion to support __RTL functions.
39018         (cgraph_node::expand): Bail out early for __RTL functions.
39019         * final.c (rest_of_clean_state): Don't call delete_tree_ssa for
39020         __RTL functions.
39021         * function.h (struct function): Update comment for field
39022         "pass_startwith".
39023         * gimple-expr.c: Include "tree-pass.h".
39024         (gimple_has_body_p): Return false for __RTL functions.
39025         * Makefile.in (OBJS): Add run-rtl-passes.o.
39026         * pass_manager.h (gcc::pass_manager::get_rest_of_compilation): New
39027         accessor.
39028         (gcc::pass_manager::get_clean_slate): New accessor.
39029         * passes.c: Include "insn-addr.h".
39030         (should_skip_pass_p): Add logging.  Update logic for running
39031         "expand" to be compatible with both __GIMPLE and __RTL.  Guard
39032         property-provider override so it is only done for gimple passes.
39033         Don't skip dfinit.
39034         (skip_pass): New function.
39035         (execute_one_pass): Call skip_pass when skipping passes.
39036         * read-md.c (md_reader::read_char): Support filtering
39037         the input to a subset of line numbers.
39038         (md_reader::md_reader): Initialize fields
39039         m_first_line and m_last_line.
39040         (md_reader::read_file_fragment): New function.
39041         * read-md.h (md_reader::read_file_fragment): New decl.
39042         (md_reader::m_first_line): New field.
39043         (md_reader::m_last_line): New field.
39044         * read-rtl-function.c (function_reader::create_function): Only
39045         create cfun if it doesn't already exist.  Set PROP_rtl on cfun's
39046         curr_properties.  Set DECL_INITIAL to a dummy block.
39047         (read_rtl_function_body_from_file_range): New function.
39048         * read-rtl-function.h (read_rtl_function_body_from_file_range):
39049         New decl.
39050         * run-rtl-passes.c: New file.
39051         * run-rtl-passes.h: New file.
39052
39053 2017-01-24  Jeff Law  <law@redhat.com>
39054
39055         * config/microblaze/microblaze.h (ASM_FORMAT_PRIVATE_NAME): Increase
39056         buffer size.
39057
39058 2017-01-24  Bin Cheng  <bin.cheng@arm.com>
39059
39060         PR tree-optimization/79159
39061         * tree-ssa-loop-niter.c (get_cst_init_from_scev): New function.
39062         (record_nonwrapping_iv): Improve boundary using above function if no
39063         value range information.
39064
39065 2017-01-24  Pekka Jääskeläinen  <pekka@parmance.com>
39066             Martin Jambor  <mjambor@suse.cz>
39067
39068         * brig-builtins.def: New file.
39069         * builtins.def (DEF_HSAIL_BUILTIN): New macro.
39070         (DEF_HSAIL_ATOMIC_BUILTIN): Likewise.
39071         (DEF_HSAIL_SAT_BUILTIN): Likewise.
39072         (DEF_HSAIL_INTR_BUILTIN): Likewise.
39073         (DEF_HSAIL_CVT_ZEROI_SAT_BUILTIN): Likewise.
39074         * builtin-types.def (BT_INT8): New.
39075         (BT_INT16): Likewise.
39076         (BT_UINT8): Likewise.
39077         (BT_UINT16): Likewise.
39078         (BT_FN_ULONG): Likewise.
39079         (BT_FN_UINT_INT): Likewise.
39080         (BT_FN_UINT_ULONG): Likewise.
39081         (BT_FN_UINT_LONG): Likewise.
39082         (BT_FN_UINT_PTR): Likewise.
39083         (BT_FN_ULONG_PTR): Likewise.
39084         (BT_FN_INT8_FLOAT): Likewise.
39085         (BT_FN_INT16_FLOAT): Likewise.
39086         (BT_FN_UINT32_FLOAT): Likewise.
39087         (BT_FN_UINT16_FLOAT): Likewise.
39088         (BT_FN_UINT8_FLOAT): Likewise.
39089         (BT_FN_UINT64_FLOAT): Likewise.
39090         (BT_FN_UINT16_UINT32): Likewise.
39091         (BT_FN_UINT32_UINT16): Likewise.
39092         (BT_FN_UINT16_UINT16_UINT16): Likewise.
39093         (BT_FN_INT_PTR_INT): Likewise.
39094         (BT_FN_UINT_PTR_UINT): Likewise.
39095         (BT_FN_LONG_PTR_LONG): Likewise.
39096         (BT_FN_ULONG_PTR_ULONG): Likewise.
39097         (BT_FN_VOID_UINT64_UINT64): Likewise.
39098         (BT_FN_UINT8_UINT8_UINT8): Likewise.
39099         (BT_FN_INT8_INT8_INT8): Likewise.
39100         (BT_FN_INT16_INT16_INT16): Likewise.
39101         (BT_FN_INT_INT_INT): Likewise.
39102         (BT_FN_UINT_FLOAT_UINT): Likewise.
39103         (BT_FN_FLOAT_UINT_UINT): Likewise.
39104         (BT_FN_ULONG_UINT_UINT): Likewise.
39105         (BT_FN_ULONG_UINT_PTR): Likewise.
39106         (BT_FN_ULONG_ULONG_ULONG): Likewise.
39107         (BT_FN_UINT_UINT_UINT): Likewise.
39108         (BT_FN_VOID_UINT_PTR): Likewise.
39109         (BT_FN_UINT_UINT_PTR: Likewise.
39110         (BT_FN_UINT32_UINT64_PTR): Likewise.
39111         (BT_FN_INT_INT_UINT_UINT): Likewise.
39112         (BT_FN_UINT_UINT_UINT_UINT): Likewise.
39113         (BT_FN_UINT_UINT_UINT_PTR): Likewise.
39114         (BT_FN_UINT_ULONG_ULONG_UINT): Likewise.
39115         (BT_FN_ULONG_ULONG_ULONG_ULONG): Likewise.
39116         (BT_FN_LONG_LONG_UINT_UINT): Likewise.
39117         (BT_FN_ULONG_ULONG_UINT_UINT): Likewise.
39118         (BT_FN_VOID_UINT32_UINT64_PTR): Likewise.
39119         (BT_FN_VOID_UINT32_UINT32_PTR): Likewise.
39120         (BT_FN_UINT_UINT_UINT_UINT_UINT): Likewise.
39121         (BT_FN_UINT_FLOAT_FLOAT_FLOAT_FLOAT): Likewise.
39122         (BT_FN_ULONG_ULONG_ULONG_UINT_UINT): Likewise.
39123         * doc/frontends.texi: List BRIG FE.
39124         * doc/install.texi (Testing): Add BRIG tesring requirements.
39125         * doc/invoke.texi (Overall Options): Mention BRIG.
39126         * doc/standards.texi (Standards): Doucment BRIG HSA version.
39127
39128 2017-01-24  Richard Biener  <rguenther@suse.de>
39129
39130         PR translation/79208
39131         * ipa-devirt.c (odr_types_equivalent_p): Fix typo in diagnostic.
39132
39133 2017-01-24  Martin Jambor  <mjambor@suse.cz>
39134
39135         PR bootstrap/79198
39136         * ipa-prop.c (ipa_free_all_node_params): Call summary destructor.
39137         * ipa-prop.c (ipa_node_params_t::insert): Initialize fields known_csts
39138         and known_contexts.
39139
39140 2017-01-24  Aldy Hernandez  <aldyh@redhat.com>
39141
39142         PR middle-end/79123
39143         * gimple-ssa-warn-alloca.c (alloca_call_type): Make sure
39144         casts from signed to unsigned really don't have a range.
39145
39146 2017-01-24  Markus Trippelsdorf  <markus@trippelsdorf.de>
39147
39148         * gimple-ssa-sprintf.c (format_floating): Change MPFR_RNDx to
39149         GMP_RNDx for compatiblity.
39150
39151 2017-01-24  Martin Liska  <mliska@suse.cz>
39152
39153         PR bootstrap/79132
39154         * tree-ssa-reassoc.c (rewrite_expr_tree_parallel): Insert assert
39155         that would prevent us to call alloca with -1 as argument.
39156
39157 2017-01-24  Jakub Jelinek  <jakub@redhat.com>
39158
39159         * dwarf2out.c (output_compilation_unit_header, output_file_names):
39160         Avoid -Wformat-security warning.
39161
39162 2017-01-23  Andrew Pinski  <apinski@cavium.com>
39163
39164         * config/aarch64/aarch64.c (thunderx2t99_addrcost_table): Improve
39165         cost table.
39166
39167 2017-01-23  Martin Sebor  <msebor@redhat.com>
39168
39169         PR middle-end/78703
39170         * gimple-ssa-sprintf.c (warn_level): New global.
39171         (format_integer): Use it here and throughout the rest of the file.
39172         Use the same switch to compute sign as base.
39173         (maybe_warn): New function.
39174         (format_directive): Factor out warnings into maybe_warn.
39175         Add debugging output.  Use warn_level.
39176         (add_bytes): Use warn_level.
39177         (pass_sprintf_length::compute_format_length): Add debugging output.
39178         (try_substitute_return_value): Same.
39179         (pass_sprintf_length::handle_gimple_call): Set and use warn_level.
39180
39181         PR middle-end/78703
39182         * gimple-ssa-sprintf.c (struct format_result): Remove constant member.
39183         (struct fmtresult, format_integer, format_floating): Adjust.
39184         (fmtresult::fmtresult): Set max correctly in two argument ctor.
39185         (get_string_length, format_string,format_directive): Same.
39186         (pass_sprintf_length::compute_format_length): Same.
39187         (try_substitute_return_value): Simplify slightly.
39188
39189         PR middle-end/78703
39190         * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust formatting.
39191         (fmtresult::operator+=): Outlined.
39192         (struct fmtresult): Add ctors.
39193         (struct conversion_spec): Rename...
39194         (struct directive): ...to this.  Add and remove data members.
39195         (directive::set_width, directive::set_precision): New functions.
39196         (format_percent): Use fmtresult ctor.
39197         (get_width_and_precision): Remove.
39198         (format_integer): Make naming changes.  Avoid computing width and
39199         precision.
39200         (format_floating): Same.  Adjust indentation.
39201         (format_character, format_none): New functions.
39202         (format_string): Moved character handling to format_character.
39203         (format_directive): Remove arguments, change return type.
39204         (parse_directive): New function.
39205         (pass_sprintf_length::compute_format_length): Move directive
39206         parsing to parse_directive.
39207
39208 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
39209
39210         * tree.h (assign_assembler_name_if_neeeded): Rename to ...
39211         (assign_assembler_name_if_needed): ... this.
39212         * tree.c (assign_assembler_name_if_neeeded): Rename to ...
39213         (assign_assembler_name_if_needed): ... this.
39214         (free_lang_data_in_cgraph): Adjust callers.
39215         * cgraphunit.c (cgraph_node::analyze): Likewise.
39216         * omp-expand.c (expand_omp_taskreg, expand_omp_target):
39217         Likewise.
39218
39219 2017-01-23  Richard Biener  <rguenther@suse.de>
39220
39221         PR tree-optimization/79088
39222         PR tree-optimization/79188
39223         * tree-ssa-threadupdate.c (mark_threaded_blocks): Move code
39224         resetting loop bounds after last path deletion.  Reset loop
39225         bounds of the target loop, make code match the comments.
39226         * tree-ssa-threadbackwards.c (pass_early_thread_jumps::execute):
39227         Make sure loops need no fixups.
39228
39229 2017-01-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>
39230
39231         * config/rs6000/rs6000-builtin.def (VSIEDPF): Add scalar insert
39232         exponent support with double type for first argument.
39233         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Changed
39234         type returned by __builtin_vec_extract_sig,
39235         __builtin_vec_extract_sig_sp, and __builtin_vec_extract_sig_dp
39236         functions from "vector int" to "vector unsigned int" or from
39237         "vector long long int" to "vector unsigned long long int".
39238         Changed type returned by __builtin_vec_extract_exp,
39239         __builtin_vec_extract_exp_sp, and __builtin_vec_extract_exp_dp
39240         functions from "vector int" to "vector unsigned int" or from
39241         "vector long long int" to "vector unsigned long long int".
39242         Changed return type of __builtin_vec_test_data_class,
39243         __builtin_vec_test_data_class_sp, and
39244         __builtin_vec_test_data_class_dp from "vector int" to
39245         "vector bool int" or from "vector long long int" to "vector bool
39246         long long int" and changed second argument type from "unsigned
39247         int" to "int".  Added new overloaded function forms "vector float
39248         __builtin_vec_insert_exp (vector float, vector unsigned int)" and
39249         "vector float __builtin_vec_insert_exp_sp (vector float, vector
39250         unsigned int)" and "vector double __builtin_vec_insert_exp (vector
39251         double, vector unsigned long long int)" and "vector double
39252         __builtin_vec_insert_exp_dp (vector double, vector unsigned long
39253         long int)".  Changed return type of
39254         __builtin_scalar_test_data_class and
39255         __builtin_scalar_test_data_class_sp and
39256         __builtin_scalar_test_data_class_dp from "unsigned int" to "bool
39257         int" and changed second argument from "unsigned int" to "int".
39258         Changed type returned by __builtin_scalar_test_neg,
39259         __builtin_scalar_test_neg_sp, and __builtin_scalar_test_neg_dp
39260         from "int" to "bool int".  Added new overloaded function form
39261         "double __builtin_scalar_insert_exp (double, unsigned long long int)".
39262         * config/rs6000/vsx.md (xsiexpdpf): New insn for scalar insert
39263         exponent double-precision with floating point first argument.
39264         * doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
39265         documentation of scalar_test_data_class, scalar_test_neg,
39266         scalar_extract_sig, scalar_extract_exp, scalar_insert_exp,
39267         vector_extract_exp, vec_extract_sig, vec_insert_exp, and
39268         vec_test_data_class built-in functions to reflect refinements in
39269         their type signatures.
39270
39271 2017-01-23  Andreas Tobler  <andreast@gcc.gnu.org>
39272
39273         * config/aarch64/aarch64.c (aarch64_elf_asm_constructor): Increase
39274         size of buf.
39275         (aarch64_elf_asm_destructor): Likewise.
39276
39277 2017-01-23  Bernd Schmidt  <bschmidt@redhat.com>
39278
39279         PR rtl-optimization/78634
39280         * config/i386/i386.c (ix86_max_noce_ifcvt_seq_cost): New function.
39281         (TARGET_MAX_NOCE_IFCVT_SEQ_COST): Define.
39282         * ifcvt.c (noce_try_cmove): Add missing cost check.
39283
39284         PR rtl-optimization/71724
39285         * combine.c (if_then_else_cond): Look for situations where it is
39286         beneficial to undo the work of one of the recursive calls.
39287
39288 2017-01-23  Bin Cheng  <bin.cheng@arm.com>
39289
39290         PR tree-optimization/70754
39291         * tree-predcom.c (stmt_combining_refs): New parameter INSERT_BEFORE.
39292         (reassociate_to_the_same_stmt): New parameter INSERT_BEFORE.  Insert
39293         combined stmt before it if not NULL.
39294         (combine_chains): Process refs reversely and compute dominance point
39295         for root ref.
39296
39297 2017-01-23  Martin Liska  <mliska@suse.cz>
39298
39299         PR tree-optimization/79196
39300         * tree-ssa-strlen.c (fold_strstr_to_memcmp): Rename to ...
39301         (fold_strstr_to_strncmp): ... this.  Fold the pattern to strncmp
39302         instead of memcmp.
39303         (strlen_optimize_stmt): Call the renamed function.
39304
39305 2017-01-23  Michael Matz  <matz@suse.de>
39306
39307         PR tree-optimization/78384
39308         * tree-ssa-loop-split.c (patch_loop_exit): Use correct edge.
39309
39310 2017-01-23  Richard Biener  <rguenther@suse.de>
39311
39312         PR tree-optimization/79186
39313         * tree-vrp.c (register_new_assert_for): Make sure we've seen
39314         both incoming edges before moving an assert.
39315
39316 2017-01-23  Martin Jambor  <mjambor@suse.cz>
39317
39318         * ipa-prop.c (load_from_param_1): Removed.
39319         (load_from_unmodified_param): Bits from load_from_param_1 put back
39320         here.
39321         (load_from_param): Removed.
39322         (compute_complex_assign_jump_func): Removed stmt2 and just replaced it
39323         with stmt.  Reverted back to use of load_from_unmodified_param.
39324
39325 2017-01-23  Martin Jambor  <mjambor@suse.cz>
39326
39327         PR ipa/79108
39328         * ipa-prop.h (ipa_param_descriptor): Anotate with with GTY(()).
39329         (ipa_node_params): Annotate with GTY((for_user)).  Make descriptors
39330         field a pointer to garbage collected vector, mark lattices and
39331         ipcp_orig_node with GTY((skip)).
39332         (ipa_get_param_count): Adjust to descriptors being a pointer.
39333         (ipa_get_param): Likewise.
39334         (ipa_get_type): Likewise.
39335         (ipa_get_param_move_cost): Likewise.
39336         (ipa_set_param_used): Likewise.
39337         (ipa_get_controlled_uses): Likewise.
39338         (ipa_set_controlled_uses): Likewise.
39339         (ipa_is_param_used): Likewise.
39340         (ipa_node_params_t): Move into garbage collector.  New methods insert
39341         and remove.
39342         (ipa_node_params_sum): Annotate wth GTY(()).
39343         (ipa_check_create_node_params): Adjust to ipa_node_params_sum being
39344         garbage collected.
39345         (ipa_load_from_parm_agg): Adjust declaration.
39346         * ipa-icf.c (param_used_p): Adjust to descriptors being a pointer.
39347         * ipa-profile.c (ipa_profile): Likewise.
39348         * ipa-prop.c (ipa_get_param_decl_index_1): Likewise.
39349         (ipa_populate_param_decls): Make descriptors parameter garbage
39350         collected.
39351         (ipa_dump_param): Adjust to descriptors being a pointer.
39352         (ipa_alloc_node_params): Likewise.
39353         (ipa_initialize_node_params): Likewise.
39354         (load_from_param_1): Make descriptors parameter garbage collected.
39355         (load_from_unmodified_param): Likewise.
39356         (load_from_param): Likewise.
39357         (ipa_load_from_parm_agg): Likewise.
39358         (ipa_node_params::~ipa_node_params): Removed.
39359         (ipa_free_all_node_params): Remove call to delete operator.
39360         (ipa_node_params_t::insert): New.
39361         (ipa_node_params_t::remove): Likewise.
39362         (ipa_node_params_t::duplicate): Adjust to descriptors being a pointer,
39363         copy known_csts and known_contexts vectors.
39364         (ipa_read_node_info): Adjust to descriptors being a pointer.
39365         (ipcp_modif_dom_walker): Make m_descriptors field garbage
39366         collected.
39367         (ipcp_transform_function): Make descriptors variable garbage
39368         collected.
39369
39370 2017-01-23  Andrew Senkevich  <andrew.senkevich@intel.com>
39371
39372         * config/i386/avx512bwintrin.h: Add k-mask test, kortest intrinsics.
39373         * config/i386/avx512dqintrin.h: Ditto.
39374         * config/i386/avx512fintrin.h: Ditto.
39375         * config/i386/i386.c: Handle new builtins.
39376         * config/i386/i386-builtin.def: Add new builtins.
39377         * config/i386/sse.md (ktest<mode>, kortest<mode>): New.
39378         (UNSPEC_KORTEST, UNSPEC_KTEST): New.
39379
39380 2017-01-23  Jakub Jelinek  <jakub@redhat.com>
39381             Martin Liska  <mliska@suse.cz>
39382
39383         * asan.h: Define ASAN_USE_AFTER_SCOPE_ATTRIBUTE.
39384         * asan.c (asan_expand_poison_ifn): Support stores and use
39385         appropriate ASAN report function.
39386         * internal-fn.c (expand_ASAN_POISON_USE): New function.
39387         * internal-fn.def (ASAN_POISON_USE): Declare.
39388         * tree-into-ssa.c (maybe_add_asan_poison_write): New function.
39389         (maybe_register_def): Create ASAN_POISON_USE when sanitizing.
39390         * tree-ssa-dce.c (eliminate_unnecessary_stmts): Remove
39391         ASAN_POISON calls w/o LHS.
39392         * tree-ssa.c (execute_update_addresses_taken): Create clobber
39393         for ASAN_MARK (UNPOISON, &x, ...) in order to prevent usage of a LHS
39394         from ASAN_MARK (POISON, &x, ...) coming to a PHI node.
39395         * gimplify.c (asan_poison_variables): Add attribute
39396         use_after_scope_memory to variables that really needs to live
39397         in memory.
39398         * tree-ssa.c (is_asan_mark_p): Do not rewrite into SSA when
39399         having the attribute.
39400
39401 2017-01-23  Martin Liska  <mliska@suse.cz>
39402
39403         * asan.c (create_asan_shadow_var): New function.
39404         (asan_expand_poison_ifn): Likewise.
39405         * asan.h (asan_expand_poison_ifn): New declaration.
39406         * internal-fn.c (expand_ASAN_POISON): Likewise.
39407         * internal-fn.def (ASAN_POISON): New builtin.
39408         * sanopt.c (pass_sanopt::execute): Expand
39409         asan_expand_poison_ifn.
39410         * tree-inline.c (copy_decl_for_dup_finish): Make function
39411         external.
39412         * tree-inline.h (copy_decl_for_dup_finish): Likewise.
39413         * tree-ssa.c (is_asan_mark_p): New function.
39414         (execute_update_addresses_taken): Rewrite local variables
39415         (identified just by use-after-scope as addressable) into SSA.
39416
39417 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
39418
39419         * doc/install.texi (Specific): opensource.apple.com uses https
39420         now. Remove trailing slash.
39421
39422 2017-01-22  Gerald Pfeifer  <gerald@pfeifer.com>
39423
39424         * README.Portability: Remove note on an Irix compatibility issue.
39425
39426 2017-01-22  Dimitry Andric <dim@FreeBSD.org>
39427
39428         * gcov.c (INCLUDE_ALGORITHM): Define.
39429         (INCLUDE_VECTOR): Define.
39430         No longer include <vector> and <algorithm> directly.
39431
39432 2017-01-21  Gerald Pfeifer  <gerald@pfeifer.com>
39433
39434         * doc/extend.texi (Thread-Local): Change www.akkadia.org reference
39435         to https.
39436         * doc/invoke.texi (Code Gen Options): Ditto.
39437
39438 2017-01-21  Jan Hubicka  <hubicka@ucw.cz>
39439
39440         PR lto/78407
39441         * cfg.c (update_bb_profile_for_threading): Fix updating of probablity.
39442
39443 2017-01-21  Bernd Schmidt  <bschmidt@redhat.com>
39444
39445         rtl-optimization/79125
39446         * cprop.c (local_cprop_pass): Handle cases where we make an
39447         unconditional trap.
39448
39449 2017-01-20  Segher Boessenkool  <segher@kernel.crashing.org>
39450
39451         PR target/61729
39452         PR target/77850
39453         * config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Adjust address to
39454         read from, for big endian.
39455
39456 2017-01-20  Jiong Wang  <jiong.wang@arm.com>
39457
39458         * config/aarch64/aarch64-builtins.c (aarch64_init_builtins): Register
39459         register pauth builtins for LP64 only.
39460
39461 2017-01-20  Marek Polacek  <polacek@redhat.com>
39462
39463         PR c/79152
39464         * gimplify.c (should_warn_for_implicit_fallthrough): Handle consecutive
39465         non-case labels.
39466
39467 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
39468
39469         * omp-expand.c (expand_omp_simd): Clear PROP_gimple_lomp_dev regardless
39470         of safelen status.
39471         * omp-offload.c (pass_omp_device_lower::gate): Use PROP_gimple_lomp_dev.
39472         * passes.c (dump_properties): Handle PROP_gimple_lomp_dev.
39473         * tree-inline.c (expand_call_inline): Propagate PROP_gimple_lomp_dev.
39474
39475 2017-01-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39476
39477         PR target/71270
39478         * config/arm/arm.c (neon_valid_immediate): Reject vector constants
39479         in big-endian mode when they are not a single duplicated value.
39480
39481 2017-01-20  Richard Biener  <rguenther@suse.de>
39482
39483         * BASE-VER: Bump to 7.0.1.
39484
39485 2017-01-20  Alexander Monakov  <amonakov@ispras.ru>
39486
39487         * omp-low.c (omplow_simd_context): New struct.  Use it...
39488         (lower_rec_simd_input_clauses): ...here and...
39489         (lower_rec_input_clauses): ...here to hold common data.  Adjust all
39490         references to idx, lane, max_vf, is_simt.
39491
39492 2017-01-20  Graham Markall  <graham.markall@embecosm.com>
39493
39494         * config/arc/arc.h (LINK_SPEC): Use arclinux_nps emulation when
39495         mcpu=nps400.
39496
39497 2017-01-20  Martin Jambor  <mjambor@suse.cz>
39498
39499         * hsa.h: Renaed to hsa-common.h.  Adjusted a comment.
39500         * hsa.c: Renaed to hsa-common.c.  Change include of gt-hsa.h to
39501         gt-hsa-common.h.
39502         * Makefile.in (OBJS): Rename hsa.o to hsa-common.o.
39503         (GTFILES): Rename hsa.c to hsa-common.c.
39504         * hsa-brig.c: Change include of hsa.h to hsa-common.h.
39505         * hsa-dump.c: Likewise.
39506         * hsa-gen.c: Likewise.
39507         * hsa-regalloc.c: Likewise.
39508         * ipa-hsa.c: Likewise.
39509         * omp-expand.c: Likewise.
39510         * omp-low.c: Likewise.
39511         * toplev.c: Likewise.
39512
39513 2017-01-20  Marek Polacek  <polacek@redhat.com>
39514
39515         PR c/64279
39516         * doc/invoke.texi: Document -Wduplicated-branches.
39517         * fold-const.c (operand_equal_p): Handle MODIFY_EXPR, INIT_EXPR,
39518         COMPOUND_EXPR, PREDECREMENT_EXPR, PREINCREMENT_EXPR,
39519         POSTDECREMENT_EXPR, POSTINCREMENT_EXPR, CLEANUP_POINT_EXPR, EXPR_STMT,
39520         STATEMENT_LIST, and RETURN_EXPR.  For non-pure non-const functions
39521         return 0 only when not OEP_LEXICOGRAPHIC.
39522         (fold_build_cleanup_point_expr): Use the expression
39523         location when building CLEANUP_POINT_EXPR.
39524         * tree-core.h (enum operand_equal_flag): Add OEP_LEXICOGRAPHIC.
39525         * tree.c (add_expr): Handle error_mark_node.
39526
39527 2017-01-20  Martin Liska  <mliska@suse.cz>
39528
39529         PR lto/69188
39530         * tree-profile.c (init_ic_make_global_vars): Do not call
39531         finalize_decl.
39532         (gimple_init_gcov_profiler): Likewise.
39533
39534 2017-01-20  Martin Liska  <mliska@suse.cz>
39535
39536         PR ipa/71190
39537         * cgraph.h (maybe_create_reference): Remove argument and
39538         update comment.
39539         * cgraphclones.c (cgraph_node::create_virtual_clone): Remove one
39540         argument.
39541         * ipa-cp.c (create_specialized_node): Likewise.
39542         * symtab.c (symtab_node::maybe_create_reference): Handle
39543         VAR_DECLs and ADDR_EXPRs and select ipa_ref_use type.
39544
39545 2017-01-20  Martin Liska  <mliska@suse.cz>
39546
39547         * read-rtl-function.c (function_reader::create_function): Use
39548         build_decl instread of build_decl_stat.
39549
39550 2017-01-20  Andrew Senkevich  <andrew.senkevich@intel.com>
39551
39552         * config/i386/avx512bwintrin.h: Add k-mask registers shift intrinsics.
39553         * config/i386/avx512dqintrin.h: Ditto.
39554         * config/i386/avx512fintrin.h: Ditto.
39555         * config/i386/i386-builtin-types.def: Add new types.
39556         * config/i386/i386.c: Handle new types.
39557         * config/i386/i386-builtin.def (__builtin_ia32_kshiftliqi)
39558         (__builtin_ia32_kshiftlihi, __builtin_ia32_kshiftlisi)
39559         (__builtin_ia32_kshiftlidi, __builtin_ia32_kshiftriqi)
39560         (__builtin_ia32_kshiftrihi, __builtin_ia32_kshiftrisi)
39561         (__builtin_ia32_kshiftridi): New.
39562         * config/i386/sse.md (k<code><mode>): Rename *k<code><mode>.
39563
39564 2017-01-19  Segher Boessenkool  <segher@kernel.crashing.org>
39565
39566         PR target/78875
39567         PR target/79140
39568         * config/rs6000/rs6000.c (TARGET_STACK_PROTECT_GUARD): Unconditionally
39569         define to rs6000_init_stack_protect_guard.
39570         (rs6000_init_stack_protect_guard): New function.
39571
39572 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
39573             Yunqiang Su  <yunqiang.su@imgtec.com>
39574
39575         * config.gcc (supported_defaults): Add madd4.
39576         (with_madd4): Add validation.
39577         (all_defaults): Add madd4.
39578         * config/mips/mips.opt (mmadd4): New option.
39579         * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
39580         mmadd4.
39581         (TARGET_CPU_CPP_BUILTINS): Add builtin_define for
39582         __mips_no_madd4.
39583         (ISA_HAS_UNFUSED_MADD4): Gate with mips_madd4.
39584         (ISA_HAS_FUSED_MADD4): Likewise.
39585         * doc/invoke.texi (-mmadd4): Document the new option.
39586         * doc/install.texi (--with-madd4): Document the new option.
39587
39588 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39589
39590         * config/aarch64/aarch64-builtins.c (enum aarch64_builtins): New
39591         entries for AARCH64_PAUTH_BUILTIN_XPACLRI,
39592         AARCH64_PAUTH_BUILTIN_PACIA1716, AARCH64_PAUTH_BUILTIN_AUTIA1716.
39593         (aarch64_init_pauth_hint_builtins): New.
39594         (aarch64_init_builtins): Call aarch64_init_pauth_hint_builtins.
39595         (aarch64_expand_builtin): Expand new builtins.
39596
39597 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39598
39599         * reg-notes.def (CFA_TOGGLE_RA_MANGLE): New reg-note.
39600         * combine-stack-adj.c (no_unhandled_cfa): Handle
39601         REG_CFA_TOGGLE_RA_MANGLE.
39602         * dwarf2cfi.c (dwarf2out_frame_debug): Handle REG_CFA_TOGGLE_RA_MANGLE.
39603         * config/aarch64/aarch64.c (aarch64_expand_prologue): Generates DWARF
39604         info for return address signing.
39605         (aarch64_expand_epilogue): Likewise.
39606
39607 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39608
39609         * config/aarch64/aarch64-opts.h (aarch64_function_type): New enum.
39610         * config/aarch64/aarch64-protos.h
39611         (aarch64_return_address_signing_enabled): New declaration.
39612         * config/aarch64/aarch64.c (aarch64_return_address_signing_enabled):
39613         New function.
39614         (aarch64_expand_prologue): Sign return address before it's pushed onto
39615         stack.
39616         (aarch64_expand_epilogue): Authenticate return address fetched from
39617         stack.
39618         (aarch64_override_options): Sanity check for ILP32 and ISA level.
39619         (aarch64_attributes): New function attributes for "sign-return-address".
39620         * config/aarch64/aarch64.md (UNSPEC_AUTI1716, UNSPEC_AUTISP,
39621         UNSPEC_PACI1716, UNSPEC_PACISP, UNSPEC_XPACLRI): New unspecs.
39622         ("*do_return"): Generate combined instructions according to key index.
39623         ("<pauth_mnem_prefix>sp", "<pauth_mnem_prefix1716", "xpaclri"): New.
39624         * config/aarch64/iterators.md (PAUTH_LR_SP, PAUTH_17_16): New integer
39625         iterators.
39626         (pauth_mnem_prefix, pauth_hint_num_a): New integer attributes.
39627         * config/aarch64/aarch64.opt (msign-return-address=): New.
39628         * doc/extend.texi (AArch64 Function Attributes): Documents
39629         "sign-return-address=".
39630         * doc/invoke.texi (AArch64 Options): Documents "-msign-return-address=".
39631
39632 2017-01-19  Matthew Fortune  <matthew.fortune@imgtec.com>
39633
39634         * doc/invoke.texi: Add missing -mlxc1-sxc1 options to
39635         overall option summary.
39636
39637 2017-01-19  Jiong Wang  <jiong.wang@arm.com>
39638
39639         * config/aarch64/aarch64-arches.def: New entry for "armv8.3-a".
39640         * config/aarch64/aarch64.h (AARCH64_FL_V8_3, AARCH64_FL_FOR_ARCH8_3,
39641         AARCH64_ISA_V8_3, TARGET_ARMV8_3): New.
39642         * doc/invoke.texi (AArch64 Options): Document "armv8.3-a".
39643
39644 2017-01-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
39645
39646         * config/rs6000/rs6000-cpus.def (ISA_3_0_MASKS_SERVER): Enable
39647         -mpower9-minmax by default for -mcpu=power9.
39648         (ISA_3_MASKS_IEEE): Require -mvsx-small-integer to enable IEEE
39649         128-bit floating point.
39650
39651 2017-01-20  Alan Modra  <amodra@gmail.com>
39652
39653         * config/rs6000/rs6000.md (cmpstrnsi, cmpstrsi): Fail if
39654         optimizing for size.
39655
39656 2017-01-20  Alan Modra  <amodra@gmail.com>
39657
39658         PR target/79144
39659         * config/rs6000/rs6000.c (expand_strn_compare): Get the asm name
39660         for strcmp and strncmp from corresponding builtin decl.
39661
39662 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
39663
39664         * config.gcc (x86_64-*-rtems*): Use i386/rtemself.h
39665         instead of i386/rtems-64.h.
39666         * config/i386/rtems-64.h: Remove.
39667
39668 2017-01-19  Uros Bizjak  <ubizjak@gmail.com>
39669
39670         PR target/78478
39671         Revert:
39672         2013-11-05  Uros Bizjak  <ubizjak@gmail.com>
39673
39674         * config/i386/rtemself.h (LONG_DOUBLE_TYPE_SIZE): New define.
39675
39676 2017-01-19  Tamar Christina  <tamar.christina@arm.com>
39677
39678         * config/aarch64/aarch64.c (aarch64_simd_gen_const_vector_dup):
39679         Change int to HOST_WIDE_INT.
39680         * config/aarch64/aarch64-protos.h
39681         (aarch64_simd_gen_const_vector_dup): Likewise.
39682         * config/aarch64/aarch64-simd.md: Add copysign<mode>3.
39683
39684 2017-01-19  David Malcolm  <dmalcolm@redhat.com>
39685
39686         * langhooks-def.h (lhd_type_for_size): New decl.
39687         (LANG_HOOKS_TYPE_FOR_SIZE): Define as lhd_type_for_size.
39688         * langhooks.c (lhd_type_for_size): New function, taken from
39689         lto_type_for_size.
39690
39691 2017-01-19  Pat Haugen  <pthaugen@us.ibm.com>
39692
39693         * config/rs6000/power9.md (power9-alu): Remove 'cmp' type and add
39694         define_bypass for CR latency.
39695         (power9-cracked-alu): Update bypass latency and remove power9-branch.
39696         (power9-alu2): Add define_bypass for CR latency.
39697         (power9-cmp): New.
39698         (power9-mul): Update insn latency.
39699         (power9-mul-compare): Update insn latency, bypass latency and remove
39700         power9-branch.
39701
39702 2016-01-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
39703
39704         * config/aarch64/aarch64-protos.h (aarch64_nopcrelative_literal_loads):
39705         Delete.
39706         * config/aarch64/aarch64.md
39707         (aarch64_reload_movcp<GPF_TF:mode><P:mode>): Delete reference to
39708         aarch64_nopcrelative_literal_loads.
39709         (aarch64_reload_movcp<VALL:mode><P:mode>): Likewise.
39710
39711 2017-01-19  Chenghua Xu  <paul.hua.gm@gmail.com>
39712
39713         * config/mips/mips.h (ISA_HAS_FUSED_MADD4): Enable for
39714         TARGET_LOONGSON_3A.
39715         (ISA_HAS_UNFUSED_MADD4): Exclude TARGET_LOONGSON_3A.
39716
39717 2017-01-19  Doug Gilmore  <doug.gilmore@imgtec.com>
39718
39719         PR target/78176
39720         * config.gcc (supported_defaults): Add lxc1-sxc1.
39721         (with_lxc1_sxc1): Add validation.
39722         (all_defaults): Add lxc1-sxc1.
39723         * config/mips/mips.opt (mlxc1-sxc1): New option.
39724         * config/mips/mips.h (OPTION_DEFAULT_SPECS): Add a default for
39725         mlxc1-sxc1.
39726         (TARGET_CPU_CPP_BUILTINS): Add builtin_define for
39727         __mips_no_lxc1_sxc1.
39728         (ISA_HAS_LXC1_SXC1): Gate with mips_lxc1_sxc1.
39729         * doc/invoke.texi (-mlxc1-sxc1): Document the new option.
39730         * doc/install.texi (--with-lxc1-sxc1): Document the new option.
39731
39732 2017-01-19  Richard Biener  <rguenther@suse.de>
39733
39734         PR tree-optimization/72488
39735         * tree-ssa-sccvn.c (run_scc_vn): When we abort the VN make
39736         sure to restore SSA info.
39737         * tree-ssa.c (verify_ssa): Verify SSA info is not shared.
39738
39739 2017-01-19  Richard Earnshaw  <rearnsha@arm.com>
39740
39741         PR rtl-optimization/79121
39742         * expr.c (expand_expr_real_2, case LSHIFT_EXPR): Look at the signedness
39743         of the inner type when shifting an extended value.
39744
39745 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
39746
39747         PR lto/78407
39748         * symtab.c (symtab_node::equal_address_to): Fix comparing of
39749         interposable aliases.
39750
39751 2017-01-18  Peter Bergner  <bergner@vnet.ibm.com>
39752
39753         PR target/78516
39754         * config/rs6000/spe.md (mov_si<mode>_e500_subreg0): Fix constraints.
39755         Use the evmergelohi instruction.
39756         (mov_si<mode>_e500_subreg4_2_le): Likewise.
39757         (mov_sitf_e500_subreg8_2_be): Likewise.
39758         (mov_sitf_e500_subreg12_2_le): Likewise.
39759         (mov_si<mode>_e500_subreg0_2_le): Fix constraints.
39760         (mov_si<mode>_e500_subreg4_2_be): Likewise.
39761         (mov_sitf_e500_subreg8_2_le): Likewise.
39762         (mov_sitf_e500_subreg12_2_be): Likewise.
39763
39764 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39765
39766         * config/rs6000/altivec.md (altivec_vbpermq): Change "type"
39767         attribute from vecsimple to vecperm.
39768         (altivec_vbpermq2): Likewise.
39769
39770 2017-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39771
39772         PR target/79040
39773         * config/rs6000/altivec.h: Fix typo of vec_cntlz to vec_cnttz.
39774
39775 2017-01-18  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
39776         * config/rs6000/rs6000-protos.h (expand_strn_compare): Add arg.
39777         * config/rs6000/rs6000.c (expand_strn_compare): Add ability to expand
39778         strcmp. Fix bug where comparison didn't stop with zero byte. Fix
39779         case where N arg is SIZE_MAX.
39780         * config/rs6000/rs6000.md (cmpstrnsi): Args to expand_strn_compare.
39781         (cmpstrsi): Add pattern.
39782
39783 2017-01-18  Michael Meissner  <meissner@linux.vnet.ibm.com>
39784
39785         * config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
39786         __builtin_vec_revb builtins.
39787         * config/rs6000/rs6000-builtins.def (P9V_BUILTIN_XXBRQ_V16QI): Add
39788         built-in functions to support generation of the ISA 3.0 XXBR<x>
39789         vector byte reverse instructions.
39790         (P9V_BUILTIN_XXBRQ_V1TI): Likewise.
39791         (P9V_BUILTIN_XXBRD_V2DI): Likewise.
39792         (P9V_BUILTIN_XXBRD_V2DF): Likewise.
39793         (P9V_BUILTIN_XXBGW_V4SI): Likewise.
39794         (P9V_BUILTIN_XXBGW_V4SF): Likewise.
39795         (P9V_BUILTIN_XXBGH_V8HI): Likewise.
39796         (P9V_BUILTIN_VEC_REVB): Likewise.
39797         * config/rs6000/vsx.md (p9_xxbrq_v1ti): New insns/expanders to
39798         generate the ISA 3.0 XXBR<x> vector byte reverse instructions.
39799         (p9_xxbrq_v16qi): Likewise.
39800         (p9_xxbrd_<mode>, VSX_D iterator): Likewise.
39801         (p9_xxbrw_<mode>, VSX_W iterator): Likewise.
39802         (p9_xxbrh_v8hi): Likewise.
39803         * config/rs6000/altivec.h (vec_revb): Define if ISA 3.0.
39804         * doc/extend.texi (RS/6000 Altivec Built-ins): Document the
39805         vec_revb built-in functions.
39806
39807 2017-01-18  Uros Bizjak  <ubizjak@gmail.com>
39808
39809         PR rtl-optimization/78952
39810         * config/i386/i386.md (any_extract): New code iterator.
39811         (*insvqi_2): Use any_extract for source operand.
39812         (*insvqi_3): Use any_shiftrt for source operand.
39813
39814 2017-01-18  Wilco Dijkstra  <wdijkstr@arm.com>
39815
39816         * config/aarch64/aarch64.c (aarch64_sched_adjust_priority)
39817         New function.
39818         (TARGET_SCHED_ADJUST_PRIORITY): Define target hook.
39819
39820 2017-01-18  Matthias Klose  <doko@ubuntu.com>
39821
39822         * doc/install.texi: Allow default for --with-target-bdw-gc-include.
39823
39824 2016-01-18  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39825
39826         * config/rs6000/altivec.h (vec_bperm): Change #define.
39827         * config/rs6000/altivec.md (UNSPEC_VBPERMD): New enum constant.
39828         (altivec_vbpermq2): New define_insn.
39829         (altivec_vbpermd): Likewise.
39830         * config/rs6000/rs6000-builtin.def (VBPERMQ2): New monomorphic
39831         function interface.
39832         (VBPERMD): Likewise.
39833         (VBPERM): New polymorphic function interface.
39834         * config/rs6000/r6000-c.c (altivec_overloaded_builtins_table):
39835         Add entries for P9V_BUILTIN_VEC_VBPERM.
39836         * doc/extend.texi: Add interfaces for vec_bperm.
39837
39838 2017-01-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
39839
39840         * config/s390/s390-c.c (s390_expand_overloaded_builtin): Downcase
39841         first letter of error messages.
39842         (s390_resolve_overloaded_builtin): Likewise.
39843         * config/s390/s390.c (s390_expand_builtin): Likewise.
39844         (s390_invalid_arg_for_unprototyped_fn): Likewise.
39845         (s390_valid_target_attribute_inner_p): Likewise.
39846         * config/s390/s390.md ("tabort"): Likewise.
39847
39848 2017-01-18  Toma Tabacu  <toma.tabacu@imgtec.com>
39849
39850         * config/mips/mips.h (ISA_HAS_DIV3): Remove unused macro.
39851         (ISA_AVOID_DIV_HILO): New macro.
39852         (ISA_HAS_DIV): Use new ISA_AVOID_DIV_HILO macro.
39853         (ISA_HAS_DDIV): Likewise.
39854
39855 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39856
39857         * doc/invoke.texi (fabi-version): Correct number of occurrences.
39858
39859 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39860
39861         * doc/invoke.texi (fabi-version): Spelling fix.
39862
39863 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39864
39865         PR c++/70182
39866         * doc/invoke.texi (fabi-version): Mention mangling fix for
39867         operator names.
39868
39869 2017-01-18  Markus Trippelsdorf  <markus@trippelsdorf.de>
39870
39871         PR c++/77489
39872         * doc/invoke.texi (fabi-version): Document discriminator mangling.
39873
39874 2017-01-17  Segher Boessenkool  <segher@kernel.crashing.org>
39875
39876         PR target/78875
39877         * config/rs6000/rs6000-opts.h (stack_protector_guard): New enum.
39878         * config/rs6000/rs6000.c (rs6000_option_override_internal): Handle
39879         the new options.
39880         * config/rs6000/rs6000.md (stack_protect_set): Handle the new more
39881         flexible settings.
39882         (stack_protect_test): Ditto.
39883         * config/rs6000/rs6000.opt (mstack-protector-guard=,
39884         mstack-protector-guard-reg=, mstack-protector-guard-offset=): New
39885         options.
39886         * doc/invoke.texi (Option Summary) [RS/6000 and PowerPC Options]:
39887         Add -mstack-protector-guard=, -mstack-protector-guard-reg=, and
39888         -mstack-protector-guard-offset=.
39889         (RS/6000 and PowerPC Options): Ditto.
39890
39891 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
39892
39893         * config/i386/i386.h (MASK_CLASS_P): New define.
39894         * config/i386/i386.c (inline_secondary_memory_needed): Ensure that
39895         there are no registers from different register sets also when
39896         mask registers are used.  Update function comment.
39897         * config/i386/i386.md (*movsi_internal): Split (*k/*krm) alternative
39898         to (*k/*r) and (*k/*km) alternatives.
39899
39900 2017-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
39901
39902         * config/aarch64/aarch64.md (eh_return): Remove pattern and splitter.
39903         * config/aarch64/aarch64.h (AARCH64_EH_STACKADJ_REGNUM): Remove.
39904         (EH_RETURN_HANDLER_RTX): New define.
39905         * config/aarch64/aarch64.c (aarch64_frame_pointer_required):
39906         Force frame pointer in EH return functions.
39907         (aarch64_expand_epilogue): Add barrier for eh_return.
39908         (aarch64_final_eh_return_addr): Remove.
39909         (aarch64_eh_return_handler_rtx): New function.
39910         * config/aarch64/aarch64-protos.h (aarch64_final_eh_return_addr):
39911         Remove.
39912         (aarch64_eh_return_handler_rtx): New prototype.
39913
39914 2017-01-17  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
39915
39916         * config/rs6000/altivec.h (vec_rlmi): New #define.
39917         (vec_vrlnm): Likewise.
39918         (vec_rlnm): Likewise.
39919         * config/rs6000/altivec.md (UNSPEC_VRLMI): New UNSPEC enum value.
39920         (UNSPEC_VRLNM): Likewise.
39921         (VIlong): New mode iterator.
39922         (altivec_vrl<VI_char>mi): New define_insn.
39923         (altivec_vrl<VI_char>nm): Likewise.
39924         * config/rs6000/rs6000-builtin.def (VRLWNM): New monomorphic
39925         function entry.
39926         (VRLDNM): Likewise.
39927         (RLNM): New polymorphic function entry.
39928         (VRLWMI): New monomorphic function entry.
39929         (VRLDMI): Likewise.
39930         (RLMI): New polymorphic function entry.
39931         * config/rs6000/r6000-c.c (altivec_overloaded_builtin_table): Add
39932         new entries for P9V_BUILTIN_VEC_RLMI and P9V_BUILTIN_VEC_RLNM.
39933         * doc/extend.texi: Add description of vec_rlmi, vec_rlnm, and
39934         vec_vrlnm.
39935
39936 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
39937
39938         PR debug/78839
39939         * dwarf2out.c (field_byte_offset): Restore the
39940         PCC_BITFIELD_TYPE_MATTERS behavior for INTEGER_CST DECL_FIELD_OFFSET
39941         and DECL_FIELD_BIT_OFFSET.  Use fold_build2 instead of build2 + fold.
39942         (analyze_variants_discr, gen_variant_part): Use fold_build2 instead
39943         of build2 + fold.
39944
39945 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
39946
39947         PR ada/67205
39948         * config/aarch64/aarch64.c (TARGET_CUSTOM_FUNCTION_DESCRIPTORS): Define
39949
39950 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
39951
39952         PR debug/71669
39953         * dwarf2out.c (add_data_member_location_attribute): For constant
39954         offset bitfield emit for -gdwarf-5 DW_AT_data_bit_offset attribute
39955         instead of DW_AT_data_member_location, DW_AT_bit_offset and
39956         DW_AT_byte_size attributes.
39957
39958 2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
39959
39960         * config/rs6000/rs6000.c (rs6000_emit_move): Also use a TOC reference
39961         after forcing to constant memory when the code model is medium.
39962
39963 2017-01-17  Julia Koval  <julia.koval@intel.com>
39964
39965         PR target/76731
39966         * config/i386/avx512fintrin.h
39967         (_mm512_i32gather_ps): Change __addr type to void const*.
39968         (_mm512_mask_i32gather_ps): Ditto.
39969         (_mm512_i32gather_pd): Ditto.
39970         (_mm512_mask_i32gather_pd): Ditto.
39971         (_mm512_i64gather_ps): Ditto.
39972         (_mm512_mask_i64gather_ps): Ditto.
39973         (_mm512_i64gather_pd): Ditto.
39974         (_mm512_mask_i64gather_pd): Ditto.
39975         (_mm512_i32gather_epi32): Ditto.
39976         (_mm512_mask_i32gather_epi32): Ditto.
39977         (_mm512_i32gather_epi64): Ditto.
39978         (_mm512_mask_i32gather_epi64): Ditto.
39979         (_mm512_i64gather_epi32): Ditto.
39980         (_mm512_mask_i64gather_epi32): Ditto.
39981         (_mm512_i64gather_epi64): Ditto.
39982         (_mm512_mask_i64gather_epi64): Ditto.
39983         (_mm512_i32scatter_ps): Change __addr type to void*.
39984         (_mm512_mask_i32scatter_ps): Ditto.
39985         (_mm512_i32scatter_pd): Ditto.
39986         (_mm512_mask_i32scatter_pd): Ditto.
39987         (_mm512_i64scatter_ps): Ditto.
39988         (_mm512_mask_i64scatter_ps): Ditto.
39989         (_mm512_i64scatter_pd): Ditto.
39990         (_mm512_mask_i64scatter_pd): Ditto.
39991         (_mm512_i32scatter_epi32): Ditto.
39992         (_mm512_mask_i32scatter_epi32): Ditto.
39993         (_mm512_i32scatter_epi64): Ditto.
39994         (_mm512_mask_i32scatter_epi64): Ditto.
39995         (_mm512_i64scatter_epi32): Ditto.
39996         (_mm512_mask_i64scatter_epi32): Ditto.
39997         (_mm512_i64scatter_epi64): Ditto.
39998         (_mm512_mask_i64scatter_epi64): Ditto.
39999         * config/i386/avx512pfintrin.h
40000         (_mm512_mask_prefetch_i32gather_pd): Change __addr type to void const*.
40001         (_mm512_mask_prefetch_i32gather_ps): Ditto.
40002         (_mm512_mask_prefetch_i64gather_pd): Ditto.
40003         (_mm512_mask_prefetch_i64gather_ps): Ditto.
40004         (_mm512_prefetch_i32scatter_pd): Change __addr type to void*.
40005         (_mm512_prefetch_i32scatter_ps): Ditto.
40006         (_mm512_mask_prefetch_i32scatter_pd): Ditto.
40007         (_mm512_mask_prefetch_i32scatter_ps): Ditto.
40008         (_mm512_prefetch_i64scatter_pd): Ditto.
40009         (_mm512_prefetch_i64scatter_ps): Ditto.
40010         (_mm512_mask_prefetch_i64scatter_pd): Ditto.
40011         (_mm512_mask_prefetch_i64scatter_ps): Ditto.
40012         * config/i386/avx512vlintrin.h
40013         (_mm256_mmask_i32gather_ps): Change __addr type to void const*.
40014         (_mm_mmask_i32gather_ps): Ditto.
40015         (_mm256_mmask_i32gather_pd): Ditto.
40016         (_mm_mmask_i32gather_pd): Ditto.
40017         (_mm256_mmask_i64gather_ps): Ditto.
40018         (_mm_mmask_i64gather_ps): Ditto.
40019         (_mm256_mmask_i64gather_pd): Ditto.
40020         (_mm_mmask_i64gather_pd): Ditto.
40021         (_mm256_mmask_i32gather_epi32): Ditto.
40022         (_mm_mmask_i32gather_epi32): Ditto.
40023         (_mm256_mmask_i32gather_epi64): Ditto.
40024         (_mm_mmask_i32gather_epi64): Ditto.
40025         (_mm256_mmask_i64gather_epi32): Ditto.
40026         (_mm_mmask_i64gather_epi32): Ditto.
40027         (_mm256_mmask_i64gather_epi64): Ditto.
40028         (_mm_mmask_i64gather_epi64): Ditto.
40029         (_mm256_i32scatter_ps): Change __addr type to void*.
40030         (_mm256_mask_i32scatter_ps): Ditto.
40031         (_mm_i32scatter_ps): Ditto.
40032         (_mm_mask_i32scatter_ps): Ditto.
40033         (_mm256_i32scatter_pd): Ditto.
40034         (_mm256_mask_i32scatter_pd): Ditto.
40035         (_mm_i32scatter_pd): Ditto.
40036         (_mm_mask_i32scatter_pd): Ditto.
40037         (_mm256_i64scatter_ps): Ditto.
40038         (_mm256_mask_i64scatter_ps): Ditto.
40039         (_mm_i64scatter_ps): Ditto.
40040         (_mm_mask_i64scatter_ps): Ditto.
40041         (_mm256_i64scatter_pd): Ditto.
40042         (_mm256_mask_i64scatter_pd): Ditto.
40043         (_mm_i64scatter_pd): Ditto.
40044         (_mm_mask_i64scatter_pd): Ditto.
40045         (_mm256_i32scatter_epi32): Ditto.
40046         (_mm256_mask_i32scatter_epi32): Ditto.
40047         (_mm_i32scatter_epi32): Ditto.
40048         (_mm_mask_i32scatter_epi32): Ditto.
40049         (_mm256_i32scatter_epi64): Ditto.
40050         (_mm256_mask_i32scatter_epi64): Ditto.
40051         (_mm_i32scatter_epi64): Ditto.
40052         (_mm_mask_i32scatter_epi64): Ditto.
40053         (_mm256_i64scatter_epi32): Ditto.
40054         (_mm256_mask_i64scatter_epi32): Ditto.
40055         (_mm_i64scatter_epi32): Ditto.
40056         (_mm_mask_i64scatter_epi32): Ditto.
40057         (_mm256_i64scatter_epi64): Ditto.
40058         (_mm256_mask_i64scatter_epi64): Ditto.
40059         (_mm_i64scatter_epi64): Ditto.
40060         (_mm_mask_i64scatter_epi64): Ditto.
40061         * config/i386/i386-builtin-types.def (V16SF_V16SF_PCFLOAT_V16SI_HI_INT)
40062         (V8DF_V8DF_PCDOUBLE_V8SI_QI_INT, V8SF_V8SF_PCFLOAT_V8DI_QI_INT)
40063         (V8DF_V8DF_PCDOUBLE_V8DI_QI_INT, V16SI_V16SI_PCINT_V16SI_HI_INT)
40064         (V8DI_V8DI_PCINT64_V8SI_QI_INT, V8SI_V8SI_PCINT_V8DI_QI_INT)
40065         (V8DI_V8DI_PCINT64_V8DI_QI_INT, V2DF_V2DF_PCDOUBLE_V4SI_QI_INT)
40066         (V4DF_V4DF_PCDOUBLE_V4SI_QI_INT, V2DF_V2DF_PCDOUBLE_V2DI_QI_INT)
40067         (V4DF_V4DF_PCDOUBLE_V4DI_QI_INT, V4SF_V4SF_PCFLOAT_V4SI_QI_INT)
40068         (V8SF_V8SF_PCFLOAT_V8SI_QI_INT, V4SF_V4SF_PCFLOAT_V2DI_QI_INT)
40069         (V4SF_V4SF_PCFLOAT_V4DI_QI_INT, V2DI_V2DI_PCINT64_V4SI_QI_INT)
40070         (V4DI_V4DI_PCINT64_V4SI_QI_INT, V2DI_V2DI_PCINT64_V2DI_QI_INT)
40071         (V4DI_V4DI_PCINT64_V4DI_QI_INT, V4SI_V4SI_PCINT_V4SI_QI_INT)
40072         (V8SI_V8SI_PCINT_V8SI_QI_INT, V4SI_V4SI_PCINT_V2DI_QI_INT)
40073         (V4SI_V4SI_PCINT_V4DI_QI_INT, VOID_PFLOAT_HI_V16SI_V16SF_INT)
40074         (VOID_PFLOAT_QI_V8SI_V8SF_INT, VOID_PFLOAT_QI_V4SI_V4SF_INT)
40075         (VOID_PDOUBLE_QI_V8SI_V8DF_INT, VOID_PDOUBLE_QI_V4SI_V4DF_INT)
40076         (VOID_PDOUBLE_QI_V4SI_V2DF_INT, VOID_PFLOAT_QI_V8DI_V8SF_INT)
40077         (VOID_PFLOAT_QI_V4DI_V4SF_INT, VOID_PFLOAT_QI_V2DI_V4SF_INT)
40078         (VOID_PDOUBLE_QI_V8DI_V8DF_INT, VOID_PDOUBLE_QI_V4DI_V4DF_INT)
40079         (VOID_PDOUBLE_QI_V2DI_V2DF_INT, VOID_PINT_HI_V16SI_V16SI_INT)
40080         (VOID_PINT_QI_V8SI_V8SI_INT, VOID_PINT_QI_V4SI_V4SI_INT)
40081         (VOID_PLONGLONG_QI_V8SI_V8DI_INT, VOID_PLONGLONG_QI_V4SI_V4DI_INT)
40082         (VOID_PLONGLONG_QI_V4SI_V2DI_INT, VOID_PINT_QI_V8DI_V8SI_INT)
40083         (VOID_PINT_QI_V4DI_V4SI_INT, VOID_PINT_QI_V2DI_V4SI_INT)
40084         (VOID_PLONGLONG_QI_V8DI_V8DI_INT, VOID_QI_V8SI_PCINT64_INT_INT)
40085         (VOID_PLONGLONG_QI_V4DI_V4DI_INT, VOID_PLONGLONG_QI_V2DI_V2DI_INT)
40086         (VOID_HI_V16SI_PCINT_INT_INT, VOID_QI_V8DI_PCINT64_INT_INT)
40087         (VOID_QI_V8DI_PCINT_INT_INT): Remove.
40088         (V16SF_V16SF_PCVOID_V16SI_HI_INT,  V8DF_V8DF_PCVOID_V8SI_QI_INT)
40089         (V8SF_V8SF_PCVOID_V8DI_QI_INT, V8DF_V8DF_PCVOID_V8DI_QI_INT)
40090         (V16SI_V16SI_PCVOID_V16SI_HI_INT, V8DI_V8DI_PCVOID_V8SI_QI_INT)
40091         (V8SI_V8SI_PCVOID_V8DI_QI_INT, V8DI_V8DI_PCVOID_V8DI_QI_INT)
40092         (VOID_PVOID_HI_V16SI_V16SF_INT, VOID_PVOID_QI_V8SI_V8DF_INT)
40093         (VOID_PVOID_QI_V8DI_V8SF_INT, VOID_PVOID_QI_V8DI_V8DF_INT)
40094         (VOID_PVOID_HI_V16SI_V16SI_INT, VOID_PVOID_QI_V8SI_V8DI_INT)
40095         (VOID_PVOID_QI_V8DI_V8SI_INT, VOID_PVOID_QI_V8DI_V8DI_INT)
40096         (V2DF_V2DF_PCVOID_V4SI_QI_INT, V4DF_V4DF_PCVOID_V4SI_QI_INT)
40097         (V2DF_V2DF_PCVOID_V2DI_QI_INT, V4DF_V4DF_PCVOID_V4DI_QI_INT
40098         (V4SF_V4SF_PCVOID_V4SI_QI_INT, V8SF_V8SF_PCVOID_V8SI_QI_INT)
40099         (V4SF_V4SF_PCVOID_V2DI_QI_INT, V4SF_V4SF_PCVOID_V4DI_QI_INT)
40100         (V2DI_V2DI_PCVOID_V4SI_QI_INT, V4DI_V4DI_PCVOID_V4SI_QI_INT)
40101         (V2DI_V2DI_PCVOID_V2DI_QI_INT, V4DI_V4DI_PCVOID_V4DI_QI_INT)
40102         (V4SI_V4SI_PCVOID_V4SI_QI_INT, V8SI_V8SI_PCVOID_V8SI_QI_INT)
40103         (V4SI_V4SI_PCVOID_V2DI_QI_INT, V4SI_V4SI_PCVOID_V4DI_QI_INT)
40104         (VOID_PVOID_QI_V8SI_V8SF_INT, VOID_PVOID_QI_V4SI_V4SF_INT)
40105         (VOID_PVOID_QI_V4SI_V4DF_INT, VOID_PVOID_QI_V4SI_V2DF_INT)
40106         (VOID_PVOID_QI_V4DI_V4SF_INT, VOID_PVOID_QI_V2DI_V4SF_INT)
40107         (VOID_PVOID_QI_V4DI_V4DF_INT, VOID_PVOID_QI_V2DI_V2DF_INT)
40108         (VOID_PVOID_QI_V8SI_V8SI_INT, VOID_PVOID_QI_V4SI_V4SI_INT)
40109         (VOID_PVOID_QI_V4SI_V4DI_INT, VOID_PVOID_QI_V4SI_V2DI_INT)
40110         (VOID_PVOID_QI_V4DI_V4SI_INT, VOID_PVOID_QI_V2DI_V4SI_INT)
40111         (VOID_PVOID_QI_V4DI_V4DI_INT, VOID_PVOID_QI_V2DI_V2DI_INT)
40112         (VOID_QI_V8SI_PCVOID_INT_INT, VOID_HI_V16SI_PCVOID_INT_INT)
40113         (VOID_QI_V8DI_PCVOID_INT_INT): Add.
40114         * config/i386/i386.c (ix86_init_mmx_sse_builtins): Adjust builtin
40115         definitions accordingly.
40116
40117 2017-01-17  Kito Cheng  <kito.cheng@gmail.com>
40118             Kuan-Lin Chen  <kuanlinchentw@gmail.com>
40119
40120         PR target/79079
40121         * internal-fn.c (expand_mul_overflow): Use convert_modes instead of
40122         gen_lowpart.
40123
40124 2017-01-17  Vladimir Makarov  <vmakarov@redhat.com>
40125
40126         PR target/79058
40127         * ira-conflicts.c (ira_build_conflicts): Update total conflict
40128         hard regs for inner regno.
40129
40130 2017-01-17  Martin Liska  <mliska@suse.cz>
40131
40132         PR ipa/71207
40133         * ipa-polymorphic-call.c (contains_type_p): Fix wrong
40134         assumption and add comment.
40135
40136 2017-01-17  Nathan Sidwell  <nathan@acm.org>
40137
40138         * ipa-visibility.c (localize_node): New function, broken out of ...
40139         (function_and_variable_visibility): ... here. Call it.
40140
40141 2017-01-17  Jan Hubicka  <hubicka@ucw.cz>
40142
40143         PR middle-end/77445
40144         * tree-ssa-threadupdate.c (remove_ctrl_stmt_and_useless_edges):
40145         correctly set frequency of oudgoing edge.
40146         (duplicate_thread_path): Fix profile updating.
40147
40148 2017-01-17  Jakub Jelinek  <jakub@redhat.com>
40149
40150         PR other/79046
40151         * configure.ac: Add GCC_BASE_VER.
40152         * Makefile.in (version): Use @get_gcc_base_ver@ instead of cat to get
40153         version from BASE-VER file.
40154         (CFLAGS-gcc.o): Add -DBASEVER=$(BASEVER_s).
40155         (gcc.o): Depend on $(BASEVER).
40156         * common.opt (dumpfullversion): New option.
40157         * gcc.c (driver_handle_option): Handle OPT_dumpfullversion.
40158         * doc/invoke.texi: Document -dumpfullversion.
40159         * doc/install.texi: Document --with-gcc-major-version-only.
40160         * configure: Regenerated.
40161
40162 2017-01-17  Richard Biener  <rguenther@suse.de>
40163
40164         PR tree-optimization/71433
40165         * tree-vrp.c (register_new_assert_for): Merge same asserts
40166         on all incoming edges.
40167         (process_assert_insertions_for): Handle insertions at the
40168         beginning of BBs.
40169
40170 2017-01-17  Gerald Pfeifer  <gerald@pfeifer.com>
40171
40172         * config/i386/cygwin.h (LIBGCJ_SONAME): Remove.
40173         * config/i386/mingw32.h (LIBGCJ_SONAME): Remove.
40174
40175 2017-01-17  Kaz Kojima  <kkojima@gcc.gnu.org>
40176
40177         PR target/78633
40178         * config/sh/sh.md (cmpeqsi_t+1): Call copy_rtx to avoid invalid
40179         RTL sharing.
40180
40181 2017-01-17  Alan Modra  <amodra@gmail.com>
40182
40183         PR target/79066
40184         * config/rs6000/rs6000.md (elf_high, elf_low): Disable when pic.
40185         * config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Don't allow
40186         symbolic stack limit when pic.
40187
40188 2017-01-16  Martin Sebor  <msebor@redhat.com>
40189
40190         PR tree-optimization/78608
40191         * gimple-ssa-sprintf.c (tree_digits): Avoid negating TYPE_MIN.
40192
40193 2017-01-16  Jeff Law  <law@redhat.com>
40194
40195         Revert:
40196         2016-12-02  Tadek Kijkowski  <tkijkowski@gmail.com>
40197         * Makefile.in (PREPROCESSOR_DEFINES): Add a level of indirection
40198         for several include directories that may be relative to sysroot.
40199         * config/i386/x-mingw32 (gplus_includedir): Define.
40200         (gplus_tool_includedir, gplus_backward_include_dir): Likewise.
40201         (native_system_includedir): Likewise.
40202         * config/i386/mingw32.h (STANDARD_STARTFILE_PREFIX_1): Do not
40203         override if TARGET_SYSTEM_ROOT is defined.
40204         (NATIVE_SYSTEM_HEADER_DIR): Likewise.
40205
40206         PR tree-optimization/79090
40207         PR tree-optimization/33562
40208         PR tree-optimization/61912
40209         PR tree-optimization/77485
40210         * tree-ssa-dse.c (compute_trims): Accept STMT argument.  Dump STMT
40211         and computed trims into the dump file.
40212
40213 2017-01-17  Uros Bizjak  <ubizjak@gmail.com>
40214
40215         * config/i386/i386.h (LIMIT_RELOAD_CLASS): Remove.
40216
40217 2017-01-16  Jakub Jelinek  <jakub@redhat.com>
40218
40219         PR c/79089
40220         * gimplify.c (gimplify_init_constructor): If want_value and
40221         object == lhs, unshare lhs to avoid invalid tree sharing.  Formatting
40222         fix.
40223
40224         PR target/79080
40225         * loop-doloop.c (doloop_modify): Call unshare_all_rtl_in_chain on
40226         sequence.  Formatting fixes.
40227         (doloop_optimize): Formatting fixes.
40228
40229         PR driver/49726
40230         * gcc.c (debug_level_greater_than_spec_func): New function.
40231         (static_spec_functions): Add debug-level-gt spec function.
40232         (ASM_DEBUG_SPEC, cpp_options): Use %:debug-level-gt(0) instead of
40233         !g0.
40234         * config/darwin.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
40235         * config/darwin9.h (DSYMUTIL_SPEC, ASM_DEBUG_SPEC): Likewise.
40236         * common.opt (g, gcoff, gdwarf, gdwarf-, ggdb, gno-pubnames,
40237         gpubnames, ggnu-pubnames, gno-record-gcc-switches,
40238         grecord-gcc-switches, gno-strict-dwarf, gstrict-dwarf, gstabs,
40239         gstabs+, gtoggle, gvms, gxcoff, gxcoff+): Add Driver flag.
40240
40241 2017-01-16  Uros Bizjak  <ubizjak@gmail.com>
40242
40243         * config/i386/i386.h (HARD_REGNO_CALLER_SAVE_MODE): Apply HImode and
40244         QImode fixups to general and mask registers only.
40245
40246 2017-01-16  Carl Love  <cel@us.ibm.com>
40247
40248         * config/rs6000/rs6000-c (altivec_overloaded_builtins): Add support
40249         for built-in functions
40250         vector signed char vec_nabs (vector signed char)
40251         vector signed short vec_nabs (vector signed short)
40252         vector signed int vec_nabs (vector signed int)
40253         vector signed long long vec_nabs (vector signed long long)
40254         vector float vec_nabs (vector float)
40255         vector double vec_nabs (vector double)
40256         * config/rs6000/rs6000-builtin.def: Add definitions for NABS functions
40257         and NABS overload.
40258         * config/rs6000/altivec.md: New define_expand nabs<mode>2 types
40259         * config/rs6000/altivec.h: New define for vec_nabs built-in function.
40260         * doc/extend.texi: Update the documentation file for the new built-in
40261         functions.
40262
40263 2017-01-16  Martin Sebor  <msebor@redhat.com>
40264
40265         * gimple-ssa-sprintf.c (format_directive): Correct a typo in a warning
40266         message.
40267
40268 2017-01-16  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
40269
40270         * config/rs6000/rs6000.c (rtx_is_swappable_p): Change
40271         UNSPEC_VSX__XXSPLTD to require special splat handling.
40272
40273 2017-01-16  David Malcolm  <dmalcolm@redhat.com>
40274
40275         PR bootstrap/78616
40276         * system.h: Poison strndup.
40277
40278 2017-01-16  Alan Modra  <amodra@gmail.com>
40279
40280         PR target/79098
40281         * config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Don't
40282         use a switch.
40283
40284 2017-01-16  Georg-Johann Lay  <avr@gjlay.de>
40285
40286         * config/avr/avr.h (BRANCH_COST) [reload_completed]: Increase by 4.
40287
40288 2017-01-15  Uros Bizjak  <ubizjak@gmail.com>
40289
40290         * config/i386/i386.c (ix86_legitimate_combined_insn): Do not
40291         call recog here.  Assert that INSN_CODE (insn) is non-negative.
40292
40293 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
40294
40295         PR target/72749
40296         * cfgrtl.c (rtl_split_edge): Also patch jump insns that jump to the
40297         fallthrough.
40298         * haifa-sched.c (dump_insn_stream): Don't crash if there is a label
40299         in the currently scheduled RTL fragment.
40300
40301 2017-01-15  Segher Boessenkool  <segher@kernel.crashing.org>
40302
40303         PR rtl-optimization/78751
40304         * ifcvt.c (find_cond_trap): If we generated a non-existing insn,
40305         give up.
40306
40307 2017-01-14  Jeff Law  <law@redhat.com>
40308
40309         PR tree-optimization/79090
40310         * tree-ssa-dse.c (valid_ao_ref_for_dse): Reject zero length and
40311         variable length stores.
40312         (compute_trims): Delete dead assignment to *trim_tail.
40313         (dse_dom_walker::dse_optimize_stmt): Optimize mem* calls with
40314         zero length.
40315
40316 2017-01-14  Bernd Schmidt  <bschmidt@redhat.com>
40317
40318         PR rtl-optimization/78626
40319         PR rtl-optimization/78727
40320         * cprop.c (one_cprop_pass): Collect unconditional traps in the middle
40321         of a block, and split such blocks after everything else is finished.
40322
40323 2017-01-14  Alan Modra  <amodra@gmail.com>
40324
40325         PR target/72749
40326         * combine.c (recog_for_combine_1): Set INSN_CODE before calling
40327         target legitimate_combined_insn.
40328         * config/rs6000/rs6000.c (TARGET_LEGITIMATE_COMBINED_INSN): Define.
40329         (rs6000_legitimate_combined_insn): New function.
40330         * config/rs6000/rs6000.md (UNSPEC_DOLOOP): Delete, and remove
40331         all uses.
40332         (ctr<mode>_internal3): Rename from *ctr<mode>_internal5.
40333         (ctr<mode>_internal4): Rename from *ctr<mode>_internal6.
40334         (ctr<mode>_internal1, ctr<mode>_internal2): Remove '*' from name.
40335
40336 2017-01-14  Gerald Pfeifer  <gerald@pfeifer.com>
40337
40338         * doc/frontends.texi (G++ and GCC): Remove references to Java.
40339
40340 2017-01-13  Jeff Law  <law@redhat.com>
40341
40342         PR tree-optimization/33562
40343         PR tree-optimization/61912
40344         PR tree-optimization/77485
40345         * tree-ssa-dse.c (delete_dead_call): Accept gsi rather than
40346         a statement.
40347         (delete_dead_assignment): Likewise.
40348         (dse_dom_walker::dse_optimize_stmt): Pass in the gsi rather than
40349         statement to delete_dead_call and delete_dead_assignment.
40350
40351 2017-01-13  David Malcolm  <dmalcolm@redhat.com>
40352
40353         PR c/78304
40354         * substring-locations.c (format_warning_va): Strengthen case 1 so
40355         that both endpoints of the substring must be within the format
40356         range for just the substring to be printed.
40357
40358 2017-01-13  Uros Bizjak  <ubizjak@gmail.com>
40359
40360         * config/i386/i386.opt (msgx): Use ix86_isa_flags2 variable.
40361         * config/i386/i386.c (ix86_target_string): Add missing options
40362         to isa_opts and reorder options by implied ISAs.  Rename isa_opts2 to
40363         isa2_opts, ix86_flag_opts to flag2_opts, ix86_target_other to
40364         flags_other and ix86_target_other to flags2_other.  Display unknown
40365         isa2 options.
40366         (ix86_valid_target_attribute_inner_p): Add missing options and
40367         reorder options by implied ISAs, as in ix86_target_string.
40368
40369 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
40370
40371         * hash-table.h (hash_table::too_empty_p): New function.
40372         (hash_table::expand): Use it.
40373         (hash_table::traverse): Likewise.
40374         (hash_table::empty_slot): Use sizeof (value_type) instead of
40375         sizeof (PTR) to convert bytes to elements.  Shrink the table
40376         if the current size is excessive for the current number of
40377         elements.
40378
40379 2017-01-13  Richard Sandiford  <richard.sandiford@arm.com>
40380
40381         * ira-costs.c (record_reg_classes): Break from the inner loop
40382         early once alt_fail is known to be true.  Update outer loop
40383         handling accordingly.
40384
40385 2017-01-13  Jeff Law  <law@redhat.com>
40386
40387         * tree-ssa-dse.c (decrement_count): New function.
40388         (increment_start_addr, maybe_trim_memstar_call): Likewise.
40389         (dse_dom_walker::optimize_stmt): Call maybe_trim_memstar_call directly
40390         when we know the partially dead statement is a mem* function.
40391
40392         PR tree-optimization/61912
40393         PR tree-optimization/77485
40394         * tree-ssa-dse.c: Include expr.h.
40395         (maybe_trim_constructor_store): New function.
40396         (maybe_trim_partially_dead_store): Call maybe_trim_constructor_store.
40397
40398         PR tree-optimization/33562
40399         PR tree-optimization/61912
40400         PR tree-optimization/77485
40401         * doc/invoke.texi: Document new dse-max-object-size param.
40402         * params.def (PARM_DSE_MAX_OBJECT_SIZE): New PARAM.
40403         * tree-ssa-dse.c: Include params.h.
40404         (dse_store_status): New enum.
40405         (initialize_ao_ref_for_dse): New, partially extracted from
40406         dse_optimize_stmt.
40407         (valid_ao_ref_for_dse, normalize_ref): New.
40408         (setup_live_bytes_from_ref, compute_trims): Likewise.
40409         (clear_bytes_written_by, maybe_trim_complex_store): Likewise.
40410         (maybe_trim_partially_dead_store): Likewise.
40411         (maybe_trim_complex_store): Likewise.
40412         (dse_classify_store): Renamed from dse_possibly_dead_store_p.
40413         Track what bytes live from the original store.  Return tri-state
40414         for dead, partially dead or live.
40415         (dse_dom_walker): Add constructor, destructor and new private members.
40416         (delete_dead_call, delete_dead_assignment): New extracted from
40417         dse_optimize_stmt.
40418         (dse_optimize_stmt): Make a member of dse_dom_walker.
40419         Use initialize_ao_ref_for_dse.
40420
40421         PR tree-optimization/33562
40422         PR tree-optimization/61912
40423         PR tree-optimization/77485
40424         * sbitmap.h (bitmap_count_bits): Prototype.
40425         (bitmap_clear_range, bitmap_set_range): Likewise.
40426         * sbitmap.c (bitmap_clear_range): New function.
40427         (bitmap_set_range, sbitmap_popcount, bitmap_count_bits): Likewise.
40428
40429 2017-01-13  Martin Liska  <mliska@suse.cz>
40430
40431         PR ipa/79043
40432         * function.c (set_cfun): Add new argument force.
40433         * function.h (set_cfun): Likewise.
40434         * ipa-inline-transform.c (inline_call): Use the function when
40435         strict alising from is dropped for function we inline to.
40436
40437 2017-01-13  Richard Biener  <rguenther@suse.de>
40438
40439         * tree-pretty-print.c (dump_generic_node): Fix inverted condition
40440         for dumping GIMPLE INTEGER_CSTs.
40441
40442 2017-01-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
40443
40444         * config/sol2.h (TARGET_OS_CPP_BUILTINS): Define __STDC_VERSION__
40445         to 201112L since C++17.
40446
40447 2017-01-13  Maxim Ostapenko  <m.ostapenko@samsung.com>
40448
40449         PR sanitizer/78887
40450         * asan.c (asan_needs_odr_indicator_p): Don't emit ODR indicators
40451         if -fsanitize=kernel-address is present.
40452
40453 2017-01-13  Richard Biener  <rguenther@suse.de>
40454
40455         * tree-pretty-print.c (dump_generic_node): Dump INTEGER_CSTs
40456         as _Literal ( type ) number in case usual suffixes do not
40457         preserve all information.
40458
40459 2017-01-13  Richard Biener  <rguenther@suse.de>
40460
40461         PR tree-optimization/77283
40462         * gimple-ssa-split-paths.c: Include gimple-ssa.h, tree-phinodes.h
40463         and ssa-iterators.h.
40464         (is_feasible_trace): Implement a cost model based on joiner
40465         PHI node uses.
40466
40467 2017-01-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
40468
40469         PR target/79004
40470         * config/rs6000/rs6000.md (FP_ISA3): Do not optimize converting
40471         char or short to __float128/_Float128 directly.
40472
40473 2017-01-12  Martin Sebor  <msebor@redhat.com>
40474
40475         to -Wformat-overflow.
40476         * gimple-ssa-sprintf.c (pass_sprintf_length::gate): Adjust.
40477         (min_bytes_remaining): Same.
40478         (get_string_length): Same.
40479         (format_string): Same.
40480         (format_directive): Same.
40481         (add_bytes): Same.
40482         (pass_sprintf_length::handle_gimple_call): Same.
40483
40484 2017-01-12  Jakub Jelinek  <jakub@redhat.com>
40485
40486         * gimple-ssa-sprintf.c (try_substitute_return_value): Remove
40487         info.nowrite calls with no lhs that can't throw.  Return bool
40488         whether gsi_remove has been called or not.
40489         (pass_sprintf_length::handle_gimple_call): Return bool whether
40490         try_substitute_return_value called gsi_remove.  Formatting fix.
40491         (pass_sprintf_length::execute): Don't use gsi_remove if
40492         handle_gimple_call returned true.
40493
40494         PR bootstrap/79069
40495         * cfgrtl.c (rtl_tidy_fallthru_edge): For any_uncondjump_p that can't
40496         be removed due to side-effects, don't remove following barrier nor
40497         turn the successor edge into fallthru edge.
40498
40499 2017-01-12  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
40500
40501         PR target/79044
40502         * config/rs6000/rs6000.c (insn_is_swappable_p): Mark
40503         element-reversing loads and stores as not swappable.
40504
40505 2017-01-12  Nathan Sidwell  <nathan@acm.org>
40506             Nicolai Stange  <nicstange@gmail.com>
40507
40508         * combine.c (try_combine): Don't ignore result of overlap checking
40509         loop.  Combine overlap & asm check into single loop.
40510
40511 2017-01-12  Richard Biener  <rguenther@suse.de>
40512
40513         * tree-pretty-print.c (dump_generic_node): Provide -gimple
40514         variant for MEM_REF.  Sanitize INTEGER_CST for -gimple.
40515
40516 2017-01-12  Richard Biener  <rguenther@suse.de>
40517
40518         * tree.c (initialize_tree_contains_struct): Make TS_OPTIMIZATION
40519         and TS_TARGET_OPTION directly derive from TS_BASE.
40520         * tree-core.h (tree_optimization_option): Derive from tree_base.
40521         (tree_target_option): Likewise.
40522
40523 2017-01-11  Uros Bizjak  <ubizjak@gmail.com>
40524
40525         * config/i386/i386.c (memory_address_length): Increase len
40526         only when rip_relative_addr_p returns false.
40527
40528 2017-01-11  Julia Koval  <julia.koval@intel.com>
40529
40530         * common/config/i386/i386-common.c (OPTION_MASK_ISA_SGX_UNSET): New.
40531         (OPTION_MASK_ISA_SGX_SET): New.
40532         (ix86_handle_option): Handle OPT_msgx.
40533         * config.gcc: Added sgxintrin.h.
40534         * config/i386/driver-i386.c (host_detect_local_cpu): Detect sgx.
40535         * config/i386/i386-c.c (ix86_target_macros_internal): Define __SGX__.
40536         * config/i386/i386.c (ix86_target_string): Add -msgx.
40537         (PTA_SGX): New.
40538         (ix86_option_override_internal): Handle new options.
40539         (ix86_valid_target_attribute_inner_p): Add sgx.
40540         * config/i386/i386.h (TARGET_SGX, TARGET_SGX_P): New.
40541         * config/i386/i386.opt: Add msgx.
40542         * config/i386/sgxintrin.h: New file.
40543         * config/i386/x86intrin.h: Add sgxintrin.h.
40544
40545 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
40546
40547         PR c++/71537
40548         * fold-const.c (maybe_nonzero_address): Return 1 for function
40549         local objects.
40550         (tree_single_nonzero_warnv_p): Don't handle function local objects
40551         here.
40552
40553         PR c++/72813
40554         * gcc.c (default_compilers): Don't add -o %g.s for -S -save-temps
40555         of c-header.
40556
40557 2017-01-11  David Malcolm  <dmalcolm@redhat.com>
40558
40559         PR driver/78877
40560         * opts.c: Include "spellcheck.h"
40561         (struct string_fragment): New struct.
40562         (struct edit_distance_traits<const string_fragment &>): New
40563         struct.
40564         (get_closest_sanitizer_option): New function.
40565         (parse_sanitizer_options): Offer suggestions for unrecognized arguments.
40566
40567 2017-01-11  Jakub Jelinek  <jakub@redhat.com>
40568
40569         * dwarf2out.c (DWARF_COMPILE_UNIT_HEADER_SIZE): For DWARF5 decrease
40570         by 12.
40571         (DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): Always
40572         DWARF_COMPILE_UNIT_HEADER_SIZE plus 12.
40573         (DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE): Define.
40574         (calc_base_type_die_sizes): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE
40575         for initial die_offset if dwarf_split_debug_info.
40576         (output_comp_unit): Use DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE for
40577         initial next_die_offset if dwo_id is non-NULL.  Don't emit padding
40578         fields.
40579         (output_skeleton_debug_sections): Formatting fix.  Use
40580         DWARF_COMPILE_UNIT_SKELETON_HEADER_SIZE instead of
40581         DWARF_COMPILE_UNIT_HEADER_SIZE.  Don't emit padding.
40582
40583 2017-01-11  Wilco Dijkstra  <wdijkstr@arm.com>
40584
40585         * config/arm/cortex-a53.md: Add bypasses for
40586         cortex_a53_r2f_cvt.
40587         (cortex_a53_r2f): Only use for transfers.
40588         (cortex_a53_f2r): Likewise.
40589         (cortex_a53_r2f_cvt): Add reservation for conversions.
40590         (cortex_a53_f2r_cvt): Likewise.
40591
40592 2017-01-11  Tamar Christina  <tamar.christina@arm.com>
40593
40594         * config/arm/arm_neon.h: Add __artificial__ and gnu_inline
40595         to all inlined functions, change static to extern.
40596
40597 2017-01-11  Christophe Lyon  <christophe.lyon@linaro.org>
40598
40599         PR target/78253
40600         * config/arm/arm.c (legitimize_pic_address): Handle reference to
40601         weak symbol.
40602         (arm_assemble_integer): Likewise.
40603
40604 2017-01-11  Richard Earnshaw  <rearnsha@arm.com>
40605
40606         * config.gcc: Use new awk script to check CPU, FPU and architecture
40607         parameters for --with-... options.
40608         * config/arm/parsecpu.awk: New file
40609         * config/arm/arm-cpus.in: New file.
40610         * config/arm/arm-opts.h: Include arm-cpu.h instead of processing .def
40611         files.
40612         * config/arm/arm.c: Include arm-cpu-data.h instead of processing .def
40613         files.
40614         * config/arm/t-arm: Update dependency rules.
40615         * common/config/arm/arm-common.c: Include arm-cpu-cdata.h instead
40616         of processing .def files.
40617         * config/arm/genopt.sh: Deleted.
40618         * config/arm/gentune.sh: Deleted.
40619         * config/arm/arm-cores.def: Deleted.
40620         * config/arm/arm-arches.def: Deleted.
40621         * config/arm/arm-fpus.def: Deleted.
40622         * config/arm/arm-tune.md: Regenerated.
40623         * config/arm/arm-tables.opt: Regenerated.
40624         * config/arm/arm-cpu.h: New generated file.
40625         * config/arm/arm-cpu-data.h: New generated file.
40626         * config/arm/arm-cpu-cdata.h: New generated file.
40627
40628 2017-01-11  Maxim Ostapenko  <m.ostapenko@samsung.com>
40629
40630         PR lto/79042
40631         * lto-cgraph.c (lto_output_varpool_node): Pack dynamically_initialized
40632         bit.
40633         (input_varpool_node): Unpack dynamically_initialized bit.
40634
40635 2017-01-11  Eric Botcazou  <ebotcazou@adacore.com>
40636
40637         PR rtl-optimization/79032
40638         * lra-constraints.c (simplify_operand_subreg): In the MEM case, test
40639         the alignment of the adjusted memory reference against that of MODE,
40640         instead of the alignment of the original memory reference.
40641
40642 2017-01-11  Martin Jambor  <mjambor@suse.cz>
40643
40644         * hsa.c (hsa_callable_function_p): Revert addition of DECL_ARTIFICIAL
40645         test.
40646         * ipa-hsa.c (process_hsa_functions): Only duplicate non-artificial
40647         decorated functions.
40648
40649 2017-01-11  Richard Biener  <rguenther@suse.de>
40650
40651         * tree-vrp.c (evrp_dom_walker::before_dom_children): Also
40652         set range/nonnull info for PHI results.  Do not set it on
40653         stmts marked for removal.
40654
40655 2017-01-10  Eric Botcazou  <ebotcazou@adacore.com>
40656
40657         * expr.c (store_field): In the bitfield case, fetch the return value
40658         from the registers before applying a single big-endian adjustment.
40659         Always do a final load for a BLKmode value not larger than a word.
40660
40661 2017-01-10  David Malcolm  <dmalcolm@redhat.com>
40662
40663         PR c++/77949
40664         * input.c (selftest::test_accessing_ordinary_linemaps): Verify
40665         that we correctly handle column numbers greater than
40666         LINE_MAP_MAX_COLUMN_NUMBER.
40667
40668 2017-01-10  Martin Sebor  <msebor@redhat.com>
40669
40670         PR middle-end/78245
40671         * gimple-ssa-sprintf.c (get_destination_size): Call
40672         {init,fini}object_sizes.
40673         * tree-object-size.c (addr_object_size): Adjust.
40674         (pass_through_call): Adjust.
40675         (pass_object_sizes::execute): Adjust.
40676         * tree-object-size.h (fini_object_sizes): Declare.
40677
40678 2017-01-10  Martin Sebor  <msebor@redhat.com>
40679
40680         PR tree-optimization/78775
40681         * builtins.c (get_size_range): Move...
40682         * calls.c: ...to here.
40683         (alloc_max_size): Accept zero argument.
40684         (operand_signed_p): Remove.
40685         (maybe_warn_alloc_args_overflow): Call get_size_range.
40686         * calls.h (get_size_range): Declare.
40687
40688 2017-01-10  Joe Seymour  <joe.s@somniumtech.com>
40689
40690         * config/msp430/driver-msp430.c (msp430_mcu_data): Sync with data
40691         from TI's devices.csv file as of September 2016.
40692         * config/msp430/msp430.c (msp430_mcu_data): Likewise.
40693
40694 2017-01-10  Sandra Loosemore  <sandra@codesourcery.com>
40695
40696         * doc/extend.texi: Tweak formatting to fix overfull hbox warnings.
40697         * doc/invoke.texi: Likewise.
40698         * doc/md.texi: Likewise.
40699         * doc/objc.texi: Likewise.
40700
40701 2017-01-10  Joshua Conner  <joshconner@google.com>
40702
40703         * config/arm/fuchsia-elf.h: New file.
40704         * config/fuchsia.h: New file.
40705         * config.gcc (*-*-fuchsia*): Set native_system_header_dir.
40706         (aarch64*-*-fuchsia*, arm*-*-fuchsia*, x86_64-*-fuchsia*): Add to
40707         targets.
40708         * config.host: (aarch64*-*-fuchsia*, arm*-*-fuchsia*): Add to hosts.
40709
40710 2016-01-10  Richard Biener  <rguenther@suse.de>
40711
40712         PR tree-optimization/79034
40713         * tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds):
40714         Propagate out degenerate PHIs in the joiner.
40715
40716 2017-01-10  Martin Liska  <mliska@suse.cz>
40717
40718         * ipa-icf.c (sort_sem_items_by_decl_uid): New function.
40719         (sort_congruence_classes_by_decl_uid): Likewise.
40720         (sort_congruence_class_groups_by_decl_uid): Likewise.
40721         (sem_item_optimizer::merge_classes): Sort class, groups in these
40722         classes and members in the groups by DECL_UID of declarations.
40723         This would make merge operations stable.
40724
40725 2017-01-10  Martin Liska  <mliska@suse.cz>
40726
40727         * ipa-icf.c (sem_item_optimizer::sem_item_optimizer): Remove
40728         usage of m_classes_vec.
40729         (sem_item_optimizer::~sem_item_optimizer):  Likewise.
40730         (sem_item_optimizer::get_group_by_hash): Likewise.
40731         (sem_item_optimizer::subdivide_classes_by_equality): Likewise.
40732         (sem_item_optimizer::subdivide_classes_by_sensitive_refs): Likewise.
40733         (sem_item_optimizer::verify_classes): Likewise.
40734         (sem_item_optimizer::process_cong_reduction): Likewise.
40735         (sem_item_optimizer::dump_cong_classes): Likewise.
40736         (sem_item_optimizer::merge_classes): Likewise.
40737         * ipa-icf.h (congruence_class_hash): Rename from
40738         congruence_class_group_hash.  Remove declaration of m_classes_vec.
40739
40740 2017-01-10  Andrew Senkevich  <andrew.senkevich@intel.com>
40741
40742         * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET,
40743         OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET): New.
40744         * config.gcc: Add avx512vpopcntdqintrin.h.
40745         * config/i386/avx512vpopcntdqintrin.h: New.
40746         * config/i386/cpuid.h (bit_AVX512VPOPCNTDQ): New.
40747         * config/i386/i386-builtin-types.def: Add new types.
40748         * config/i386/i386-builtin.def (__builtin_ia32_vpopcountd_v16si,
40749         __builtin_ia32_vpopcountd_v16si_mask, __builtin_ia32_vpopcountq_v8di,
40750         __builtin_ia32_vpopcountq_v8di_mask): New.
40751         * config/i386/i386-c.c (ix86_target_macros_internal): Define
40752         __AVX512VPOPCNTDQ__.
40753         * config/i386/i386.c (ix86_target_string): Add -mavx512vpopcntdq.
40754         (PTA_AVX512VPOPCNTDQ): Define.
40755         * config/i386/i386.h (TARGET_AVX512VPOPCNTDQ,
40756         TARGET_AVX512VPOPCNTDQ_P): Define.
40757         * config/i386/i386.opt: Add mavx512vpopcntdq.
40758         * config/i386/immintrin.h: Include avx512vpopcntdqintrin.h.
40759         * config/i386/sse.md (define_insn "vpopcount<mode><mask_name>"): New.
40760
40761 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
40762
40763         PR middle-end/77484
40764         * predict.def (PRED_CALL): Set to 67.
40765
40766 2017-01-09  Eric Botcazou  <ebotcazou@adacore.com>
40767
40768         * expr.c (store_field): In the bitfield case, if the value comes from
40769         a function call and is of an aggregate type returned in registers, do
40770         not modify the field mode; extract the value in all cases if the mode
40771         is BLKmode and the size is not larger than a word.
40772
40773 2017-01-09  Dominique d'Humieres  <dominiq@lps.ens.fr>
40774
40775         PR target/71017
40776         * config/i386/cpuid.h: Fix undefined behavior.
40777
40778 2017-01-04  Jeff Law  <law@redhat.com>
40779
40780         PR tree-optimization/79007
40781         PR tree-optimization/67955
40782         * tree-ssa-alias.c (same_addr_size_stores_p): Only need to be
40783         conservative for pt.null when flag_non_call_exceptions is on.
40784
40785 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
40786
40787         PR translation/79019
40788         PR translation/79020
40789         * params.def (PARAM_INLINE_MIN_SPEEDUP,
40790         PARAM_IPA_CP_SINGLE_CALL_PENALTY,
40791         PARAM_USE_AFTER_SCOPE_DIRECT_EMISSION_THRESHOLD): Fix typos
40792         in descriptions.
40793         * config/avr/avr.opt (maccumulate-args): Likewise.
40794         * config/msp430/msp430.opt (mwarn-mcu): Likewise.
40795         * common.opt (freport-bug): Likewise.
40796         * cif-code.def (CIF_FINAL_ERROR): Likewise.
40797         * doc/invoke.texi (ipa-cp-single-call-penalty): Likewise.
40798         * config/s390/s390.c (s390_invalid_binary_op): Fix spelling in
40799         translatable string.
40800         * config/i386/i386.c (function_value_32): Likewise.
40801         * config/nios2/nios2.c (nios2_valid_target_attribute_rec): Likewise.
40802         * config/msp430/msp430.c (msp430_option_override, msp430_attr):
40803         Likewise.
40804         * config/msp430/driver-msp430.c (msp430_select_hwmult_lib): Likewise.
40805         * common/config/msp430/msp430-common.c (msp430_handle_option):
40806         Likewise.
40807         * symtab.c (symtab_node::verify_base): Likewise.
40808         * opts.c (set_debug_level): Likewise.
40809         * tree.c (verify_type_variant): Likewise.  Fix typo in comment.
40810         * config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin): Add
40811         missing whitespace to translatable strings.
40812         * config/avr/avr.md (bswapsi2): Fix typo in comment.
40813         * config/sh/superh.h: Likewise.
40814         * config/i386/xopintrin.h: Likewise.
40815         * config/i386/znver1.md: Likewise.
40816         * config/rs6000/rs6000.c (struct rs6000_opt_mask): Likewise.
40817         * ipa-inline-analysis.c (compute_inline_parameters): Likewise.
40818         * double-int.h (struct double_int): Likewise.
40819         * double-int.c (div_and_round_double): Likewise.
40820         * wide-int.cc: Likewise.
40821         * tree-ssa.c (non_rewritable_mem_ref_base): Likewise.
40822         * tree-ssa-sccvn.c (vn_reference_lookup_3): Likewise.
40823         * cfgcleanup.c (crossjumps_occured): Renamed to ...
40824         (crossjumps_occurred): ... this.
40825         (try_crossjump_bb, try_head_merge_bb, try_optimize_cfg, cleanup_cfg):
40826         Adjust all uses.
40827
40828         PR tree-optimization/78899
40829         * tree-if-conv.c (version_loop_for_if_conversion): Instead of
40830         returning bool return struct loop *, NULL for failure and the new
40831         loop on success.
40832         (versionable_outer_loop_p): Don't version outer loop if it has
40833         dont_vectorized bit set.
40834         (tree_if_conversion): When versioning outer loop, ensure
40835         tree_if_conversion is performed also on the inner loop of the
40836         non-vectorizable outer loop copy.
40837         * tree-vectorizer.c (set_uid_loop_bbs): Formatting fix.  Fold
40838         LOOP_VECTORIZED in inner loop of the scalar outer loop and
40839         prevent vectorization of it.
40840         (vectorize_loops): For outer + inner LOOP_VECTORIZED, ensure
40841         the outer loop vectorization of the non-scalar version is attempted
40842         before vectorization of the inner loop in scalar version.  If
40843         outer LOOP_VECTORIZED guarded loop is not vectorized, prevent
40844         vectorization of its inner loop.
40845         * tree-vect-loop-manip.c (rename_variables_in_bb): If outer_loop
40846         has 2 inner loops, rename also on edges from bb whose single pred
40847         is outer_loop->header.  Fix typo in function comment.
40848
40849 2017-01-09  Martin Sebor  <msebor@redhat.com>
40850
40851         PR bootstrap/79033
40852         * asan.c (asan_emit_stack_protection): Increase local buffer size
40853         to avoid snprintf truncation warning.
40854
40855 2017-01-09  Andrew Pinski  <apinski@cavium.com>
40856
40857         * config/aarch64/aarch64-cores.def: Add thunderx2t99.  Change vulcan
40858         to reference thunderx2t99 for the tuning structure
40859         * config/aarch64/aarch64-cost-tables.h (vulcan_extra_costs):
40860         Rename to ...
40861         (thunderx2t99_extra_costs): This.
40862         * config/aarch64/aarch64-tune.md: Regenerate.
40863         * config/aarch64/aarch64.c (vulcan_addrcost_table): Rename to ...
40864         (vulcan_addrcost_table): This.
40865         (vulcan_regmove_cost): Rename to ...
40866         (thunderx2t99_regmove_cost): This.
40867         (vulcan_vector_cost): Rename to ...
40868         (thunderx2t99_vector_cost): this.
40869         (vulcan_branch_cost): Rename to ...
40870         (thunderx2t99_branch_cost): This.
40871         (vulcan_tunings): Rename to ...
40872         (thunderx2t99_tunings): This and s/vulcan/thunderx2t99 .
40873         * doc/invoke.texi (AARCH64/mtune): Add thunderx2t99.
40874
40875 2017-01-09  Martin Jambor  <mjambor@suse.cz>
40876
40877         PR ipa/78365
40878         PR ipa/78599
40879         * ipa-prop.h (ipa_jump_func): Swap positions of vr_known and m_vr.
40880         * ipa-cp.c (ipa_vr_operation_and_type_effects): New function.
40881         (propagate_vr_accross_jump_function): Use the above function for all
40882         value range computations for pass-through jump functions and type
40883         converasion from explicit value range values.
40884         (ipcp_propagate_stage): Do not attempt to deduce types of formal
40885         parameters from TYPE_ARG_TYPES.
40886         * ipa-prop.c (ipa_write_jump_function): Remove trailing whitespace.
40887         (ipa_write_node_info): Stream type of the actual argument.
40888         (ipa_read_node_info): Likewise. Also remove trailing whitespace.
40889
40890 2017-01-09  Martin Liska  <mliska@suse.cz>
40891
40892         PR pch/78970
40893         * gcc.c (driver_handle_option): Handle OPT_E and set have_E.
40894         (lookup_compiler): Do not show error message with have_E.
40895
40896 2017-01-09  Jakub Jelinek  <jakub@redhat.com>
40897
40898         PR tree-optimization/78938
40899         * tree-vect-stmts.c (vectorizable_condition): For non-masked COND_EXPR
40900         where comp_vectype is VECTOR_BOOLEAN_TYPE_P, use
40901         BIT_{NOT,XOR,AND,IOR}_EXPR on the comparison operands instead of
40902         {EQ,NE,GE,GT,LE,LT}_EXPR directly inside of VEC_COND_EXPR.  Formatting
40903         fixes.
40904
40905 2017-01-09  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
40906
40907         * tree-ssa-address.c (gen_addr_rtx): Don't handle index if it
40908         is const0_rtx.
40909
40910 2017-01-09  Richard Biener  <rguenther@suse.de>
40911
40912         PR tree-optimization/78997
40913         * tree-vect-slp.c (vect_mask_constant_operand_p): Handle SSA
40914         name condition properly.
40915
40916 2017-01-09  Richard Biener  <rguenther@suse.de>
40917
40918         PR debug/79000
40919         * dwarf2out.c (is_cxx): New overload with context.
40920         (is_naming_typedef_decl): Use it.
40921
40922 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
40923
40924         * invoke.texi (Option Summary): Correct spacing in option lists
40925         and add line breaks to fix over-long lines.
40926
40927 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
40928
40929         PR middle-end/17660
40930
40931         * extend.texi (Common Variable Attributes): Add xref to GCC
40932         Internals manual to explain mode attribute keywords.
40933
40934 2017-01-08  Sandra Loosemore  <sandra@codesourcery.com>
40935
40936         PR other/16519
40937         * doc/invoke.texi (Option Summary): Move -pthread to Linker Options
40938         and Preprocessor Options.
40939         (Options for Linking): Document -pthread here....
40940         (RS/6000 and PowerPC Options): ...not here.
40941         (Solaris 2 Options): ...or here.
40942         * doc/cppopts.texi: Document -pthread.
40943
40944 2017-01-08  Martin Sebor  <msebor@redhat.com>
40945
40946         PR middle-end/77708
40947         * doc/invoke.texi (Warning Options): Document -Wformat-truncation.
40948         * gimple-ssa-sprintf.c (call_info::reval_used, call_info::warnopt):
40949         New member functions.
40950         (format_directive): Used them.
40951         (add_bytes): Same.
40952         (pass_sprintf_length::handle_gimple_call): Same.
40953         * graphite-sese-to-poly.c (tree_int_to_gmp): Increase buffer size
40954         to avoid truncation for any argument.
40955         (extract_affine_mul): Same.
40956         * tree.c (get_file_function_name): Same.
40957
40958 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
40959
40960         PR middle-end/77484
40961         * predict.def (PRED_INDIR_CALL): Set to 86.
40962
40963 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
40964
40965         PR preprocessor/54124
40966         * doc/cppopts.texi: Reformat -d subtable to list the full name
40967         of the options.  Add cross-reference to the docs for the general
40968         compiler -d options.
40969         * doc/invoke.texi (Developer Options): Add cross-reference to the
40970         preprocessor-specific -d option documentation.
40971
40972 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
40973
40974         PR preprocessor/13498
40975         * doc/cpp.texi (Search Path): Rewrite to remove obsolete and
40976         redudant material, and reflect new command-line options.
40977         (System Headers): Likewise.
40978
40979 2017-01-07  Sandra Loosemore  <sandra@codesourcery.com>
40980
40981         * doc/cppdiropts.texi: Merge documentation of -I, -iquote,
40982         -isystem, and -idirafter.  Copy-edit.
40983         * doc/cppopts.texi: Copy-edit.  Remove contradiction about
40984         default for -ftrack-macro-expansion.  Delete obsolete and
40985         badly-formatted implementation details about -fdebug-cpp output.
40986         * doc/cppwarnopts.texi: Copy-edit.
40987
40988 2017-01-07  David Malcolm  <dmalcolm@redhat.com>
40989
40990         PR c++/72803
40991         * input.c (selftest::test_accessing_ordinary_linemaps): Verify
40992         that the transition from a max line width >= 1<<10 to narrower
40993         lines works correctly.
40994
40995 2017-01-07  Alexandre Oliva  <aoliva@redhat.com>
40996
40997         * doc/options.texi (PerFunction): New.
40998         * opt-functions.awk (switch_flags): Map both Optimization and
40999         PerFunction to CL_OPTIMIZATION.
41000         * opth-gen.awk: Test for PerFunction flag along with
41001         Optimization.
41002         * optc-save-gen.awk: Likewise.  Introduce var_opt_hash and set
41003         it only when the latter is present.  Skip those that don't in
41004         the hash function generator.
41005         * common.opt (fvar-tracking): Mark as PerFunction instead of
41006         Optimization.
41007         (fvar-tracking-assignments): Likewise.
41008         (fvar-tracking-assignments-toggle): Likewise.
41009         (fvar-tracking-uninit): Likewise.
41010
41011 2017-01-07  Jakub Jelinek  <jakub@redhat.com>
41012
41013         PR translation/79018
41014         * params.def (PARAM_MAX_STORES_TO_MERGE): Add missing space between
41015         the and store.
41016
41017 2017-01-06  Mikael Pettersson  <mikpelinux@gmail.com>
41018
41019         PR target/57583
41020         * config/m68k/m68k.opt (LONG_JUMP_TABLE_OFFSETS): New option.
41021         * config/m68k/linux.h (ASM_RETURN_CASE_JUMP): Handle
41022         TARGET_LONG_JUMP_TABLE_OFFSETS.
41023         * config/m68k/m68kelf.h (ASM_RETURN_CASE_JUMP): Likewise.
41024         * config/m68k/netbsd-elf.h (ASM_RETURN_CASE_JUMP): Likewise.
41025         * config/m68k/m68k.h (CASE_VECTOR_MODE): Likewise.
41026         (ASM_OUTPUT_ADDR_DIFF_ELF): Likewise.
41027         * config/m68k/m68k.md (tablejump expander): Likewise.
41028         (*tablejump_pcrel_hi): Renamed from unnamed insn, reject
41029         TARGET_LONG_JUMP_TABLE_OFFSETS.
41030         (*tablejump_pcrel_si): New insn, handle TARGET_LONG_JUMP_TABLE_OFFSETS.
41031         * doc/invoke.texi (M68K options): Add -mlong-jump-table-offsets.
41032
41033 2017-01-06  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
41034             David Holsgrove <david.holsgrove@xilinx.com>
41035
41036         * common/config/microblaze/microblaze-common.c
41037         (TARGET_EXCEPT_UNWIND_INFO): Remove.
41038         * config/microblaze/microblaze-protos.h (microblaze_eh_return):
41039         New prototype.
41040         * config/microblaze/microblaze.c (microblaze_must_save_register)
41041         (microblaze_expand_epilogue, microblaze_return_addr): Handle
41042         calls_eh_return.
41043         (microblaze_eh_return): New function.
41044         * config/microblaze/microblaze.h (RETURN_ADDR_OFFSET)
41045         (EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM)
41046         (EH_RETURN_STACKADJ_RTX, ASM_PREFERRED_EH_DATA_FORMAT): New macros.
41047         * config/microblaze/microblaze.md (eh_return): New pattern.
41048
41049 2017-01-06  Jakub Jelinek  <jakub@redhat.com>
41050
41051         * system.h (GCC_DIAGNOSTIC_PUSH_IGNORED, GCC_DIAGNOSTIC_POP,
41052         GCC_DIAGNOSTIC_STRINGIFY): Define.
41053
41054         * read-rtl.c (rtx_reader::read_rtx_code): Avoid -Wsign-compare warning.
41055
41056 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
41057
41058         * config/arm/arm.md (<mcrr>): New.
41059         (<mrrc>): New.
41060         * config/arm/arm.c (arm_arch5te): New.
41061         (arm_option_override): Set arm_arch5te.
41062         (arm_coproc_builtin_available): Add support for mcrr, mcrr2, mrrc
41063         and mrrc2.
41064         * config/arm/arm-builtins.c (MCRR_QUALIFIERS): Define to...
41065         (arm_mcrr_qualifiers): ... this. New.
41066         (MRRC_QUALIFIERS): Define to...
41067         (arm_mrrc_qualifiers): ... this. New.
41068         * config/arm/arm_acle.h (__arm_mcrr, __arm_mcrr2, __arm_mrrc,
41069         __arm_mrrc2): New.
41070         * config/arm/arm_acle_builtins.def (mcrr, mcrr2, mrrc, mrrc2): New.
41071         * config/arm/iterators.md (MCRRI, mcrr, MCRR): New.
41072         (MRRCI, mrrc, MRRC): New.
41073         * config/arm/unspecs.md (VUNSPEC_MCRR, VUNSPEC_MCRR2, VUNSPEC_MRRC,
41074         VUNSPEC_MRRC2): New.
41075
41076 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
41077
41078         * config/arm/arm.md (<mcr>): New.
41079         (<mrc>): New.
41080         * config/arm/arm.c (arm_coproc_builtin_available): Add
41081         support for mcr, mrc, mcr2 and mrc2.
41082         * config/arm/arm-builtins.c (MCR_QUALIFIERS): Define to...
41083         (arm_mcr_qualifiers): ... this. New.
41084         (MRC_QUALIFIERS): Define to ...
41085         (arm_mrc_qualifiers): ... this. New.
41086         (MCR_QUALIFIERS): Define to ...
41087         (arm_mcr_qualifiers): ... this. New.
41088         * config/arm/arm_acle.h (__arm_mcr, __arm_mrc, __arm_mcr2,
41089         __arm_mrc2): New.
41090         * config/arm/arm_acle_builtins.def (mcr, mcr2, mrc, mrc2): New.
41091         * config/arm/iterators.md (MCRI, mcr, MCR, MRCI, mrc, MRC): New.
41092         * config/arm/unspecs.md (VUNSPEC_MCR, VUNSPEC_MCR2, VUNSPEC_MRC,
41093         VUNSPEC_MRC2): New.
41094
41095 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
41096
41097         * config/arm/arm.md (*ldc): New.
41098         (*stc): New.
41099         (<ldc>): New.
41100         (<stc>): New.
41101         * config/arm/arm.c (arm_coproc_builtin_available): Add
41102         support for ldc,ldcl,stc,stcl,ldc2,ldc2l,stc2 and stc2l.
41103         (arm_coproc_ldc_stc_legitimate_address): New.
41104         * config/arm/arm-builtins.c (arm_type_qualifiers): Add
41105         'qualifier_const_pointer'.
41106         (LDC_QUALIFIERS): Define to...
41107         (arm_ldc_qualifiers): ... this. New.
41108         (STC_QUALIFIERS): Define to...
41109         (arm_stc_qualifiers): ... this. New.
41110         * config/arm/arm-protos.h
41111         (arm_coproc_ldc_stc_legitimate_address): New.
41112         * config/arm/arm_acle.h (__arm_ldc, __arm_ldcl, __arm_stc,
41113         __arm_stcl, __arm_ldc2, __arm_ldc2l, __arm_stc2, __arm_stc2l): New.
41114         * config/arm/arm_acle_builtins.def (ldc, ldc2, ldcl, ldc2l, stc,
41115         stc2, stcl, stc2l): New.
41116         * config/arm/constraints.md (Uz): New.
41117         * config/arm/iterators.md (LDCI, STCI, ldc, stc, LDC STC): New.
41118         * config/arm/unspecs.md (VUNSPEC_LDC, VUNSPEC_LDC2, VUNSPEC_LDCL,
41119         VUNSPEC_LDC2L, VUNSPEC_STC, VUNSPEC_STC2, VUNSPEC_STCL,
41120         VUNSPEC_STC2L): New.
41121
41122 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
41123
41124         * config/arm/arm.md (<cdp>): New.
41125         * config/arm/arm.c (neon_const_bounds): Rename this ...
41126         (arm_const_bounds): ... this.
41127         (arm_coproc_builtin_available): New.
41128         * config/arm/arm-builtins.c (SIMD_MAX_BUILTIN_ARGS): Increase.
41129         (arm_type_qualifiers): Add 'qualifier_unsigned_immediate'.
41130         (CDP_QUALIFIERS): Define to...
41131         (arm_cdp_qualifiers): ... this. New.
41132         (void_UP): Define.
41133         (arm_expand_builtin_args): Add case for 6 arguments.
41134         * config/arm/arm-protos.h (neon_const_bounds): Rename this ...
41135         (arm_const_bounds): ... this.
41136         (arm_coproc_builtin_available): New.
41137         * config/arm/arm_acle.h (__arm_cdp): New.
41138         (__arm_cdp2): New.
41139         * config/arm/arm_acle_builtins.def (cdp): New.
41140         (cdp2): New.
41141         * config/arm/iterators.md (CDPI,CDP,cdp): New.
41142         * config/arm/neon.md: Rename all 'neon_const_bounds' to
41143         'arm_const_bounds'.
41144         * config/arm/types.md (coproc): New.
41145         * config/arm/unspecs.md (VUNSPEC_CDP, VUNSPEC_CDP2): New.
41146         * doc/extend.texi (ACLE): Add a mention of Coprocessor intrinsics.
41147         * doc/sourcebuild.texi (arm_coproc1_ok, arm_coproc2_ok,
41148         arm_coproc3_ok, arm_coproc4_ok): Document new effective targets.
41149
41150 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
41151
41152         * config/arm/arm-builtins.c (arm_unsigned_binop_qualifiers): New.
41153         (UBINOP_QUALIFIERS): New.
41154         (si_UP): Define.
41155         (acle_builtin_data): New. Change comment.
41156         (arm_builtins): Remove ARM_BUILTIN_CRC32B, ARM_BUILTIN_CRC32H,
41157         ARM_BUILTIN_CRC32W, ARM_BUILTIN_CRC32CB, ARM_BUILTIN_CRC32CH,
41158         ARM_BUILTIN_CRC32CW. Add ARM_BUILTIN_ACLE_BASE and include
41159         arm_acle_builtins.def.
41160         (ARM_BUILTIN_ACLE_PATTERN_START): Define.
41161         (arm_init_acle_builtins): New.
41162         (CRC32_BUILTIN): Remove.
41163         (bdesc_2arg): Remove entries for crc32b, crc32h, crc32w,
41164         crc32cb, crc32ch and crc32cw.
41165         (arm_init_crc32_builtins): Remove.
41166         (arm_init_builtins): Use arm_init_acle_builtins rather
41167         than arm_init_crc32_builtins.
41168         (arm_expand_acle_builtin): New.
41169         (arm_expand_builtin): Use 'arm_expand_acle_builtin'.
41170         * config/arm/arm_acle_builtins.def: New.
41171
41172 2017-01-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
41173
41174         * config/arm/arm-builtins.c (neon_builtin_datum): Rename to ..
41175         (arm_builtin_datum): ... this.
41176         (arm_init_neon_builtin): Rename to ...
41177         (arm_init_builtin): ... this. Add a new parameters PREFIX
41178         and USE_SIG_IN_NAME.
41179         (arm_init_neon_builtins): Replace 'arm_init_neon_builtin' with
41180         'arm_init_builtin'. Replace type 'neon_builtin_datum' with
41181         'arm_builtin_datum'.
41182         (arm_init_vfp_builtins): Likewise.
41183         (builtin_arg): Rename enum's replacing 'NEON_ARG' with
41184         'ARG_BUILTIN' and add a 'ARG_BUILTIN_NEON_MEMORY.
41185         (arm_expand_neon_args): Rename to ...
41186         (arm_expand_builtin_args): ... this. Rename builtin_arg
41187         enum values and differentiate between ARG_BUILTIN_MEMORY
41188         and ARG_BUILTIN_NEON_MEMORY.
41189         (arm_expand_neon_builtin_1): Rename to ...
41190         (arm_expand_builtin_1): ... this. Rename builtin_arg enum
41191         values, arm_expand_builtin_args and add bool parameter NEON.
41192         (arm_expand_neon_builtin): Use arm_expand_builtin_1.
41193         (arm_expand_vfp_builtin): Likewise.
41194         (NEON_MAX_BUILTIN_ARGS): Remove, it was unused.
41195
41196 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
41197
41198         PR middle-end/77484
41199         * predict.def (PRED_POLYMORPHIC_CALL): Set to 59.
41200         * predict.c (tree_estimate_probability_bb): Reverse direction of
41201         polymorphic call predictor.
41202
41203 2017-01-06  David Malcolm  <dmalcolm@redhat.com>
41204
41205         * passes.c (execute_one_pass): Split out pass-skipping logic into...
41206         (determine_pass_name_match): ...this new function and...
41207         (should_skip_pass_p): ...this new function.
41208
41209 2017-01-06  Nathan Sidwell  <nathan@acm.org>
41210
41211         * ipa-visibility.c (function_and_variable_visibility): Reformat
41212         comments and long lines.  Remove extrneous if.
41213         * symtab.c (symtab_node::make_decl_local): Fix code format.
41214         (symtab_node::set_section_for_node): Fix comment typo.
41215
41216 2017-01-06  Martin Liska  <mliska@suse.cz>
41217
41218         PR bootstrap/79003
41219         * lra-constraints.c: Rename invariant to lra_invariant.
41220         * predict.c (set_even_probabilities): Initialize e to NULL.
41221
41222 2017-01-05  Martin Sebor  <msebor@redhat.com>
41223
41224         PR tree-optimization/78910
41225         * gimple-ssa-sprintf.c (tree_digits): Add an argument.
41226         (format_integer): Correct off-by-one error in the handling
41227         of precision with negative numbers in signed conversions..
41228
41229 2017-01-05  Eric Botcazou  <ebotcazou@adacore.com>
41230
41231         * doc/invoke.texi (C Dialect Options): Adjust -fsso-struct entry.
41232
41233 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
41234
41235         PR tree-optimization/71016
41236         * tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Pass cond_stmt to
41237         factor_out_conditional_conversion.  Formatting fix.
41238         (factor_out_conditional_conversion): Add cond_stmt argument.
41239         If arg1 is INTEGER_CST, punt if new_arg0 is not any operand of
41240         cond_stmt and if arg0_def_stmt is not the only stmt in its bb.
41241         Formatting fix.
41242
41243 2017-01-05  David Malcolm  <dmalcolm@redhat.com>
41244
41245         * Makefile.in (OBJS): Add read-md.o, read-rtl.o,
41246         read-rtl-function.o, and selftest-rtl.o.
41247         * config/aarch64/aarch64.c: Include selftest.h and selftest-rtl.h.
41248         (selftest::aarch64_test_loading_full_dump): New function.
41249         (selftest::aarch64_run_selftests): New function.
41250         (TARGET_RUN_TARGET_SELFTESTS): Wire it up to
41251         selftest::aarch64_run_selftests.
41252         * config/i386/i386.c
41253         (selftest::ix86_test_loading_dump_fragment_1): New function.
41254         (selftest::ix86_test_loading_call_insn): New function.
41255         (selftest::ix86_test_loading_full_dump): New function.
41256         (selftest::ix86_test_loading_unspec): New function.
41257         (selftest::ix86_run_selftests): Call the new functions.
41258         * emit-rtl.c (maybe_set_max_label_num): New function.
41259         * emit-rtl.h (maybe_set_max_label_num): New decl.
41260         * function.c (instantiate_decls): Guard call to
41261         instantiate_decls_1 with if (DECL_INITIAL (fndecl)).
41262         * function-tests.c (selftest::verify_three_block_rtl_cfg): Remove
41263         "static".
41264         * gensupport.c (gen_reader::gen_reader): Pass "false"
41265         for new "compact" param of rtx_reader.
41266         * print-rtl.c (rtx_writer::print_rtx_operand): Print "(nil)"
41267         rather than an empty string for NULL strings.
41268         * read-md.c: Potentially include config.h rather than bconfig.h.
41269         Wrap include of errors.h with #ifdef GENERATOR_FILE.
41270         (have_error): New global, copied from errors.c.
41271         (md_reader::read_name): Rename to...
41272         (md_reader::read_name_1): ...this, adding "out_loc" param,
41273         and converting "missing name or number" to returning false, rather
41274         than failing.
41275         (md_reader::read_name): Reimplement in terms of read_name_1.
41276         (md_reader::read_name_or_nil): New function.
41277         (md_reader::read_string): Handle "(nil)" by returning NULL.
41278         (md_reader::md_reader): Add new param "compact".
41279         (md_reader::read_md_files): Wrap with #ifdef GENERATOR_FILE.
41280         (md_reader::read_file): New method.
41281         * read-md.h (md_reader::md_reader): Add new param "compact".
41282         (md_reader::read_file): New method.
41283         (md_reader::is_compact): New accessor.
41284         (md_reader::read_name): Convert return type from void to file_location.
41285         (md_reader::read_name_or_nil): New decl.
41286         (md_reader::read_name_1): New decl.
41287         (md_reader::m_compact): New field.
41288         (noop_reader::noop_reader): Pass "false" for new "compact" param
41289         of rtx_reader.
41290         (rtx_reader::rtx_reader): Add new "compact" param.
41291         (rtx_reader::read_rtx_operand): Make virtual and convert return
41292         type from void to rtx.
41293         (rtx_reader::read_until): New decl.
41294         (rtx_reader::handle_any_trailing_information): New virtual function.
41295         (rtx_reader::postprocess): New virtual function.
41296         (rtx_reader::finalize_string): New virtual function.
41297         (rtx_reader::m_in_call_function_usage): New field.
41298         (rtx_reader::m_reuse_rtx_by_id): New field.
41299         * read-rtl-function.c: New file.
41300         * selftest-rtl.c (selftest::assert_rtx_ptr_eq_at): New function.
41301         * selftest-rtl.h (ASSERT_RTX_PTR_EQ): New macro.
41302         (selftest::verify_three_block_rtl_cfg): New decl.
41303         * read-rtl-function.h: New file.
41304         * read-rtl.c: Potentially include config.h rather than bconfig.h.
41305         For host, include function.h, memmodel.h, and emit-rtl.h.
41306         (one_time_initialization): New function.
41307         (struct compact_insn_name): New struct.
41308         (compact_insn_names): New array.
41309         (find_code): Handle insn codes in compact dumps.
41310         (apply_subst_iterator): Wrap with #ifdef GENERATOR_FILE.
41311         (bind_subst_iter_and_attr): Likewise.
41312         (add_condition_to_string): Likewise.
41313         (add_condition_to_rtx): Likewise.
41314         (apply_attribute_uses): Likewise.
41315         (add_current_iterators): Likewise.
41316         (apply_iterators): Likewise.
41317         (initialize_iterators): Guard usage of apply_subst_iterator with
41318         #ifdef GENERATOR_FILE.
41319         (read_conditions): Wrap with #ifdef GENERATOR_FILE.
41320         (md_reader::read_mapping): Likewise.
41321         (add_define_attr_for_define_subst): Likewise.
41322         (add_define_subst_attr): Likewise.
41323         (read_subst_mapping): Likewise.
41324         (check_code_iterator): Likewise.
41325         (rtx_reader::read_rtx): Likewise.  Move one-time initialization
41326         logic to...
41327         (one_time_initialization): New function.
41328         (rtx_reader::read_until): New method.
41329         (read_flags): New function.
41330         (parse_reg_note_name): New function.
41331         (rtx_reader::read_rtx_code): Initialize "iterator" to NULL.
41332         Handle reuse_rtx ids.
41333         Wrap iterator lookup within #ifdef GENERATOR_FILE.
41334         Add parsing support for RTL dumps, mirroring the special-cases in
41335         print_rtx, by calling read_flags, reading REG_NOTE names, INSN_UID
41336         values, and calling handle_any_trailing_information.
41337         (rtx_reader::read_rtx_operand): Convert return type from void
41338         to rtx, returning return_rtx.  Handle case 'e'.  Call
41339         finalize_string on XSTR and XTMPL fields.
41340         (rtx_reader::read_nested_rtx):  Handle dumps in which trailing
41341          "(nil)" values were omitted.  Call the postprocess vfunc on the
41342         return_rtx.
41343         (rtx_reader::rtx_reader): Add new "compact" param and pass to base
41344         class ctor.  Initialize m_in_call_function_usage.  Call
41345         one_time_initialization.
41346         * rtl-tests.c (selftest::test_uncond_jump): Call
41347         set_new_first_and_last_insn.
41348         * rtl.h (read_rtx): Wrap decl with #ifdef GENERATOR_FILE.
41349         * selftest-rtl.c: New file.
41350         * selftest-rtl.h (class selftest::rtl_dump_test): New class.
41351         (selftest::get_insn_by_uid): New decl.
41352         * selftest-run-tests.c (selftest::run_tests): Call
41353         read_rtl_function_c_tests.
41354         * selftest.h  (selftest::read_rtl_function_c_tests): New decl.
41355         * tree-dfa.c (ssa_default_def): Return NULL_TREE for rtl function
41356         dumps.
41357
41358 2017-01-05  Uros Bizjak  <ubizjak@gmail.com>
41359
41360         * config/i386/i386.md (*testqi_ext_3): No need to handle memory
41361         operands in a special way.  Assert that pos+len <= mode precision.
41362
41363 2017-01-05  Jakub Jelinek  <jakub@redhat.com>
41364
41365         * common.opt (fvect-cost-model): Remove RejectNegative flag, use
41366         3 argument Alias with unlimited for the negative form.
41367         (fno-vect-cost-model): Removed.
41368
41369 2017-01-05  Martin Liska  <mliska@suse.cz>
41370
41371         * hsa-gen.c (gen_hsa_divmod): New function.
41372         (gen_hsa_insn_for_internal_fn_call): Use the function for IFN_DIVMOD.
41373
41374 2017-01-05  Martin Liska  <mliska@suse.cz>
41375
41376         PR pch/78970
41377         * gcc.c (lookup_compiler): Reject '-' filename for a precompiled
41378         header.
41379
41380 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
41381
41382         * config/s390/s390.c (s390_expand_setmem): Unroll the loop for
41383         small constant length operands.
41384
41385 2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
41386
41387         * config/s390/s390.c (s390_expand_setmem): Avoid overlapping bytes
41388         between loop iterations.
41389
41390 2017-01-05  Martin Liska  <mliska@suse.cz>
41391
41392         PR sanitizer/78815
41393         * gimplify.c (gimplify_decl_expr): Compare to
41394         asan_poisoned_variables instread of checking flags.
41395         (gimplify_target_expr): Likewise.
41396         (gimplify_expr): Likewise.
41397         (gimplify_function_tree): Conditionally initialize
41398         asan_poisoned_variables.
41399
41400 2017-01-04  Jeff Law  <law@redhat.com>
41401
41402         PR tree-optimizatin/78812
41403         * rtl.h (contains_mem_rtx_p): Prototype.
41404         * ifcvt.c (containts_mem_rtx_p): Move from here to...
41405         * rtlanal.c (contains_mem_rtx_p): Here and remove static linkage.
41406         * gcse.c (prune_expressions): Use contains_mem_rtx_p to discover
41407         and prune MEMs that are not at the toplevel of a SET_SRC rtx.  Look
41408         through ZERO_EXTEND and SIGN_EXTEND when trying to avoid pruning MEMs.
41409
41410 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41411
41412         * input.c (assert_char_at_range): Default-initialize actual_range.
41413
41414 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41415
41416         * df-scan.c (df_ref_create_structure): Make regno unsigned,
41417         to match the caller.
41418
41419 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41420
41421         * cfgexpand.c (expand_gimple_basic_block): Disregard debug
41422         insns after final jump in test to emit dummy move.
41423
41424 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41425
41426         * gimple-iterator.h (gsi_one_nondebug_before_end_p): New.
41427         * tree-eh.c (cleanup_empty_eh): Skip more debug stmts.
41428
41429 2017-01-04  Alexandre Oliva  <aoliva@redhat.com>
41430
41431         * multiple_target.c (create_dispatcher_calls): Init e_next.
41432         * tree-ssa-loop-split.c (split_loop): Init border.
41433         * tree-vect-loop.c (vect_determine_vectorization_factor): Init
41434         scalar_type.
41435
41436 2017-01-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
41437
41438         PR target/71977
41439         PR target/70568
41440         PR target/78823
41441         * config/rs6000/predicates.md (sf_subreg_operand): New predicate.
41442         (altivec_register_operand): Do not return true if the operand
41443         contains a SUBREG mixing SImode and SFmode.
41444         (vsx_register_operand): Likewise.
41445         (vsx_reg_sfsubreg_ok): New predicate.
41446         (vfloat_operand): Do not return true if the operand contains a
41447         SUBREG mixing SImode and SFmode.
41448         (vint_operand): Likewise.
41449         (vlogical_operand): Likewise.
41450         (gpc_reg_operand): Likewise.
41451         (int_reg_operand): Likewise.
41452         * config/rs6000/rs6000-protos.h (valid_sf_si_move): Add declaration.
41453         * config/rs6000/rs6000.c (valid_sf_si_move): New function to
41454         determine if a MOVSI or MOVSF operation contains SUBREGs that mix
41455         SImode and SFmode.
41456         (rs6000_emit_move_si_sf_subreg): New helper function.
41457         (rs6000_emit_move): Call rs6000_emit_move_si_sf_subreg to possbily
41458         fixup SUBREGs involving SImode and SFmode.
41459         * config/rs6000/vsx.md (SFBOOL_*): New constants that are operand
41460         numbers for the new peephole2 optimization.
41461         (peephole2 for SFmode unions): New peephole2 to optimize cases in
41462         the GLIBC math library that do AND/IOR/XOR operations on single
41463         precision floating point.
41464         * config/rs6000/rs6000.h (TARGET_NO_SF_SUBREG): New internal
41465         target macros to say whether we need to avoid SUBREGs mixing
41466         SImode and SFmode.
41467         (TARGET_ALLOW_SF_SUBREG): Likewise.
41468         * config/rs6000/rs6000.md (UNSPEC_SF_FROM_SI): New unspecs.
41469         (UNSPEC_SI_FROM_SF): Likewise.
41470         (iorxor): Change spacing.
41471         (and_ior_xor): New iterator for AND, IOR, and XOR.
41472         (movsi_from_sf): New insns for SImode/SFmode SUBREG support.
41473         (movdi_from_sf_zero_ext): Likewise.
41474         (mov<mode>_hardfloat, FMOVE32 iterator): Use register_operand
41475         instead of gpc_reg_operand.  Add SImode/SFmode SUBREG support.
41476         (movsf_from_si): New insn for SImode/SFmode SUBREG support.
41477         (fma<mode>4): Use gpc_reg_operand instead of register_operand.
41478         (fms<mode>4): Likewise.
41479         (fnma<mode>4): Likewise.
41480         (fnms<mode>4): Likewise.
41481         (nfma<mode>4): Likewise.
41482         (nfms<mode>4): Likewise.
41483
41484 2017-01-04  Marek Polacek  <polacek@redhat.com>
41485
41486         PR c++/64767
41487         * doc/invoke.texi: Document -Wpointer-compare.
41488
41489 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
41490
41491         * optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without
41492         RejectNegative.
41493
41494         * dwarf2out.c (output_loc_list): Don't throw away 64K+ location
41495         descriptions for -gdwarf-5 and emit them as uleb128 instead of
41496         2-byte data.
41497
41498 2017-01-04  Kelvin Nilsen  <kelvin@gcc.gnu.org>
41499
41500         PR target/78056
41501         * doc/sourcebuild.texi (PowerPC-specific attributes): Add
41502         documentation of the powerpc_popcntb_ok attribute.
41503         * config/rs6000/rs6000.c (rs6000_option_override_internal): Add
41504         code to issue warning messages if a requested CPU configuration is
41505         not supported by the binary (assembler and loader) toolchain.
41506         (spe_init_builtins): Add two assertions to prevent ICE if attempt is
41507         made to define a built-in function that has been disabled.
41508         (paired_init_builtins): Add assertion to prevent ICE if attempt is
41509         made to define a built-in function that has been disabled.
41510         (altivec_init_builtins): Add comment explaining why definition
41511         of the DST built-in functions is not preceded by an assertion
41512         check.  Add assertions to prevent ICE if attempts are made to
41513         define an altivec predicate or an abs* built-in function that has
41514         been disabled.
41515         (htm_init_builtins): Add comment explaining why definition of the
41516         htm built-in functions is not preceded by an assertion check.
41517
41518 2017-01-04  Jeff Law  <law@redhat.com>
41519
41520         PR tree-optimizatin/67955
41521         * tree-ssa-alias.c (same_addr_size_stores_p): Check offsets first.
41522         Allow any SSA_VAR_P as the base objects.  Use integer_zerop.  Verify
41523         the points-to solution does not include pt_null.  Use DECL_PT_UID
41524         unconditionally.
41525
41526 2017-01-04  Uros Bizjak  <ubizjak@gmail.com>
41527
41528         * config/i386/i386.md (HI/SImode test with imm to QImode splitters):
41529         Use gen_int_mode instead of gen_lopwart for const_int operands.
41530
41531 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
41532
41533         PR tree-optimization/71563
41534         * match.pd: Simplify X << Y into X if Y is known to be 0 or
41535         out of range value - has low bits known to be zero.
41536
41537 2017-01-04  Alan Modra  <amodra@gmail.com>
41538
41539         * Makefile.in (aclocal_deps): Update and order as per aclocal.m4.
41540         * configure: Regenerate.
41541         * config.in: Regenerate.
41542
41543 2017-01-04  Jakub Jelinek  <jakub@redhat.com>
41544
41545         PR bootstrap/77569
41546         * input.c (ebcdic_execution_charset::on_error): Don't use strstr for
41547         a substring of the message, but strcmp with the whole message.  Ifdef
41548         ENABLE_NLS, translate the message first using dgettext.
41549
41550 2017-01-03  Jeff Law  <law@redhat.com>
41551
41552         PR tree-optimizatin/78856
41553         * tree-ssa-threadupdate.c: Include tree-vectorizer.h.
41554         (mark_threaded_blocks): Remove code to truncate thread paths that
41555         cross multiple loop headers.  Instead invalidate the cached loop
41556         iteration information and handle case of a thread path walking
41557         into an irreducible region.
41558
41559 2017-01-03  Michael Meissner  <meissner@linux.vnet.ibm.com>
41560
41561         PR target/78900
41562         * config/rs6000/rs6000.c (rs6000_split_signbit): Change some
41563         assertions.  Add support for doing the signbit if the IEEE 128-bit
41564         floating point value is in a GPR.
41565         * config/rs6000/rs6000.md (Fsignbit): Delete.
41566         (signbit<mode>2_dm): Delete using <Fsignbit> and just use "wa".
41567         Update the length attribute if the value is in a GPR.
41568         (signbit<mode>2_dm_<su>ext): Add combiner pattern to eliminate
41569         the sign or zero extension instruction, since the value is always 0/1.
41570         (signbit<mode>2_dm2): Delete using <Fsignbit>.
41571
41572         PR target/78953
41573         * config/rs6000/vsx.md (vsx_extract_<mode>_store_p9): If we are
41574         extracting SImode to a GPR register so that we can generate a
41575         store, limit the vector to be in a traditional Altivec register
41576         for the vextuwrx instruction.
41577
41578 2017-01-03  Ian Lance Taylor  <iant@google.com>
41579
41580         * godump.c (go_format_type): Treat ENUMERAL_TYPE like INTEGER_TYPE.
41581
41582 2017-01-03  Martin Sebor  <msebor@redhat.com>
41583
41584         PR tree-optimization/78696
41585         * gimple-ssa-sprintf.c (format_floating): Correct handling of
41586         precision.  Use MPFR for %f for greater fidelity.  Correct handling
41587         of %g.
41588         (pass_sprintf_length::compute_format_length): Set width and precision
41589         specified by asrerisk to void_node for vararg functions.
41590         (try_substitute_return_value): Adjust dump output.
41591
41592 2017-01-03  David Edelsohn  <dje.gcc@gmail.com>
41593
41594         * doc/invoke.texi (RS6000 options): LRA is enabled by default.
41595
41596 2017-01-03  Eric Botcazou  <ebotcazou@adacore.com>
41597
41598         * doc/invoke.texi (SPARC options): Document -mlra as the default.
41599         * config/sparc/sparc.c (sparc_option_override): Force LRA unless
41600         -mlra/-mno-lra was passed to the compiler.
41601
41602 2017-01-03  James Cowgill  <James.Cowgill@imgtec.com>
41603
41604         PR rtl-optimization/65618
41605         * emit-rtl.c (try_split): Move initialization of "before" and
41606         "after" to just before the call to emit_insn_after_setloc.
41607
41608 2017-01-03  Gerald Pfeifer  <gerald@pfeifer.com>
41609
41610         * doc/md.texi (Standard Names): Remove reference to Java frontend.
41611
41612 2017-01-03  Pierre-Marie de Rodat  <derodat@adacore.com>
41613
41614         * dwarf2out.c (gen_enumeration_type_die): When
41615         -gno-strict-dwarf, add a DW_AT_encoding attribute.
41616
41617 2017-01-03  Jakub Jelinek  <jakub@redhat.com>
41618
41619         PR tree-optimization/78965
41620         * gimple-ssa-sprintf.c (pass_sprintf_length::compute_format_length):
41621         Change first argument from const call_info & to call_info &.  For %n
41622         set info.nowrite to false.
41623
41624         PR middle-end/78901
41625         * gimple-ssa-sprintf.c (try_substitute_return_value): Don't change
41626         possibly throwing calls.
41627
41628         * genmatch.c (dt_node::gen_kids_1): If generic_exprs include SSA_NAME
41629         and exprs_len || fns_len, emit the code for SSA_NAME next to the exprs
41630         and fns handling, rather than in a separate case SSA_NAME.
41631
41632 2017-01-02  Jeff Law  <law@redhat.com>
41633
41634         * config/darwin-driver.c (darwin_driver_init): Const-correctness
41635         fixes for first_period and second_period variables.
41636
41637 2017-01-02  Uros Bizjak  <ubizjak@gmail.com>
41638
41639         PR target/78967
41640         * config/i386/i386.md (UNSPEC_NOREX_MEM): New unspec.
41641         (*insvqi_1): New insn pattern.
41642         (*insvqi_1_mem_rex64): Ditto.
41643         (*insvqi_2): Ditto.
41644         (*insvqi_3): Rename from *insvqi.
41645
41646         (*extzvqi_mem_rex64): Add UNSPEC_NOREX_MEM tag.
41647
41648 2017-01-02  Gerald Pfeifer  <gerald@pfeifer.com>
41649
41650         * doc/cfg.texi (Edges): Remove reference to Java.
41651         (Maintaining the CFG): Ditto.
41652
41653 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
41654
41655         PR middle-end/77674
41656         * symtab.c (symtab_node::binds_to_current_def_p): Fix handling of
41657         transparent aliases.
41658
41659 2017-01-01  Jan Hubicka  <hubicka@ucw.cz>
41660
41661         PR middle-end/77484
41662         * predict.def (PRED_CALL): Update hitrate.
41663         (PRED_INDIR_CALL, PRED_POLYMORPHIC_CALL): New predictors.
41664         * predict.c (tree_estimate_probability_bb): Split CALL predictor
41665         into direct/indirect/polymorphic variants.
41666
41667 2017-01-01  Jakub Jelinek  <jakub@redhat.com>
41668
41669         Update copyright years.
41670
41671         * gcc.c (process_command): Update copyright notice dates.
41672         * gcov-dump.c (print_version): Ditto.
41673         * gcov.c (print_version): Ditto.
41674         * gcov-tool.c (print_version): Ditto.
41675         * gengtype.c (create_file): Ditto.
41676         * doc/cpp.texi: Bump @copying's copyright year.
41677         * doc/cppinternals.texi: Ditto.
41678         * doc/gcc.texi: Ditto.
41679         * doc/gccint.texi: Ditto.
41680         * doc/gcov.texi: Ditto.
41681         * doc/install.texi: Ditto.
41682         * doc/invoke.texi: Ditto.
41683 \f
41684 Copyright (C) 2017 Free Software Foundation, Inc.
41685
41686 Copying and distribution of this file, with or without modification,
41687 are permitted in any medium without royalty provided the copyright
41688 notice and this notice are preserved.